Annotation of OpenXM/src/kan96xx/Doc/httpd-asir.sm1, Revision 1.12
1.12 ! takayama 1: %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.11 2001/08/12 07:20: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
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.3 takayama 49: ] pushVariables
1.2 takayama 50: [
1.1 takayama 51: {
1.5 takayama 52: [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
53: %% wait for ever
54: [(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set
1.1 takayama 55: ff length 0 eq {
56: (connection is closed.) message
57: }
1.4 takayama 58: {
1.1 takayama 59: (------------ start ----------------------) message
60: ff message
61: (-----------------------------------------) message
1.11 takayama 62: ff 1 copy askToSendFile /httpd.sendFile set
63: httpd.sendFile tag 0 eq {
64: ff removeGET webstringToAscii /httpd.com set
65: } {
66: /httpd.com (NONE) def
67: } ifelse
68: [(httpd.com=) httpd.com] cat message
69: (httpd.sendFile=) messagen httpd.sendFile message
1.1 takayama 70: (------------ end ----------------------) message
71: ( ) message
1.4 takayama 72: httpd.serial 0 eq {
73: /httpd.com httpd.initialization def
74: } { } ifelse
1.11 takayama 75: httpd.sendFile tag 0 eq { }
76: {
77: httpd.sendFile httpd.image.type send-image
78: exit %% exit the loop LOOP-A
79: } ifelse
1.3 takayama 80: httpd.com metaCommand {
1.8 takayama 81: httpd.textarea.valid {
82: oxasir.ccc
83: [(if (1) {) httpd.com (; };)] cat
84: oxexecutestring ;
85: }{
86: send-page-warning exit
87: } ifelse
1.6 takayama 88: [(oxReq) oxasir.ccc SM_dupErrors ] extension pop
1.5 takayama 89:
1.6 takayama 90: [(oxReq) oxasir.ccc SM_popCMO ] extension pop
1.5 takayama 91: [(oxReq) oxasir.ccc SM_popString ] extension pop
92: [(flush)] extension pop
93: %% Select inputs for interruption.
94: %% Wait by the spin lock.
95: {
96: [(oxMultiSelect) [oxasir.ccc] 1] extension 1 get 0 get
97: /sss.engine set
98: [(sm1.socket) (mselect)
99: [[httpd.server.fd 0 get] 1]
100: ] extension 0 get /sss.web set
101: /sss [sss.engine sss.web] def
102: sss.engine { exit } { } ifelse
103: sss.web { exit } { } ifelse
104: } loop
105: sss message
106:
107: sss 0 get {
1.6 takayama 108: [(oxGet) oxasir.ccc] extension /err set
1.5 takayama 109: [(oxGet) oxasir.ccc] extension /httpd.result set
110: %% oxasir.ccc oxpopstring /httpd.result set
111: } {
112: oxasir.ccc oxreset
113: oxasir.ccc ("computation is interrupted.";) oxexecutestring ;
114: oxasir.ccc oxpopstring
115: /httpd.result set
116: exit
117: } ifelse
1.3 takayama 118: (------------- result -------------) message
119: httpd.result message
120: (----------------------------------) message
121: ( ) message
1.6 takayama 122:
123: err message
124: err [ ] eq {
125: /httpd.history
126: httpd.history
127: [10 (string) dc
128: (/**** ) httpd.serial toString ( ****/)
129: 10 (string) dc
130: httpd.com
1.8 takayama 131: (;) %% add extra ;
1.6 takayama 132: ] cat
133: append
134: def
135: } {
136: oxasir.ccc cleanErrors
137: [httpd.result 10 (string) dc err toString] cat
138: /httpd.result set
139: } ifelse
140:
1.4 takayama 141: [httpd.serial 0 eq { } {
142: (<title> asirweb </title> )
143: (<font color="blue"> Input-) httpd.serial toString
144: (: </font> )
1.9 takayama 145: httpd.com preformatHTML (<br>)
1.4 takayama 146: } ifelse
1.3 takayama 147: (<font color="green"> Output-) httpd.serial toString
148: (: </font> )
1.11 takayama 149: (<a href="http://localhost:) httpd.port toString
150: (/?msg=httpdAsirMeta+Pretty+) httpd.serial toString
151: ("> (in pretty format) </a>)
152: %%(<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
1.9 takayama 153: httpd.result preformatHTML
1.11 takayama 154: httpd.result.history httpd.result append /httpd.result.history set
1.3 takayama 155: ] cat
1.11 takayama 156: send-page-3 exit %% exit the loop LOOP-A
1.5 takayama 157: } { exit } ifelse %% metaCommand
1.1 takayama 158: } ifelse
1.11 takayama 159: } loop %% LOOP-A
1.2 takayama 160: ] pop
161: popVariables
1.1 takayama 162: } def
163:
164:
1.11 takayama 165:
1.3 takayama 166: /httpd.asirman
167: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")
168: def
169: /httpd.asirman.index
170: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262")
171: def
1.4 takayama 172: /httpd.asir.intro
173: ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")
174: def
1.3 takayama 175: /send-menu-1 {
176:
1.4 takayama 177: (FILE:) sendln
1.3 takayama 178: [$<a href="http://localhost:$ httpd.port toString
1.4 takayama 179: $/?msg=httpdAsirMeta+quit"> Shutdown the asir server. </a>, $
1.3 takayama 180: ] cat sendln
1.5 takayama 181: %% [$<a href="http://localhost:$ httpd.port toString
182: %% $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $
183: %% ] cat sendln
184: [$<a href="http://localhost:$ httpd.port toString
185: $/?msg=httpdAsirMeta+save"> save. </a>, $
186: ] cat sendln
1.4 takayama 187: ( <spacer type=horizontal size=80> ) sendln
1.3 takayama 188:
1.4 takayama 189: (HELP:) sendln
1.3 takayama 190: [(<font color="red">
1.4 takayama 191: <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln
1.3 takayama 192: [(<font color="purple">
1.4 takayama 193: <a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln
194: [(<font color="blue">
195: <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
1.3 takayama 196: } def
1.1 takayama 197:
1.5 takayama 198: /send-page-save {
199: [/in-send-page-save /i] pushVariables
200: [
201: (HTTP/0.9 200 OK) sendln
202: (Connection: close) sendln
1.8 takayama 203: (Content-Type: text/plain) sendln
1.5 takayama 204: 0 sendln
1.8 takayama 205: (/* Saved the following to sm1out.txt */) sendln
206: (/* Save the following by your browser as a text file. */) sendln
1.5 takayama 207:
208: 0 1 httpd.history length 1 sub {
209: /i set
210: httpd.history i get sendln
211: } for
1.8 takayama 212: ( end$) sendln
1.5 takayama 213: 0 sendln
214: [(flush)] extension
215: [(PrintDollar) 1] system_variable
216: httpd.history output
217: [(PrintDollar) 0] system_variable
218: ] pop
219: popVariables
220: } def
221:
1.3 takayama 222:
223: /metaCommand {
224: /arg1 set
1.11 takayama 225: [/in-metaCommand /msg /result /msg2 /nn] pushVariables
1.3 takayama 226: [
227: /msg arg1 def
228: /result 1 def
1.11 takayama 229: msg 1 copy toTokensBySpace /msg2 set
230: msg2 length 3 eq {
231: msg2 0 get (httpdAsirMeta) eq
232: msg2 1 get (Pretty) eq and
233: {
234: msg2 2 get . (integer) dc /nn set
235:
236: %%BUG: This part should be rewritten.
237: %% Reformat the "nn"-th result by tex and send it.
238: httpd.result.history nn get message
239: httpd.image.name httpd.image.type send-image
240: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
241:
242: /result 0 def
243: } { } ifelse
244: }{ } ifelse
1.3 takayama 245: msg (httpdAsirMeta quit) eq {
1.8 takayama 246: oxasir.ccc oxshutdown
1.3 takayama 247: send-page-bye
248: quit
1.5 takayama 249: /result 0 def
250: } { } ifelse
251: msg (httpdAsirMeta save) eq {
252: send-page-save
253: /result 0 def
254: } { } ifelse
255: msg (httpdAsirMeta interrupt) eq {
256: oxasir.ccc oxreset
257: (Interrupted! <br>) send-page-3
1.3 takayama 258: /result 0 def
259: } { } ifelse
260: /arg1 result def
261: ] pop
262: popVariables
263: arg1
264: } def
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>