Annotation of OpenXM/src/kan96xx/Doc/httpd-asir.sm1, Revision 1.14
1.14 ! takayama 1: %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.13 2001/08/23 00:49:00 takayama Exp $
1.1 takayama 2: %% http server by sm1
1.2 takayama 3:
1.12 takayama 4: [(parse) (httpd.sm1) pushfile] extension pop
5:
1.2 takayama 6: /httpd.port 1200 def
1.11 takayama 7: /httpd.image.name (kobeuniv2.jpg) def
8: /httpd.image.type (jpeg) def
1.8 takayama 9:
1.4 takayama 10: /httpd.initialization
11: %% Put initialization codes here.
12: [
1.5 takayama 13: ("Asirweb version 0.80. "+
1.4 takayama 14: " Risa/Asir oxasir version "+rtostr(version());)
15: ] cat
16: def
1.8 takayama 17:
1.1 takayama 18: [(parse) (oxasir.sm1) pushfile] extension
19: (oxasir.started) boundp {
20: } {
1.6 takayama 21: %% Initialize oxasir.
1.1 takayama 22: [(x^2-1) (x)] fctr pop
1.5 takayama 23: oxasir.ccc oxmathcap
24: oxasir.ccc oxsetmathcap
1.1 takayama 25: } ifelse
26:
1.12 takayama 27: /webasir { asirweb } def
1.5 takayama 28: /asirweb {
1.7 takayama 29: [/rrr ] pushVariables
30: [
31: %% This procedure to generate port number might fail.
32: [(oxGenPass)] extension . (integer) dc /rrr set
33: rrr << rrr 20000 idiv 20000 mul >> sub /rrr set
34: /httpd.port 1200 rrr add def
35: httpd.port message
36:
1.6 takayama 37: [(sleep 3; netscape -geometry 800x500 http://localhost:)
38: httpd.port toString
39: ( &)] cat system
1.5 takayama 40: httpd ;
1.7 takayama 41: ] pop
42: popVariables
1.5 takayama 43: } def
44:
1.1 takayama 45:
1.2 takayama 46: /httpd_action {
1.5 takayama 47: [/in-httpd /ff /httpd.com /httpd.result /sss
1.6 takayama 48: /sss.engine /sss.web /err
1.13 takayama 49: /oxserver.vname
1.3 takayama 50: ] pushVariables
1.2 takayama 51: [
1.1 takayama 52: {
1.5 takayama 53: [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
54: %% wait for ever
55: [(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set
1.1 takayama 56: ff length 0 eq {
57: (connection is closed.) message
58: }
1.4 takayama 59: {
1.1 takayama 60: (------------ start ----------------------) message
61: ff message
62: (-----------------------------------------) message
1.11 takayama 63: ff 1 copy askToSendFile /httpd.sendFile set
64: httpd.sendFile tag 0 eq {
65: ff removeGET webstringToAscii /httpd.com set
66: } {
67: /httpd.com (NONE) def
68: } ifelse
69: [(httpd.com=) httpd.com] cat message
70: (httpd.sendFile=) messagen httpd.sendFile message
1.1 takayama 71: (------------ end ----------------------) message
72: ( ) message
1.4 takayama 73: httpd.serial 0 eq {
74: /httpd.com httpd.initialization def
75: } { } ifelse
1.11 takayama 76: httpd.sendFile tag 0 eq { }
77: {
78: httpd.sendFile httpd.image.type send-image
79: exit %% exit the loop LOOP-A
80: } ifelse
1.3 takayama 81: httpd.com metaCommand {
1.8 takayama 82: httpd.textarea.valid {
1.13 takayama 83: /oxserver.vname
84: [Oxserver_history_variable httpd.serial toString] cat
85: def
1.8 takayama 86: oxasir.ccc
1.14 ! takayama 87: [(if (1) {) httpd.com (; };)] cat
1.8 takayama 88: oxexecutestring ;
89: }{
90: send-page-warning exit
91: } ifelse
1.6 takayama 92: [(oxReq) oxasir.ccc SM_dupErrors ] extension pop
1.5 takayama 93:
1.6 takayama 94: [(oxReq) oxasir.ccc SM_popCMO ] extension pop
1.14 ! takayama 95:
! 96: [(oxReq) oxasir.ccc SM_setName oxserver.vname] extension pop
! 97: oxasir.ccc [oxserver.vname (;)] cat oxexecutestring
! 98:
1.5 takayama 99: [(oxReq) oxasir.ccc SM_popString ] extension pop
100: [(flush)] extension pop
101: %% Select inputs for interruption.
102: %% Wait by the spin lock.
103: {
104: [(oxMultiSelect) [oxasir.ccc] 1] extension 1 get 0 get
105: /sss.engine set
106: [(sm1.socket) (mselect)
107: [[httpd.server.fd 0 get] 1]
108: ] extension 0 get /sss.web set
109: /sss [sss.engine sss.web] def
110: sss.engine { exit } { } ifelse
111: sss.web { exit } { } ifelse
112: } loop
113: sss message
114:
115: sss 0 get {
1.6 takayama 116: [(oxGet) oxasir.ccc] extension /err set
1.5 takayama 117: [(oxGet) oxasir.ccc] extension /httpd.result set
118: %% oxasir.ccc oxpopstring /httpd.result set
119: } {
120: oxasir.ccc oxreset
121: oxasir.ccc ("computation is interrupted.";) oxexecutestring ;
122: oxasir.ccc oxpopstring
123: /httpd.result set
124: exit
125: } ifelse
1.3 takayama 126: (------------- result -------------) message
127: httpd.result message
128: (----------------------------------) message
129: ( ) message
1.6 takayama 130:
131: err message
132: err [ ] eq {
133: /httpd.history
134: httpd.history
135: [10 (string) dc
136: (/**** ) httpd.serial toString ( ****/)
137: 10 (string) dc
138: httpd.com
1.8 takayama 139: (;) %% add extra ;
1.6 takayama 140: ] cat
141: append
142: def
143: } {
144: oxasir.ccc cleanErrors
145: [httpd.result 10 (string) dc err toString] cat
146: /httpd.result set
147: } ifelse
148:
1.4 takayama 149: [httpd.serial 0 eq { } {
150: (<title> asirweb </title> )
151: (<font color="blue"> Input-) httpd.serial toString
152: (: </font> )
1.9 takayama 153: httpd.com preformatHTML (<br>)
1.4 takayama 154: } ifelse
1.3 takayama 155: (<font color="green"> Output-) httpd.serial toString
156: (: </font> )
1.11 takayama 157: (<a href="http://localhost:) httpd.port toString
158: (/?msg=httpdAsirMeta+Pretty+) httpd.serial toString
159: ("> (in pretty format) </a>)
160: %%(<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
1.9 takayama 161: httpd.result preformatHTML
1.11 takayama 162: httpd.result.history httpd.result append /httpd.result.history set
1.3 takayama 163: ] cat
1.11 takayama 164: send-page-3 exit %% exit the loop LOOP-A
1.5 takayama 165: } { exit } ifelse %% metaCommand
1.1 takayama 166: } ifelse
1.11 takayama 167: } loop %% LOOP-A
1.2 takayama 168: ] pop
169: popVariables
1.1 takayama 170: } def
171:
172:
1.11 takayama 173:
1.3 takayama 174: /httpd.asirman
175: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")
176: def
177: /httpd.asirman.index
178: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262")
179: def
1.4 takayama 180: /httpd.asir.intro
181: ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")
182: def
1.3 takayama 183: /send-menu-1 {
184:
1.4 takayama 185: (FILE:) sendln
1.3 takayama 186: [$<a href="http://localhost:$ httpd.port toString
1.4 takayama 187: $/?msg=httpdAsirMeta+quit"> Shutdown the asir server. </a>, $
1.3 takayama 188: ] cat sendln
1.5 takayama 189: %% [$<a href="http://localhost:$ httpd.port toString
190: %% $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $
191: %% ] cat sendln
192: [$<a href="http://localhost:$ httpd.port toString
193: $/?msg=httpdAsirMeta+save"> save. </a>, $
194: ] cat sendln
1.4 takayama 195: ( <spacer type=horizontal size=80> ) sendln
1.3 takayama 196:
1.4 takayama 197: (HELP:) sendln
1.3 takayama 198: [(<font color="red">
1.4 takayama 199: <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln
1.3 takayama 200: [(<font color="purple">
1.4 takayama 201: <a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln
202: [(<font color="blue">
203: <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
1.3 takayama 204: } def
1.1 takayama 205:
1.5 takayama 206: /send-page-save {
207: [/in-send-page-save /i] pushVariables
208: [
209: (HTTP/0.9 200 OK) sendln
210: (Connection: close) sendln
1.8 takayama 211: (Content-Type: text/plain) sendln
1.5 takayama 212: 0 sendln
1.8 takayama 213: (/* Saved the following to sm1out.txt */) sendln
214: (/* Save the following by your browser as a text file. */) sendln
1.5 takayama 215:
216: 0 1 httpd.history length 1 sub {
217: /i set
218: httpd.history i get sendln
219: } for
1.8 takayama 220: ( end$) sendln
1.5 takayama 221: 0 sendln
222: [(flush)] extension
223: [(PrintDollar) 1] system_variable
224: httpd.history output
225: [(PrintDollar) 0] system_variable
226: ] pop
227: popVariables
228: } def
229:
1.3 takayama 230:
231: /metaCommand {
232: /arg1 set
1.14 ! takayama 233: [/in-metaCommand /msg /result /msg2 /nn
! 234: /err /fn
! 235: ] pushVariables
1.3 takayama 236: [
237: /msg arg1 def
238: /result 1 def
1.11 takayama 239: msg 1 copy toTokensBySpace /msg2 set
240: msg2 length 3 eq {
241: msg2 0 get (httpdAsirMeta) eq
242: msg2 1 get (Pretty) eq and
243: {
244: msg2 2 get . (integer) dc /nn set
245:
246: %% Reformat the "nn"-th result by tex and send it.
1.14 ! takayama 247: %% BUG: index is out of bound. httpd.result.history nn get message
! 248:
! 249: oxasir.ccc
! 250: [$print_gif_form(Oxserver_history_variable_$
! 251: nn toString
! 252: $);$
! 253: ] cat
! 254: (cmo)
! 255: executeStringAndSelectInputFromBrowserAndOxserver
! 256: dup 0 get /err set
! 257: 1 get /fn set
! 258: err [ ] eq {
! 259: fn 0 get (gif) send-image
! 260: } {
! 261: [err preformatHTML] cat
! 262: send-page-3
! 263: } ifelse
1.11 takayama 264: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
265:
266: /result 0 def
267: } { } ifelse
268: }{ } ifelse
1.3 takayama 269: msg (httpdAsirMeta quit) eq {
1.8 takayama 270: oxasir.ccc oxshutdown
1.3 takayama 271: send-page-bye
272: quit
1.5 takayama 273: /result 0 def
274: } { } ifelse
275: msg (httpdAsirMeta save) eq {
276: send-page-save
277: /result 0 def
278: } { } ifelse
279: msg (httpdAsirMeta interrupt) eq {
280: oxasir.ccc oxreset
281: (Interrupted! <br>) send-page-3
1.3 takayama 282: /result 0 def
283: } { } ifelse
284: /arg1 result def
285: ] pop
286: popVariables
287: arg1
288: } def
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>