[BACK]Return to httpd-asir.sm1 CVS log [TXT][DIR] Up to [local] / OpenXM / src / kan96xx / Doc

Diff for /OpenXM/src/kan96xx/Doc/httpd-asir.sm1 between version 1.7 and 1.27

version 1.7, 2001/04/22 01:02:27 version 1.27, 2005/11/21 09:12:22
Line 1 
Line 1 
 %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.6 2001/04/22 00:34:01 takayama Exp $  %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.26 2005/11/17 08:15:51 takayama Exp $
 %% http server by sm1  %% http server by sm1
   
   [(parse) (httpd.sm1) pushfile] extension pop
   
 /httpd.port 1200 def  /httpd.port 1200 def
   /httpd.image.name (kobeuniv2.jpg) def
   
 /httpd.initialization  /httpd.initialization
 %% Put initialization codes here.  %% Put initialization codes here.
  [   [
     (XM_debug=0; ctrl("debug_window",0);)
   ("Asirweb version 0.80. "+    ("Asirweb version 0.80. "+
    " Risa/Asir oxasir version "+rtostr(version());)     " Risa/Asir oxasir version "+rtostr(version());)
  ] cat   ] cat
 def  def
   
 [(parse) (oxasir.sm1) pushfile] extension  [(parse) (oxasir.sm1) pushfile] extension
 (oxasir.started) boundp {  (oxasir.started) boundp {
 } {  } {
Line 18  def
Line 24  def
   oxasir.ccc oxsetmathcap    oxasir.ccc oxsetmathcap
 } ifelse  } ifelse
   
   /ox-win.start.iconic 1 def
   /ox.win.set.start {
     [(stat) (c:\windows\system32\cmd.exe)] extension 0 get
     0 eq {
       /ox.win.start.0 [(c:\windows\system32\cmd.exe) (/c) (start)] def
       /ox.win.start [ox.win.start.0 aload pop
                      ox-win.start.iconic { (/min) } { } ifelse ] def
     }{
      [(stat) (c:\winnt\system32\cmd.exe)] extension 0 get
      0 eq {
         /ox.win.start.0 [(c:\winnt\system32\cmd.exe) (/c) (start) ] def
         /ox.win.start [ox.win.start.0 aload pop
                        ox-win.start.iconic { (/min) } { } ifelse ] def
      }{
        /ox.win.start.0 [ (start) ] def
        /ox.win.start [ ox.win.start.0 aload pop
                        ox-win.start.iconic { (/min) } { } ifelse ] def
      } ifelse
     } ifelse
   } def
   
   /webasir { asirweb } def
 /asirweb {  /asirweb {
  [/rrr ] pushVariables   [/rrr /cmd] pushVariables
  [   [
   %% This procedure to generate port number might fail.    %% This procedure to generate port number might fail.
   [(oxGenPass)] extension . (integer) dc  /rrr set    [(oxGenPass)] extension . (integer) dc  /rrr set
Line 27  def
Line 55  def
   /httpd.port 1200 rrr add def    /httpd.port 1200 rrr add def
   httpd.port message    httpd.port message
   
   [(sleep 3; netscape -geometry 800x500 http://localhost:)    %%[(sleep 3; netscape -geometry 800x500 http://localhost:)
     httpd.port toString    %%  httpd.port toString
    ( &)] cat system    %% ( &)] cat system
      [(ostype)] extension 0 get
      (windows) eq {
        %% On windows.
         ox.win.set.start
         [(forkExec)
          [
            %%(c:\windows\command\start)
            ox.win.start.0 aload pop
            (iexplore)   %% Starting internet explorer (TM).
            [(http://localhost:) httpd.port toString] cat
          ]
          [  ]
         3] extension
      }{
         %% On unix.
         httpd.port httpd.startBrowserUnix
      } ifelse
   
    httpd ;     httpd ;
   ] pop    ] pop
   popVariables    popVariables
 } def  } 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 {  /httpd_action {
   [/in-httpd /ff /httpd.com /httpd.result /sss    [/in-httpd /ff /httpd.com /httpd.result /sss
    /sss.engine /sss.web /err     /sss.engine /sss.web /err
      /oxserver.vname
   ] pushVariables    ] pushVariables
   [    [
   {    {
        [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension         [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
        %%     wait for ever         %%     wait for ever
         [(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set          [(sm1.socket) (readHTTP) [httpd.server.fd 0 get ]] extension /ff set
         ff length 0 eq {          ff tag 0 eq {
            (connection is closed.) message             (connection is closed.) message exit
         }          }
         {          {
           (------------  start ----------------------) message            (------------  start ----------------------) message
              ff message               ff message
           (-----------------------------------------) message            (-----------------------------------------) message
              ff removeGET webstringToAscii /httpd.com set               ff 1 copy askToSendFile /httpd.sendFile set
              httpd.com message               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            (------------  end ----------------------) message
           (   ) message            (   ) message
           httpd.serial 0 eq {            httpd.serial 0 eq {
             /httpd.com  httpd.initialization def              /httpd.com  httpd.initialization def
               /httpd.textarea.valid 1 def
           } { } ifelse            } { } ifelse
             httpd.sendFile tag 0 eq { }
             {
               httpd.sendFile httpd.image.type send-image
               exit  %% exit the loop LOOP-A
             } ifelse
           httpd.com metaCommand {            httpd.com metaCommand {
             oxasir.ccc              httpd.textarea.valid {
              [(if (1) {)  httpd.com  (};)] cat                /oxserver.vname
             oxexecutestring ;                   [Oxserver_history_variable httpd.serial toString] cat
                 def
                 oxasir.ccc
                 [(if (1) {)  httpd.com  (; };)] cat
                 oxexecutestring ;
               }{
                 send-page-warning  exit
               } ifelse
             [(oxReq) oxasir.ccc SM_dupErrors ] extension pop              [(oxReq) oxasir.ccc SM_dupErrors ] extension pop
   
             [(oxReq) oxasir.ccc SM_popCMO ] 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              [(oxReq) oxasir.ccc SM_popString ] extension pop
             [(flush)] extension pop              [(flush)] extension pop
             %% Select inputs for interruption.              %% Select inputs for interruption.
Line 150  def
Line 176  def
                  (/**** ) httpd.serial toString ( ****/)                   (/**** ) httpd.serial toString ( ****/)
                  10 (string) dc                   10 (string) dc
                   httpd.com                    httpd.com
                    (;)  %% add extra ;
                  ] cat                   ] cat
                 append                  append
               def                def
Line 163  def
Line 190  def
                 (<title> asirweb </title> )                  (<title> asirweb </title> )
                 (<font color="blue"> Input-) httpd.serial toString                  (<font color="blue"> Input-) httpd.serial toString
                  (: </font> )                   (: </font> )
                 (<pre> ) httpd.com (</pre>) (<br>)                   httpd.com preformatHTML (<br>)
               } ifelse                } ifelse
              (<font color="green"> Output-) httpd.serial toString               (<font color="green"> Output-) httpd.serial toString
              (: </font> )               (: </font> )
              (<pre>) httpd.result (</pre>)               (<a href="http://localhost:)  httpd.port toString
                (/?msg=httpdAsirMeta+Pretty+) httpd.serial toString
                ("> (in pretty format) </a>)
                %%(<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
                 httpd.result preformatHTML
                 httpd.result.history httpd.result append /httpd.result.history set
             ] cat              ] cat
             send-page-3  exit              send-page-3  exit  %% exit the loop LOOP-A
           } { exit } ifelse  %% metaCommand            } { exit } ifelse  %% metaCommand
         } ifelse          } ifelse
   } loop    } loop  %% LOOP-A
   ] pop    ] pop
   popVariables    popVariables
 } def  } 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  
    (<html>) sendln  
    (Shutdown the engine. <br>) sendln  
    (See you! <a href="http://www.openxm.org"> asirweb </a>) sendln  
    (</html>) 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  
    (<FORM NAME="myFORM">) sendln  
    (<INPUT TYPE="TEXT" NAME="Num">) sendln  
    (</FORM>) 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  
 %%   (<FORM NAME="myFORM" METHOD="POST">) sendln  
    result sendln  
    (<FORM NAME="myFORM">) sendln  
    (<INPUT TYPE=submit VALUE="submit">) sendln  
    (<textarea name=msg rows=10 cols="80" wrap="soft"></textarea>) sendln  
    (</FORM>) sendln  
    send-menu-1  
    0 sendln  
    [(flush)] extension  
   ] pop  
   popVariables  
 } def  
   
 /httpd.asirman  /httpd.asirman
  ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")   ("http://www.math.sci.kobe-u.ac.jp/OpenXM/Current/doc/asir2000/html-jp/man_toc.html")
 def  def
 /httpd.asirman.index  /httpd.asirman.contrib
   ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262")    ("http://www.math.sci.kobe-u.ac.jp/OpenXM/Current/doc/asir-contrib/html-ja/cman-ja_toc.html")
 def  def
 /httpd.asir.intro  /httpd.asir.intro
    ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")     ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")
