Annotation of OpenXM/src/kan96xx/Doc/httpd-sm1.sm1, Revision 1.18
1.18 ! takayama 1: %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-sm1.sm1,v 1.17 2003/09/14 01:59:56 takayama Exp $
1.1 takayama 2: %% http server by sm1
1.3 takayama 3: %% Note to run on the Windows (TM).
1.2 takayama 4: %% (A) You need to set IE (internet explorer) as follows:
5: %% (1) Visit the menu
6: %% tool / internet option / connection / LAN configuration
1.3 takayama 7: %% (2) Add localhost to the list of hosts which are not accessed via
8: %% the proxy server.
1.2 takayama 9: %% (B) You need to have the "start.exe" at c:\windows\command\start.exe
1.3 takayama 10: %% (C) cygwin1.dll should be by sm1.exe, ox_sm1.exe and ox.exe
1.1 takayama 11:
1.8 takayama 12: [(parse) (httpd.sm1) pushfile] extension pop
1.1 takayama 13:
1.3 takayama 14: /httpd.image.name (kobeuniv2.jpg) def
15: /httpd.image.type (jpeg) def
1.1 takayama 16: /httpd.port 1200 def
17:
18: /httpd.initialization
19: %% Put initialization codes here.
20: [
21: ([$parse$ $cohom.sm1$ pushfile] extension
22: [$Web/sm1 version 0.80. $
23: $Kan/sm1 ox_sm1 version $ [$Version$] system_variable] cat)
24: ] cat
25: def
26:
1.6 takayama 27: [(ostype)] extension 0 get
28: (windows) eq {
29: %% Native windows environment or cygwin.
1.3 takayama 30: [(parse) (ox-win.sm1) pushfile] extension
31: }{
1.6 takayama 32: [(parse) (ox.sm1) pushfile] extension
1.3 takayama 33: } ifelse
34:
1.1 takayama 35: (ox_sm1.started) boundp {
36: } {
1.3 takayama 37: %% Initialize ox_sm1
1.6 takayama 38: [(ostype)] extension 0 get
1.10 takayama 39: sm1connectr
1.1 takayama 40: ox.ccc oxmathcap
41: ox.ccc oxsetmathcap
42: } ifelse
43:
1.17 takayama 44: /ox-win.start.iconic 1 def
45: /ox.win.set.start {
46: [(stat) (c:\windows\system32\cmd.exe)] extension 0 get
47: 0 eq {
48: /ox.win.start.0 [(c:\windows\system32\cmd.exe) (/c) (start)] def
49: /ox.win.start [ox.win.start.0 aload pop
50: ox-win.start.iconic { (/min) } { } ifelse ] def
51: }{
52: [(stat) (c:\winnt\system32\cmd.exe)] extension 0 get
53: 0 eq {
54: /ox.win.start.0 [(c:\winnt\system32\cmd.exe) (/c) (start) ] def
55: /ox.win.start [ox.win.start.0 aload pop
56: ox-win.start.iconic { (/min) } { } ifelse ] def
57: }{
58: /ox.win.start.0 [ (start) ] def
59: /ox.win.start [ ox.win.start.0 aload pop
60: ox-win.start.iconic { (/min) } { } ifelse ] def
61: } ifelse
62: } ifelse
63: } def
64:
1.1 takayama 65: /websm1 {
66: [/rrr ] pushVariables
67: [
68: %% This procedure to generate port number might fail.
69: [(oxGenPass)] extension . (integer) dc /rrr set
70: rrr << rrr 20000 idiv 20000 mul >> sub /rrr set
71: /httpd.port 1200 rrr add def
72: httpd.port message
73:
1.2 takayama 74: % [(sleep 3; start iexplore http://localhost:)
75: % httpd.port toString
76: % ( &)] cat system
1.6 takayama 77: [(ostype)] extension 0 get
78: (windows) eq {
79: %% On windows.
1.17 takayama 80: ox.win.set.start
1.6 takayama 81: [(forkExec)
82: [
1.11 takayama 83: %%(c:/windows/command/start)
1.12 takayama 84: ox.win.start.0 aload pop
1.6 takayama 85: (iexplore) %% Starting internet explorer (TM).
86: [(http://localhost:) httpd.port toString] cat
87: ]
88: [ ]
89: 3] extension
90: }{
91: %% On unix.
1.18 ! takayama 92: httpd.port httpd.startBrowserUnix
1.6 takayama 93: } ifelse
1.1 takayama 94: httpd ;
95: ] pop
96: popVariables
97: } def
98:
99:
100: /httpd_action {
101: [/in-httpd /ff /httpd.com /httpd.result /sss
1.3 takayama 102: /sss.engine /sss.web /err /httpd.sendFile
1.9 takayama 103: /oxserver.vname
1.1 takayama 104: ] pushVariables
105: [
106: {
107: [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
108: %% wait for ever
1.14 takayama 109: [(sm1.socket) (readHTTP) [httpd.server.fd 0 get ]] extension /ff set
1.15 takayama 110: ff tag 0 eq {
111: (connection is closed.) message exit
1.1 takayama 112: }
113: {
114: (------------ start ----------------------) message
115: ff message
116: (-----------------------------------------) message
1.3 takayama 117: ff 1 copy askToSendFile /httpd.sendFile set
118: httpd.sendFile tag 0 eq {
119: ff removeGET webstringToAscii /httpd.com set
120: } {
121: /httpd.com (NONE) def
122: } ifelse
123: [(httpd.com=) httpd.com] cat message
124: (httpd.sendFile=) messagen httpd.sendFile message
1.1 takayama 125: (------------ end ----------------------) message
126: ( ) message
127: httpd.serial 0 eq {
128: /httpd.com httpd.initialization def
1.16 takayama 129: /httpd.textarea.valid 1 def
1.1 takayama 130: } { } ifelse
1.3 takayama 131: httpd.sendFile tag 0 eq { }
132: {
133: httpd.sendFile httpd.image.type send-image
134: exit %% exit the loop LOOP-A
135: } ifelse
1.1 takayama 136: httpd.com metaCommand {
137: httpd.textarea.valid {
1.9 takayama 138: /oxserver.vname
139: [Oxserver_history_variable httpd.serial toString] cat
140: def
1.1 takayama 141: ox.ccc
1.9 takayama 142: [
143: httpd.com
144: ( /) oxserver.vname ( set )
145: oxserver.vname ( )
146: ] cat
1.1 takayama 147: oxexecutestring ;
148: }{
149: send-page-warning exit
150: } ifelse
151: [(oxReq) ox.ccc SM_dupErrors ] extension pop
152:
153: [(oxReq) ox.ccc SM_popCMO ] extension pop
154: [(oxReq) ox.ccc SM_popString ] extension pop
155: [(flush)] extension pop
156: %% Select inputs for interruption.
157: %% Wait by the spin lock.
158: {
159: [(oxMultiSelect) [ox.ccc] 1] extension 1 get 0 get
160: /sss.engine set
161: [(sm1.socket) (mselect)
162: [[httpd.server.fd 0 get] 1]
163: ] extension 0 get /sss.web set
164: /sss [sss.engine sss.web] def
165: sss.engine { exit } { } ifelse
166: sss.web { exit } { } ifelse
167: } loop
168: sss message
169:
170: sss 0 get {
171: [(oxGet) ox.ccc] extension /err set
172: [(oxGet) ox.ccc] extension /httpd.result set
173: %% ox.ccc oxpopstring /httpd.result set
174: } {
175: ox.ccc oxreset
176: ox.ccc ("computation is interrupted.";) oxexecutestring ;
177: ox.ccc oxpopstring
178: /httpd.result set
179: exit
180: } ifelse
181: (------------- result -------------) message
182: httpd.result message
183: (----------------------------------) message
184: ( ) message
185:
186: err message
187: err [ ] eq {
188: /httpd.history
189: httpd.history
190: [10 (string) dc
191: 37 (string) dc httpd.serial toString
192: 10 (string) dc
193: httpd.com
194: ( ) %% add extra ;
195: ] cat
196: append
197: def
198: } {
199: ox.ccc cleanErrors
200: [httpd.result 10 (string) dc err toString] cat
201: /httpd.result set
202: } ifelse
203:
204: [httpd.serial 0 eq { } {
205: (<title> Web/sm1 </title> )
206: (<font color="blue"> Input-) httpd.serial toString
207: (: </font> )
208: httpd.com preformatHTML (<br>)
209: } ifelse
210: (<font color="green"> Output-) httpd.serial toString
211: (: </font> )
1.3 takayama 212: (<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
1.1 takayama 213: httpd.result preformatHTML
1.4 takayama 214: httpd.result.history httpd.result append /httpd.result.history set
1.1 takayama 215: ] cat
1.3 takayama 216: send-page-3 exit %% exit the loop LOOP-A
1.1 takayama 217: } { exit } ifelse %% metaCommand
218: } ifelse
1.3 takayama 219: } loop %% LOOP-A
1.1 takayama 220: ] pop
221: popVariables
222: } def
223:
224:
1.3 takayama 225:
1.1 takayama 226: /httpd.sm1man
1.17 takayama 227: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/Current/doc/kan96xx/onlinehelp/index.html")
1.1 takayama 228: def
229: /httpd.sm1man.index
1.17 takayama 230: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/Current/doc/asir2000/html-jp/man_262.html#SEC262")
1.1 takayama 231: def
232: /httpd.asir.intro
1.17 takayama 233: ("http://www.math.sci.kobe-u.ac.jp/OpenXM/Current/doc/kan96xx/ttt/index.html")
1.1 takayama 234: def
235: /send-menu-1 {
236:
237: (FILE:) sendln
238: [$<a href="http://localhost:$ httpd.port toString
239: $/?msg=httpdAsirMeta+quit"> Shutdown the sm1 server. </a>, $
240: ] cat sendln
241: %% [$<a href="http://localhost:$ httpd.port toString
242: %% $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $
243: %% ] cat sendln
244: [$<a href="http://localhost:$ httpd.port toString
245: $/?msg=httpdAsirMeta+save"> save. </a>, $
246: ] cat sendln
247: ( <spacer type=horizontal size=80> ) sendln
248:
249: (HELP:) sendln
250: [(<font color="red">
251: <a href=) httpd.sm1man ( > Sm1manual (Ja) </a> </font>, )] cat sendln
252: [(<font color="blue">
253: <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
254: } def
255:
256: /send-page-save {
257: [/in-send-page-save /i] pushVariables
258: [
259: (HTTP/0.9 200 OK) sendln
260: (Connection: close) sendln
261: (Content-Type: text/plain) sendln
262: 0 sendln
263: [37 (string) dc ( Saved the following to sm1out.txt )] cat sendln
264: [37 (string) dc ( Save the following by your browser as a text file. )]
265: cat sendln
266:
267: 0 1 httpd.history length 1 sub {
268: /i set
269: httpd.history i get sendln
270: } for
271: ( ) sendln
272: 0 sendln
273: [(flush)] extension
274: [(PrintDollar) 1] system_variable
275: httpd.history output
276: [(PrintDollar) 0] system_variable
277: ] pop
278: popVariables
279: } def
280:
281:
282: /metaCommand {
283: /arg1 set
284: [/in-metaCommand /msg /result] pushVariables
285: [
286: /msg arg1 def
287: /result 1 def
288: msg (httpdAsirMeta quit) eq {
289: ox.ccc ( quit ) oxsubmit
290: ox.ccc oxshutdown
291: send-page-bye
292: quit
293: /result 0 def
294: } { } ifelse
295: msg (httpdAsirMeta save) eq {
296: send-page-save
297: /result 0 def
298: } { } ifelse
299: msg (httpdAsirMeta interrupt) eq {
300: ox.ccc oxreset
301: (Interrupted! <br>) send-page-3
302: /result 0 def
303: } { } ifelse
304: /arg1 result def
305: ] pop
306: popVariables
307: arg1
308: } def
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>