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