=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v retrieving revision 1.6 retrieving revision 1.12 diff -u -p -r1.6 -r1.12 --- OpenXM/src/kan96xx/Doc/httpd-asir.sm1 2001/04/22 00:34:01 1.6 +++ OpenXM/src/kan96xx/Doc/httpd-asir.sm1 2001/08/23 00:16:55 1.12 @@ -1,7 +1,12 @@ -%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.5 2001/04/21 13:54:29 takayama Exp $ +%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.11 2001/08/12 07:20:37 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. [ @@ -9,6 +14,7 @@ " Risa/Asir oxasir version "+rtostr(version());) ] cat def + [(parse) (oxasir.sm1) pushfile] extension (oxasir.started) boundp { } { @@ -18,58 +24,25 @@ def oxasir.ccc oxsetmathcap } ifelse +/webasir { asirweb } def /asirweb { + [/rrr ] pushVariables + [ + %% This procedure to generate port number might fail. + [(oxGenPass)] extension . (integer) dc /rrr set + rrr << rrr 20000 idiv 20000 mul >> sub /rrr set + /httpd.port 1200 rrr add def + httpd.port message + [(sleep 3; netscape -geometry 800x500 http://localhost:) httpd.port toString ( &)] cat system httpd ; + ] pop + 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 @@ -86,17 +59,32 @@ 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 { - oxasir.ccc - [(if (1) {) httpd.com (};)] cat - oxexecutestring ; + httpd.textarea.valid { + oxasir.ccc + [(if (1) {) httpd.com (; };)] cat + oxexecutestring ; + }{ + send-page-warning exit + } ifelse [(oxReq) oxasir.ccc SM_dupErrors ] extension pop [(oxReq) oxasir.ccc SM_popCMO ] extension pop @@ -140,6 +128,7 @@ def (/**** ) httpd.serial toString ( ****/) 10 (string) dc httpd.com + (;) %% add extra ; ] cat append def @@ -153,76 +142,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 - () 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 - result sendln - () sendln - () sendln - () 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 @@ -260,19 +200,16 @@ def [ (HTTP/0.9 200 OK) sendln (Connection: close) sendln - (Content-Type: text/html) sendln + (Content-Type: text/plain) sendln 0 sendln - ( ) sendln - (/* Saved the following to sm1out.txt */
) sendln - (/* Save the following by your browser as a text file. */
) sendln + (/* Saved the following to sm1out.txt */) sendln + (/* Save the following by your browser as a text file. */) sendln - (
) sendln
    0 1 httpd.history length 1 sub {
      /i set
      httpd.history i get sendln
    } for
-   (
) sendln - ( ) sendln + ( end$) sendln 0 sendln [(flush)] extension [(PrintDollar) 1] system_variable @@ -283,121 +220,30 @@ def } def -/stopclient { - [(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message -} def - - -/cleanErrors { - /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 - -/removeGET { - /arg1 set - [/in-removeGET /s /s2 /i /j] pushVariables - [ - /s arg1 def - s 1 copy /s2 set - s (array) dc /s set - /j 0 def - 10 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 - -/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 + [/in-metaCommand /msg /result /msg2 /nn] pushVariables [ /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 + + %%BUG: This part should be rewritten. + %% Reformat the "nn"-th result by tex and send it. + httpd.result.history nn get message + httpd.image.name httpd.image.type send-image + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + /result 0 def + } { } ifelse + }{ } ifelse msg (httpdAsirMeta quit) eq { + oxasir.ccc oxshutdown send-page-bye quit /result 0 def