===================================================================
RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v
retrieving revision 1.8
retrieving revision 1.14
diff -u -p -r1.8 -r1.14
--- OpenXM/src/kan96xx/Doc/httpd-asir.sm1 2001/04/22 04:35:46 1.8
+++ OpenXM/src/kan96xx/Doc/httpd-asir.sm1 2001/08/23 02:08:41 1.14
@@ -1,7 +1,11 @@
-%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.7 2001/04/22 01:02:27 takayama Exp $
+%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.13 2001/08/23 00:49:00 takayama Exp $
%% http server by sm1
+[(parse) (httpd.sm1) pushfile] extension pop
+
/httpd.port 1200 def
+/httpd.image.name (kobeuniv2.jpg) def
+/httpd.image.type (jpeg) def
/httpd.initialization
%% Put initialization codes here.
@@ -20,6 +24,7 @@ def
oxasir.ccc oxsetmathcap
} ifelse
+/webasir { asirweb } def
/asirweb {
[/rrr ] pushVariables
[
@@ -37,54 +42,11 @@ def
popVariables
} def
-/httpd_startserver {
- [(sm1.socket) (open) [httpd.port (localhost)]] extension
- /httpd.server.fdAndPort set
- (sm1.socket.open returns ) messagen httpd.server.fdAndPort message
- [(sm1.socket) (accept) [httpd.server.fdAndPort 0 get]] extension
- /httpd.server.fd set
- (connected.) message
- (sm1.socket.accept returns ) messagen httpd.server.fd message
-} def
-/httpd_stopserver {
- [(sm1.socket) (close) httpd.server.fd ] extension message
-} def
-
-/send_packet {
- /arg1 set
- [(sm1.socket) (write) [httpd.server.fd 0 get arg1]] extension message
-} def
-
-/sendln {
- /arg1 set
- [/in-sendln /mmm] pushVariables
- [ arg1 /mmm set
- mmm tag 5 eq {
- [mmm 10 (string) dc] cat /mmm set
- }{
- 10 (string) dc /mmm set
- } ifelse
- [(sm1.socket) (write) [httpd.server.fd 0 get mmm]] extension message
- ] pop
- popVariables
-} def
-
-/httpd {
- /httpd.serial 0 def
- /httpd.history [ ] def
- {
- httpd_startserver ;
- httpd_action ;
- httpd_stopserver ;
- (5 sleep) system
- httpd.serial 1 add /httpd.serial set
- } loop
-} def
-
/httpd_action {
[/in-httpd /ff /httpd.com /httpd.result /sss
/sss.engine /sss.web /err
+ /oxserver.vname
] pushVariables
[
{
@@ -98,17 +60,31 @@ def
(------------ start ----------------------) message
ff message
(-----------------------------------------) message
- ff removeGET webstringToAscii /httpd.com set
- httpd.com message
+ ff 1 copy askToSendFile /httpd.sendFile set
+ httpd.sendFile tag 0 eq {
+ ff removeGET webstringToAscii /httpd.com set
+ } {
+ /httpd.com (NONE) def
+ } ifelse
+ [(httpd.com=) httpd.com] cat message
+ (httpd.sendFile=) messagen httpd.sendFile message
(------------ end ----------------------) message
( ) message
httpd.serial 0 eq {
/httpd.com httpd.initialization def
} { } ifelse
+ httpd.sendFile tag 0 eq { }
+ {
+ httpd.sendFile httpd.image.type send-image
+ exit %% exit the loop LOOP-A
+ } ifelse
httpd.com metaCommand {
httpd.textarea.valid {
+ /oxserver.vname
+ [Oxserver_history_variable httpd.serial toString] cat
+ def
oxasir.ccc
- [(if (1) {) httpd.com (; };)] cat
+ [(if (1) {) httpd.com (; };)] cat
oxexecutestring ;
}{
send-page-warning exit
@@ -116,6 +92,10 @@ def
[(oxReq) oxasir.ccc SM_dupErrors ] extension pop
[(oxReq) oxasir.ccc SM_popCMO ] extension pop
+
+ [(oxReq) oxasir.ccc SM_setName oxserver.vname] extension pop
+ oxasir.ccc [oxserver.vname (;)] cat oxexecutestring
+
[(oxReq) oxasir.ccc SM_popString ] extension pop
[(flush)] extension pop
%% Select inputs for interruption.
@@ -170,77 +150,27 @@ def
(
asirweb )
( Input-) httpd.serial toString
(: )
- ( ) httpd.com (
) (
)
+ httpd.com preformatHTML (
)
} ifelse
( Output-) httpd.serial toString
(: )
- () httpd.result (
)
+ ( (in pretty format) )
+ %%( (in pretty format) ) %%test
+ httpd.result preformatHTML
+ httpd.result.history httpd.result append /httpd.result.history set
] cat
- send-page-3 exit
+ send-page-3 exit %% exit the loop LOOP-A
} { exit } ifelse %% metaCommand
} ifelse
- } loop
+ } loop %% LOOP-A
] pop
popVariables
} def
-/send-page-bye {
- (HTTP/0.9 200 OK) sendln
-%% (Date: Sun, 18 Mar 2001 02:54:50 GMT) sendln
-%% (Server: sm1/0.1 (Unix)) sendln
-%% (Last-Modified: Wed, 23 Aug 2000 11:19:27 GMT) sendln
-%% (ETag: "1f8f-5df-39a3b33f") sendln
-%% (Accept-Ranges: bytes) sendln
-%% (Content-Length: 10) sendln
- (Connection: close) sendln
-% (Content-Type: text/plain) sendln
- (Content-Type: text/html) sendln
- 0 sendln
- () sendln
- (Shutdown the engine.
) sendln
- (See you! asirweb ) sendln
- () sendln
- 0 sendln
- [(flush)] extension
-} def
-/send-page-2 {
- (HTTP/0.9 200 OK) sendln
-%% (Content-Length: 10) sendln
- (Connection: close) sendln
- (Content-Type: text/html) sendln
- 0 sendln
- () sendln
- 0 sendln
- [(flush)] extension
-} def
-
-/send-page-3 {
- /arg1 set
- [/in-send-page-3 /result] pushVariables
- [
- /result arg1 def
- (HTTP/0.9 200 OK) sendln
- (Connection: close) sendln
- (Content-Type: text/html) sendln
- 0 sendln
-%% () sendln
- send-menu-1
- 0 sendln
- [(flush)] extension
- ] pop
- popVariables
-} def
-
/httpd.asirman
("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")
def
@@ -297,182 +227,45 @@ def
popVariables
} def
-/send-page-warning {
- (HTTP/0.9 200 OK) sendln
- (Connection: close) sendln
- (Content-Type: text/html) sendln
- 0 sendln
- (You cannot execute oxasir without a session key!
) sendln
- 0 sendln
- [(flush)] extension
-} def
-/stopclient {
- [(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message
-} def
-
-
-/cleanErrors {
+/metaCommand {
/arg1 set
- [/in-cleanErrors /clientt /spp] pushVariables
- [
- /clientt arg1 def
- clientt oxgetsp (integer) dc /spp set
- clientt spp oxpops
- ] pop
- popVariables
-} def
-
-
-/fromHex {
- /arg1 set
- [/in-fromHex /s1 /s2 /c /c2] pushVariables
- [
- arg1 0 get /s1 set
- arg1 1 get /s2 set
-
- 48 s1 le s1 57 le and { % 0, ..., 9
- s1 48 sub /c set
- }{ } ifelse
- 65 s1 le s1 70 le and { % A, ..., F
- s1 65 sub 10 add /c set
- }{ } ifelse
- 97 s1 le s1 102 le and { % a, ..., f
- s1 97 sub 10 add /c set
- }{ } ifelse
- c 16 mul /c set
-
- 48 s2 le s2 57 le and { % 0, ..., 9
- s2 48 sub /c2 set
- }{ } ifelse
- 65 s2 le s2 70 le and { % A, ..., F
- s2 65 sub 10 add /c2 set
- }{ } ifelse
- 97 s2 le s2 102 le and { % a, ..., f
- s2 97 sub 10 add /c2 set
- }{ } ifelse
- c c2 add /arg1 set
- ] pop
- popVariables
- arg1
-} def
-
-/randomName {
- [/in-randomName /sss /rrr ] pushVariables
- [
- %% Seed name
- /sss [ 97 97 97 97 97 97 97 97 97 97 ] def %% 97 == 'a'
- %% This procedure to generate port number might fail.
- sss {
- [
- [(oxGenPass)] extension .. /rrr set
- [(tdiv_qr) rrr (26)..] mpzext 1 get /rrr set
- ] pop
- rrr (integer) dc add
- } map
- /sss set
- sss {(string) dc} map cat /arg1 set
- ] pop
- popVariables
- arg1
-} def
-
-(httpd.textarea.name) boundp { }
- {
- /httpd.textarea.name randomName def
- /httpd.textarea.name.aaa
- [(GET /?) httpd.textarea.name] cat
- (array) dc
- def
- } ifelse
-
-%% remove GET /?msg=
-/removeGET {
- /arg1 set
- [/in-removeGET /s /s2 /i /j /i0
- /tname
+ [/in-metaCommand /msg /result /msg2 /nn
+ /err /fn
] pushVariables
[
- /s arg1 def
- /httpd.textarea.valid 1 def
- s 1 copy /s2 set
- s (array) dc /s set
+ /msg arg1 def
+ /result 1 def
+ msg 1 copy toTokensBySpace /msg2 set
+ msg2 length 3 eq {
+ msg2 0 get (httpdAsirMeta) eq
+ msg2 1 get (Pretty) eq and
+ {
+ msg2 2 get . (integer) dc /nn set
- /tname [ ] def
- 0 1 s length 1 sub {
- /i0 set
- s i0 get 61 eq { %% 61 is =
- i0 1 add /i0 set
- tname message
- httpd.textarea.name.aaa message
- tname httpd.textarea.name.aaa eq {
- /httpd.textarea.valid 1 def
- } {
- /httpd.textarea.valid 0 def
- (Warning: got an invalid name for the text field.) message
- } ifelse
- exit
- } { } ifelse
- tname s i0 get append /tname set
- } for
+ %% Reformat the "nn"-th result by tex and send it.
+ %% BUG: index is out of bound. httpd.result.history nn get message
- /j 0 def
- i0 1 s length 1 sub {
- /i set
- s2 j << s i get (string) dc >> put
- j 1 add /j set
- } for
- /arg1 s2 def
- ] pop
- arg1
-} def
+ oxasir.ccc
+ [$print_gif_form(Oxserver_history_variable_$
+ nn toString
+ $);$
+ ] cat
+ (cmo)
+ executeStringAndSelectInputFromBrowserAndOxserver
+ dup 0 get /err set
+ 1 get /fn set
+ err [ ] eq {
+ fn 0 get (gif) send-image
+ } {
+ [err preformatHTML] cat
+ send-page-3
+ } ifelse
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-/webstringToAscii {
- /arg1 set
- [/in-webstringToAscii /s /i /j /c /n] pushVariables
- [
- /s arg1 def
- s (array) dc /s set
- /j 0 def /n s length def
- /i 0 def
- {
- s i get /c set
- c 32 eq { exit } { } ifelse
- c 37 eq { % c == %
- [s i 1 add get s i 2 add get] fromHex /c set
- s j c put
- j 1 add /j set
- i 3 add /i set
- } {
- c 43 eq { % c == +
- s j 32 put
- j 1 add /j set
- i 1 add /i set
- } {
- c 13 eq { % c == 0xd
- i 1 add /i set
- } {
- s j c put
- j 1 add /j set
- i 1 add /i set
- } ifelse
- } ifelse
- } ifelse
- i n ge { exit } { } ifelse
- } loop
- s j carN /s set
- s { (string) dc } map cat /arg1 set
- ] pop
- popVariables
- arg1
-} def
-
-/metaCommand {
- /arg1 set
- [/in-metaCommand /msg /result] pushVariables
- [
- /msg arg1 def
- /result 1 def
+ /result 0 def
+ } { } ifelse
+ }{ } ifelse
msg (httpdAsirMeta quit) eq {
oxasir.ccc oxshutdown
send-page-bye