===================================================================
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