Line 260  def
Line 238  def
   [(<font color="red">    [(<font color="red">
     <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln      <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln
   [(<font color="purple">    [(<font color="purple">
     <a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln      <a href=) httpd.asirman.contrib ( > AsirContrib (Ja) </a> </font>, )] cat sendln
   [(<font color="blue">    [(<font color="blue">
     <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln      <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
 } def  } def
Line 270  def
Line 248  def
  [   [
    (HTTP/0.9 200 OK) sendln     (HTTP/0.9 200 OK) sendln
    (Connection: close) sendln     (Connection: close) sendln
    (Content-Type: text/html) sendln     (Content-Type: text/plain) sendln
    0 sendln     0 sendln
    (<html> <body>) sendln     (/* Saved the following to sm1out.txt */) sendln
    (/* Saved the following to sm1out.txt */<br>) sendln     (/* Save the following by your browser as a text file. */) sendln
    (/* Save the following by your browser as a text file. */<br>) sendln  
   
    (<pre>) sendln  
    0 1 httpd.history length 1 sub {     0 1 httpd.history length 1 sub {
      /i set       /i set
      httpd.history i get sendln       httpd.history i get sendln
    } for     } for
    (</pre>) sendln     ( end$) sendln
    (</body> </html>) sendln  
    0 sendln     0 sendln
    [(flush)] extension     [(flush)] extension
    [(PrintDollar) 1] system_variable     [(PrintDollar) 1] system_variable
Line 293  def
Line 268  def
 } def  } def
   
   
 /stopclient {  /metaCommand {
   [(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message  
 } def  
   
   
 /cleanErrors {  
   /arg1 set    /arg1 set
   [/in-cleanErrors /clientt /spp] pushVariables    [/in-metaCommand /msg /result /msg2 /nn
      /err /fn
     ] pushVariables
   [    [
     /clientt arg1 def      /msg arg1 def
     clientt oxgetsp (integer) dc /spp set      /result 1 def
     clientt spp oxpops      msg 1 copy toTokensBySpace /msg2 set
   ] pop      msg2 length 3 eq {
   popVariables        msg2 0 get (httpdAsirMeta) eq
 } def        msg2 1 get (Pretty) eq and
         {
           httpd.image.type tag 0 eq {
             send-page-warning-image
             /skip-image goto
           } {  } ifelse
   
   
 /fromHex {          msg2 2 get . (integer) dc /nn set
   /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          %% Reformat the "nn"-th result by tex and send it.
       s1 48 sub /c set          %% BUG: index is out of bound. httpd.result.history nn get message
     }{ } 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  
   
 %% remove GET /?msg=          oxasir.ccc
 /removeGET {          [$print_$ httpd.image.type $_form(Oxserver_history_variable_$
   /arg1 set           nn toString
   [/in-removeGET /s /s2 /i /j /i0] pushVariables           $);$
   [          ] cat
      /s arg1 def          (cmo)
      s 1 copy /s2 set          executeStringAndSelectInputFromBrowserAndOxserver
      s (array) dc /s set          dup 0 get /err set
               1 get /fn set
           err [ ] eq {
              fn 0 get httpd.image.type send-image
           } {
              [err preformatHTML] cat
              send-page-3
           } ifelse
           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
      0 1 s length 1 sub {          /skip-image
        /i0 set          /result 0 def
        s i0 get 61 eq {  %% 61 is =        } { } ifelse
          i0 1 add /i0 set      }{ } ifelse
          exit  
        } { } ifelse  
      } for  
   
      /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  
   
 /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  
     msg (httpdAsirMeta quit) eq {      msg (httpdAsirMeta quit) eq {
          oxasir.ccc oxshutdown
        send-page-bye         send-page-bye
        quit         quit
        /result 0 def         /result 0 def

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.27

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>