Annotation of OpenXM/src/kan96xx/Doc/httpd-asir.sm1, Revision 1.11
1.11 ! takayama 1: %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.10 2001/04/23 13:34:00 takayama Exp $
1.1 takayama 2: %% http server by sm1
1.2 takayama 3:
4: /httpd.port 1200 def
1.11 ! takayama 5: /httpd.image.name (kobeuniv2.jpg) def
! 6: /httpd.image.type (jpeg) def
1.8 takayama 7:
1.4 takayama 8: /httpd.initialization
9: %% Put initialization codes here.
10: [
1.5 takayama 11: ("Asirweb version 0.80. "+
1.4 takayama 12: " Risa/Asir oxasir version "+rtostr(version());)
13: ] cat
14: def
1.8 takayama 15:
1.1 takayama 16: [(parse) (oxasir.sm1) pushfile] extension
17: (oxasir.started) boundp {
18: } {
1.6 takayama 19: %% Initialize oxasir.
1.1 takayama 20: [(x^2-1) (x)] fctr pop
1.5 takayama 21: oxasir.ccc oxmathcap
22: oxasir.ccc oxsetmathcap
1.1 takayama 23: } ifelse
24:
1.5 takayama 25: /asirweb {
1.7 takayama 26: [/rrr ] pushVariables
27: [
28: %% This procedure to generate port number might fail.
29: [(oxGenPass)] extension . (integer) dc /rrr set
30: rrr << rrr 20000 idiv 20000 mul >> sub /rrr set
31: /httpd.port 1200 rrr add def
32: httpd.port message
33:
1.6 takayama 34: [(sleep 3; netscape -geometry 800x500 http://localhost:)
35: httpd.port toString
36: ( &)] cat system
1.5 takayama 37: httpd ;
1.7 takayama 38: ] pop
39: popVariables
1.5 takayama 40: } def
41:
1.2 takayama 42: /httpd_startserver {
43: [(sm1.socket) (open) [httpd.port (localhost)]] extension
1.5 takayama 44: /httpd.server.fdAndPort set
45: (sm1.socket.open returns ) messagen httpd.server.fdAndPort message
46: [(sm1.socket) (accept) [httpd.server.fdAndPort 0 get]] extension
47: /httpd.server.fd set
1.1 takayama 48: (connected.) message
1.5 takayama 49: (sm1.socket.accept returns ) messagen httpd.server.fd message
1.1 takayama 50: } def
51:
1.2 takayama 52: /httpd_stopserver {
1.5 takayama 53: [(sm1.socket) (close) httpd.server.fd ] extension message
1.1 takayama 54: } def
55:
1.3 takayama 56: /send_packet {
1.1 takayama 57: /arg1 set
1.5 takayama 58: [(sm1.socket) (write) [httpd.server.fd 0 get arg1]] extension message
1.1 takayama 59: } def
60:
61: /sendln {
1.2 takayama 62: /arg1 set
63: [/in-sendln /mmm] pushVariables
64: [ arg1 /mmm set
1.1 takayama 65: mmm tag 5 eq {
66: [mmm 10 (string) dc] cat /mmm set
67: }{
68: 10 (string) dc /mmm set
69: } ifelse
1.10 takayama 70: [(sm1.socket) (select) [httpd.server.fd 0 get 0]] extension {
71: (Warning: your peer closed the connection. Do not send the data.) message
72: } {
73: [(sm1.socket) (write) [httpd.server.fd 0 get mmm]] extension message
74: } ifelse
1.2 takayama 75: ] pop
76: popVariables
1.1 takayama 77: } def
78:
1.11 ! takayama 79: /sendBinaryFile {
! 80: /arg1 set
! 81: [/in-sendln /fname /fd /c /cdata] pushVariables
! 82: [ arg1 /fname set
! 83: [(sendBinaryFile: sending data) ] cat message
! 84: [(fp2openForRead) fname] extension /fd set fd message
! 85: fd 0 lt {
! 86: [(Error: sendBinaryFile: file ) fname ( is not found.)] cat message
! 87: /aaaa goto
! 88: } { } ifelse
! 89: [(fp2pushfile) fname] extension /cdata set
! 90: [(sm1.socket) (select) [httpd.server.fd 0 get 0]] extension {
! 91: (Warning (sendBinaryFile): your peer closed the connection. Do not send the data.)
! 92: message
! 93: exit
! 94: } {
! 95: [(sm1.socket) (writeByte) [httpd.server.fd 0 get cdata]] extension pop
! 96: } ifelse
! 97: /aaaa
! 98: ] pop
! 99: popVariables
! 100: } def
! 101:
1.1 takayama 102: /httpd {
1.4 takayama 103: /httpd.serial 0 def
1.3 takayama 104: /httpd.history [ ] def
1.11 ! takayama 105: /httpd.result.history [ 0 ] def
1.1 takayama 106: {
1.2 takayama 107: httpd_startserver ;
108: httpd_action ;
109: httpd_stopserver ;
1.1 takayama 110: (5 sleep) system
1.3 takayama 111: httpd.serial 1 add /httpd.serial set
1.1 takayama 112: } loop
113: } def
114:
1.2 takayama 115: /httpd_action {
1.5 takayama 116: [/in-httpd /ff /httpd.com /httpd.result /sss
1.6 takayama 117: /sss.engine /sss.web /err
1.3 takayama 118: ] pushVariables
1.2 takayama 119: [
1.1 takayama 120: {
1.5 takayama 121: [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
122: %% wait for ever
123: [(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set
1.1 takayama 124: ff length 0 eq {
125: (connection is closed.) message
126: }
1.4 takayama 127: {
1.1 takayama 128: (------------ start ----------------------) message
129: ff message
130: (-----------------------------------------) message
1.11 ! takayama 131: ff 1 copy askToSendFile /httpd.sendFile set
! 132: httpd.sendFile tag 0 eq {
! 133: ff removeGET webstringToAscii /httpd.com set
! 134: } {
! 135: /httpd.com (NONE) def
! 136: } ifelse
! 137: [(httpd.com=) httpd.com] cat message
! 138: (httpd.sendFile=) messagen httpd.sendFile message
1.1 takayama 139: (------------ end ----------------------) message
140: ( ) message
1.4 takayama 141: httpd.serial 0 eq {
142: /httpd.com httpd.initialization def
143: } { } ifelse
1.11 ! takayama 144: httpd.sendFile tag 0 eq { }
! 145: {
! 146: httpd.sendFile httpd.image.type send-image
! 147: exit %% exit the loop LOOP-A
! 148: } ifelse
1.3 takayama 149: httpd.com metaCommand {
1.8 takayama 150: httpd.textarea.valid {
151: oxasir.ccc
152: [(if (1) {) httpd.com (; };)] cat
153: oxexecutestring ;
154: }{
155: send-page-warning exit
156: } ifelse
1.6 takayama 157: [(oxReq) oxasir.ccc SM_dupErrors ] extension pop
1.5 takayama 158:
1.6 takayama 159: [(oxReq) oxasir.ccc SM_popCMO ] extension pop
1.5 takayama 160: [(oxReq) oxasir.ccc SM_popString ] extension pop
161: [(flush)] extension pop
162: %% Select inputs for interruption.
163: %% Wait by the spin lock.
164: {
165: [(oxMultiSelect) [oxasir.ccc] 1] extension 1 get 0 get
166: /sss.engine set
167: [(sm1.socket) (mselect)
168: [[httpd.server.fd 0 get] 1]
169: ] extension 0 get /sss.web set
170: /sss [sss.engine sss.web] def
171: sss.engine { exit } { } ifelse
172: sss.web { exit } { } ifelse
173: } loop
174: sss message
175:
176: sss 0 get {
1.6 takayama 177: [(oxGet) oxasir.ccc] extension /err set
1.5 takayama 178: [(oxGet) oxasir.ccc] extension /httpd.result set
179: %% oxasir.ccc oxpopstring /httpd.result set
180: } {
181: oxasir.ccc oxreset
182: oxasir.ccc ("computation is interrupted.";) oxexecutestring ;
183: oxasir.ccc oxpopstring
184: /httpd.result set
185: exit
186: } ifelse
1.3 takayama 187: (------------- result -------------) message
188: httpd.result message
189: (----------------------------------) message
190: ( ) message
1.6 takayama 191:
192: err message
193: err [ ] eq {
194: /httpd.history
195: httpd.history
196: [10 (string) dc
197: (/**** ) httpd.serial toString ( ****/)
198: 10 (string) dc
199: httpd.com
1.8 takayama 200: (;) %% add extra ;
1.6 takayama 201: ] cat
202: append
203: def
204: } {
205: oxasir.ccc cleanErrors
206: [httpd.result 10 (string) dc err toString] cat
207: /httpd.result set
208: } ifelse
209:
1.4 takayama 210: [httpd.serial 0 eq { } {
211: (<title> asirweb </title> )
212: (<font color="blue"> Input-) httpd.serial toString
213: (: </font> )
1.9 takayama 214: httpd.com preformatHTML (<br>)
1.4 takayama 215: } ifelse
1.3 takayama 216: (<font color="green"> Output-) httpd.serial toString
217: (: </font> )
1.11 ! takayama 218: (<a href="http://localhost:) httpd.port toString
! 219: (/?msg=httpdAsirMeta+Pretty+) httpd.serial toString
! 220: ("> (in pretty format) </a>)
! 221: %%(<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
1.9 takayama 222: httpd.result preformatHTML
1.11 ! takayama 223: httpd.result.history httpd.result append /httpd.result.history set
1.3 takayama 224: ] cat
1.11 ! takayama 225: send-page-3 exit %% exit the loop LOOP-A
1.5 takayama 226: } { exit } ifelse %% metaCommand
1.1 takayama 227: } ifelse
1.11 ! takayama 228: } loop %% LOOP-A
1.2 takayama 229: ] pop
230: popVariables
1.1 takayama 231: } def
232:
233:
1.3 takayama 234: /send-page-bye {
1.1 takayama 235: (HTTP/0.9 200 OK) sendln
236: %% (Date: Sun, 18 Mar 2001 02:54:50 GMT) sendln
237: %% (Server: sm1/0.1 (Unix)) sendln
238: %% (Last-Modified: Wed, 23 Aug 2000 11:19:27 GMT) sendln
239: %% (ETag: "1f8f-5df-39a3b33f") sendln
240: %% (Accept-Ranges: bytes) sendln
241: %% (Content-Length: 10) sendln
242: (Connection: close) sendln
1.3 takayama 243: % (Content-Type: text/plain) sendln
244: (Content-Type: text/html) sendln
1.1 takayama 245: 0 sendln
1.3 takayama 246: (<html>) sendln
247: (Shutdown the engine. <br>) sendln
248: (See you! <a href="http://www.openxm.org"> asirweb </a>) sendln
249: (</html>) sendln
1.1 takayama 250: 0 sendln
251: [(flush)] extension
252: } def
253:
254: /send-page-2 {
255: (HTTP/0.9 200 OK) sendln
256: %% (Content-Length: 10) sendln
257: (Connection: close) sendln
258: (Content-Type: text/html) sendln
259: 0 sendln
260: (<FORM NAME="myFORM">) sendln
261: (<INPUT TYPE="TEXT" NAME="Num">) sendln
262: (</FORM>) sendln
263: 0 sendln
264: [(flush)] extension
265: } def
266:
267: /send-page-3 {
268: /arg1 set
269: [/in-send-page-3 /result] pushVariables
270: [
271: /result arg1 def
272: (HTTP/0.9 200 OK) sendln
273: (Connection: close) sendln
274: (Content-Type: text/html) sendln
275: 0 sendln
276: %% (<FORM NAME="myFORM" METHOD="POST">) sendln
277: result sendln
278: (<FORM NAME="myFORM">) sendln
279: (<INPUT TYPE=submit VALUE="submit">) sendln
1.8 takayama 280: [(<textarea name=) httpd.textarea.name
281: ( rows=10 cols="80" wrap="soft"></textarea>)] cat sendln
1.1 takayama 282: (</FORM>) sendln
1.3 takayama 283: send-menu-1
1.1 takayama 284: 0 sendln
285: [(flush)] extension
286: ] pop
287: popVariables
288: } def
289:
1.11 ! takayama 290: /send-image {
! 291: /arg2 set
! 292: /arg1 set
! 293: [/in-send-jpeg /fname /imagetype /ff /fsize] pushVariables
! 294: [
! 295: /fname arg1 def % set the jpeg file name.
! 296: /imagetype arg2 def % jpeg or gif
! 297: [(stat) fname] extension 0 get tag 0 eq {
! 298: (Warning (send-image): the file ) messagen fname messagen ( is not found.) message
! 299: /notFound goto
! 300: }{ }ifelse
! 301: [(stat) fname] extension 1 get 0 get toString /fsize set
! 302: (HTTP/1.1 200 OK) dup message sendln
! 303: (Server: httpd_sm1) dup message sendln
! 304: %% (ETag: "2197-bf6c-3b2d6541") sendln ???
! 305: (Accept-Ranges: bytes) dup message sendln
! 306: [(Content-Length: ) fsize] cat dup message sendln
! 307: (Connection: close) dup message sendln
! 308: [(Content-Type: image/) imagetype] cat dup message sendln
! 309: [(flush)] extension
! 310: 0 sendln
! 311: fname sendBinaryFile
! 312: 0 sendln
! 313: [(flush)] extension
! 314: /notFound
! 315: ] pop
! 316: popVariables
! 317: } def
! 318:
1.3 takayama 319: /httpd.asirman
320: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")
321: def
322: /httpd.asirman.index
323: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262")
324: def
1.4 takayama 325: /httpd.asir.intro
326: ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")
327: def
1.3 takayama 328: /send-menu-1 {
329:
1.4 takayama 330: (FILE:) sendln
1.3 takayama 331: [$<a href="http://localhost:$ httpd.port toString
1.4 takayama 332: $/?msg=httpdAsirMeta+quit"> Shutdown the asir server. </a>, $
1.3 takayama 333: ] cat sendln
1.5 takayama 334: %% [$<a href="http://localhost:$ httpd.port toString
335: %% $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $
336: %% ] cat sendln
337: [$<a href="http://localhost:$ httpd.port toString
338: $/?msg=httpdAsirMeta+save"> save. </a>, $
339: ] cat sendln
1.4 takayama 340: ( <spacer type=horizontal size=80> ) sendln
1.3 takayama 341:
1.4 takayama 342: (HELP:) sendln
1.3 takayama 343: [(<font color="red">
1.4 takayama 344: <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln
1.3 takayama 345: [(<font color="purple">
1.4 takayama 346: <a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln
347: [(<font color="blue">
348: <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
1.3 takayama 349: } def
1.1 takayama 350:
1.5 takayama 351: /send-page-save {
352: [/in-send-page-save /i] pushVariables
353: [
354: (HTTP/0.9 200 OK) sendln
355: (Connection: close) sendln
1.8 takayama 356: (Content-Type: text/plain) sendln
1.5 takayama 357: 0 sendln
1.8 takayama 358: (/* Saved the following to sm1out.txt */) sendln
359: (/* Save the following by your browser as a text file. */) sendln
1.5 takayama 360:
361: 0 1 httpd.history length 1 sub {
362: /i set
363: httpd.history i get sendln
364: } for
1.8 takayama 365: ( end$) sendln
1.5 takayama 366: 0 sendln
367: [(flush)] extension
368: [(PrintDollar) 1] system_variable
369: httpd.history output
370: [(PrintDollar) 0] system_variable
371: ] pop
372: popVariables
373: } def
374:
1.8 takayama 375: /send-page-warning {
376: (HTTP/0.9 200 OK) sendln
377: (Connection: close) sendln
378: (Content-Type: text/html) sendln
379: 0 sendln
380: (You cannot execute oxasir without a session key! <br>) sendln
381: 0 sendln
382: [(flush)] extension
383: } def
1.5 takayama 384:
1.1 takayama 385: /stopclient {
386: [(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message
1.6 takayama 387: } def
388:
389:
390: /cleanErrors {
391: /arg1 set
392: [/in-cleanErrors /clientt /spp] pushVariables
393: [
394: /clientt arg1 def
395: clientt oxgetsp (integer) dc /spp set
396: clientt spp oxpops
397: ] pop
398: popVariables
1.1 takayama 399: } def
400:
401:
402: /fromHex {
403: /arg1 set
404: [/in-fromHex /s1 /s2 /c /c2] pushVariables
405: [
406: arg1 0 get /s1 set
407: arg1 1 get /s2 set
408:
409: 48 s1 le s1 57 le and { % 0, ..., 9
410: s1 48 sub /c set
411: }{ } ifelse
412: 65 s1 le s1 70 le and { % A, ..., F
413: s1 65 sub 10 add /c set
414: }{ } ifelse
415: 97 s1 le s1 102 le and { % a, ..., f
416: s1 97 sub 10 add /c set
417: }{ } ifelse
418: c 16 mul /c set
419:
420: 48 s2 le s2 57 le and { % 0, ..., 9
421: s2 48 sub /c2 set
422: }{ } ifelse
423: 65 s2 le s2 70 le and { % A, ..., F
424: s2 65 sub 10 add /c2 set
425: }{ } ifelse
426: 97 s2 le s2 102 le and { % a, ..., f
427: s2 97 sub 10 add /c2 set
428: }{ } ifelse
429: c c2 add /arg1 set
430: ] pop
431: popVariables
432: arg1
433: } def
434:
1.8 takayama 435: /randomName {
436: [/in-randomName /sss /rrr ] pushVariables
437: [
438: %% Seed name
439: /sss [ 97 97 97 97 97 97 97 97 97 97 ] def %% 97 == 'a'
440: %% This procedure to generate port number might fail.
441: sss {
442: [
443: [(oxGenPass)] extension .. /rrr set
444: [(tdiv_qr) rrr (26)..] mpzext 1 get /rrr set
445: ] pop
446: rrr (integer) dc add
447: } map
448: /sss set
449: sss {(string) dc} map cat /arg1 set
450: ] pop
451: popVariables
452: arg1
453: } def
454:
455: (httpd.textarea.name) boundp { }
456: {
457: /httpd.textarea.name randomName def
458: /httpd.textarea.name.aaa
459: [(GET /?) httpd.textarea.name] cat
460: (array) dc
461: def
462: } ifelse
463:
1.11 ! takayama 464: %% Decompose into tokens separated by a space.
! 465: %% (GET /hoge.jpeg ???) ---> [(GET) (/hoge.jpeg) (???)]
! 466: /toTokensBySpace {
! 467: /arg1 set
! 468: [/in-toTokesBySpace /ss /ss2 /i] pushVariables
! 469: [
! 470: /ss arg1 def
! 471: ss 1 copy /ss set
! 472: ss (array) dc /ss2 set
! 473: 0 1 ss2 length 1 sub {
! 474: /i set
! 475: ss2 i get 32 eq { %% equal to space
! 476: ss i (,) put
! 477: } { } ifelse
! 478: } for
! 479: ss message
! 480: [ ss to_records pop] /arg1 set
! 481: ] pop
! 482: popVariables
! 483: arg1
! 484: } def
! 485:
! 486: /askToSendFile {
! 487: /arg1 set
! 488: [/in-askToSendFile /ss /fname] pushVariables
! 489: [
! 490: /ss arg1 def
! 491: /fname null def
! 492: ss toTokensBySpace /ss set
! 493: ss 0 get (GET) eq {
! 494: ss 1 get length 1 gt {
! 495: ss 1 get (array) dc 1 get 63 eq { %% See if /?
! 496: /fname null def
! 497: }{
! 498: /fname ss 1 get def % set the file name.
! 499: fname (array) dc rest /fname set % remove /
! 500: fname { (string) dc } map cat /fname set
! 501: } ifelse
! 502: }{ /fname null def } ifelse
! 503: }{
! 504: /fname null def
! 505: } ifelse
! 506: (::::) messagen ss message fname message
! 507: /arg1 fname def
! 508: ] pop
! 509: popVariables
! 510: arg1
! 511: } def
! 512:
! 513:
1.7 takayama 514: %% remove GET /?msg=
1.1 takayama 515: /removeGET {
516: /arg1 set
1.8 takayama 517: [/in-removeGET /s /s2 /i /j /i0
518: /tname
519: ] pushVariables
1.1 takayama 520: [
521: /s arg1 def
1.8 takayama 522: /httpd.textarea.valid 1 def
1.1 takayama 523: s 1 copy /s2 set
524: s (array) dc /s set
1.7 takayama 525:
1.8 takayama 526: /tname [ ] def
1.7 takayama 527: 0 1 s length 1 sub {
528: /i0 set
529: s i0 get 61 eq { %% 61 is =
530: i0 1 add /i0 set
1.8 takayama 531: tname message
532: httpd.textarea.name.aaa message
533: tname httpd.textarea.name.aaa eq {
534: /httpd.textarea.valid 1 def
535: } {
536: /httpd.textarea.valid 0 def
537: (Warning: got an invalid name for the text field.) message
538: } ifelse
1.7 takayama 539: exit
540: } { } ifelse
1.8 takayama 541: tname s i0 get append /tname set
1.7 takayama 542: } for
543:
1.1 takayama 544: /j 0 def
1.7 takayama 545: i0 1 s length 1 sub {
1.1 takayama 546: /i set
547: s2 j << s i get (string) dc >> put
548: j 1 add /j set
549: } for
550: /arg1 s2 def
551: ] pop
552: arg1
553: } def
554:
555: /webstringToAscii {
556: /arg1 set
557: [/in-webstringToAscii /s /i /j /c /n] pushVariables
558: [
559: /s arg1 def
560: s (array) dc /s set
561: /j 0 def /n s length def
562: /i 0 def
563: {
564: s i get /c set
565: c 32 eq { exit } { } ifelse
566: c 37 eq { % c == %
567: [s i 1 add get s i 2 add get] fromHex /c set
568: s j c put
569: j 1 add /j set
570: i 3 add /i set
571: } {
572: c 43 eq { % c == +
573: s j 32 put
574: j 1 add /j set
575: i 1 add /i set
576: } {
577: c 13 eq { % c == 0xd
578: i 1 add /i set
579: } {
580: s j c put
581: j 1 add /j set
582: i 1 add /i set
583: } ifelse
584: } ifelse
585: } ifelse
586: i n ge { exit } { } ifelse
587: } loop
588: s j carN /s set
589: s { (string) dc } map cat /arg1 set
1.9 takayama 590: ] pop
591: popVariables
592: arg1
593: } def
594:
595: /preformatHTML {
596: /arg1 set
597: [/in-preformatHTML /sss /c] pushVariables
598: [
599: /sss arg1 def
600: sss (array) dc /sss set
601: sss {
602: /c set
603: [
604: c 60 eq {
605: /c (<) def
606: } { } ifelse
607: c 62 eq {
608: /c (>) def
609: } { } ifelse
610: c 38 eq {
611: /c (&) def
612: } { } ifelse
613: ] pop
614: c (string) dc
615: } map cat /sss set
616: [(<pre> ) sss ( </pre> )] cat /arg1 set
1.1 takayama 617: ] pop
618: popVariables
619: arg1
1.3 takayama 620: } def
621:
622: /metaCommand {
623: /arg1 set
1.11 ! takayama 624: [/in-metaCommand /msg /result /msg2 /nn] pushVariables
1.3 takayama 625: [
626: /msg arg1 def
627: /result 1 def
1.11 ! takayama 628: msg 1 copy toTokensBySpace /msg2 set
! 629: msg2 length 3 eq {
! 630: msg2 0 get (httpdAsirMeta) eq
! 631: msg2 1 get (Pretty) eq and
! 632: {
! 633: msg2 2 get . (integer) dc /nn set
! 634:
! 635: %%BUG: This part should be rewritten.
! 636: %% Reformat the "nn"-th result by tex and send it.
! 637: httpd.result.history nn get message
! 638: httpd.image.name httpd.image.type send-image
! 639: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 640:
! 641: /result 0 def
! 642: } { } ifelse
! 643: }{ } ifelse
1.3 takayama 644: msg (httpdAsirMeta quit) eq {
1.8 takayama 645: oxasir.ccc oxshutdown
1.3 takayama 646: send-page-bye
647: quit
1.5 takayama 648: /result 0 def
649: } { } ifelse
650: msg (httpdAsirMeta save) eq {
651: send-page-save
652: /result 0 def
653: } { } ifelse
654: msg (httpdAsirMeta interrupt) eq {
655: oxasir.ccc oxreset
656: (Interrupted! <br>) send-page-3
1.3 takayama 657: /result 0 def
658: } { } ifelse
659: /arg1 result def
660: ] pop
661: popVariables
662: arg1
663: } def
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>