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

Annotation of OpenXM/src/kan96xx/Doc/httpd-asir.sm1, Revision 1.16

1.16    ! takayama    1: %% $OpenXM: OpenXM/src/kan96xx/Doc/httpd-asir.sm1,v 1.15 2001/08/29 11:18:57 takayama Exp $
1.1       takayama    2: %% http server by sm1
1.2       takayama    3:
1.12      takayama    4: [(parse) (httpd.sm1) pushfile] extension pop
                      5:
1.2       takayama    6: /httpd.port 1200 def
1.11      takayama    7: /httpd.image.name (kobeuniv2.jpg) def
1.8       takayama    8:
1.4       takayama    9: /httpd.initialization
                     10: %% Put initialization codes here.
                     11:  [
1.5       takayama   12:   ("Asirweb version 0.80. "+
1.4       takayama   13:    " Risa/Asir oxasir version "+rtostr(version());)
                     14:  ] cat
                     15: def
1.8       takayama   16:
1.1       takayama   17: [(parse) (oxasir.sm1) pushfile] extension
                     18: (oxasir.started) boundp {
                     19: } {
1.6       takayama   20:   %% Initialize oxasir.
1.1       takayama   21:   [(x^2-1) (x)] fctr pop
1.5       takayama   22:   oxasir.ccc oxmathcap
                     23:   oxasir.ccc oxsetmathcap
1.1       takayama   24: } ifelse
                     25:
1.12      takayama   26: /webasir { asirweb } def
1.5       takayama   27: /asirweb {
1.7       takayama   28:  [/rrr ] pushVariables
                     29:  [
                     30:   %% This procedure to generate port number might fail.
                     31:   [(oxGenPass)] extension . (integer) dc  /rrr set
                     32:   rrr << rrr 20000 idiv 20000 mul >> sub /rrr set
                     33:   /httpd.port 1200 rrr add def
                     34:   httpd.port message
                     35:
1.6       takayama   36:   [(sleep 3; netscape -geometry 800x500 http://localhost:)
                     37:     httpd.port toString
                     38:    ( &)] cat system
1.5       takayama   39:    httpd ;
1.7       takayama   40:   ] pop
                     41:   popVariables
1.5       takayama   42: } def
                     43:
1.1       takayama   44:
1.2       takayama   45: /httpd_action {
1.5       takayama   46:   [/in-httpd /ff /httpd.com /httpd.result /sss
1.6       takayama   47:    /sss.engine /sss.web /err
1.13      takayama   48:    /oxserver.vname
1.3       takayama   49:   ] pushVariables
1.2       takayama   50:   [
1.1       takayama   51:   {
1.5       takayama   52:        [(sm1.socket) (select) [httpd.server.fd 0 get -1]] extension
                     53:        %%     wait for ever
                     54:         [(sm1.socket) (read) [httpd.server.fd 0 get ]] extension /ff set
1.1       takayama   55:         ff length 0 eq {
                     56:            (connection is closed.) message
                     57:         }
1.4       takayama   58:         {
1.1       takayama   59:           (------------  start ----------------------) message
                     60:              ff message
                     61:           (-----------------------------------------) message
1.11      takayama   62:              ff 1 copy askToSendFile /httpd.sendFile set
                     63:              httpd.sendFile tag 0 eq {
                     64:                ff removeGET webstringToAscii /httpd.com set
                     65:              } {
                     66:                /httpd.com (NONE) def
                     67:              } ifelse
                     68:              [(httpd.com=) httpd.com] cat message
                     69:              (httpd.sendFile=) messagen httpd.sendFile message
1.1       takayama   70:           (------------  end ----------------------) message
                     71:           (   ) message
1.4       takayama   72:           httpd.serial 0 eq {
                     73:             /httpd.com  httpd.initialization def
                     74:           } { } ifelse
1.11      takayama   75:           httpd.sendFile tag 0 eq { }
                     76:           {
                     77:             httpd.sendFile httpd.image.type send-image
                     78:             exit  %% exit the loop LOOP-A
                     79:           } ifelse
1.3       takayama   80:           httpd.com metaCommand {
1.8       takayama   81:             httpd.textarea.valid {
1.13      takayama   82:               /oxserver.vname
                     83:                  [Oxserver_history_variable httpd.serial toString] cat
                     84:               def
1.8       takayama   85:               oxasir.ccc
1.14      takayama   86:               [(if (1) {)  httpd.com  (; };)] cat
1.8       takayama   87:               oxexecutestring ;
                     88:             }{
                     89:               send-page-warning  exit
                     90:             } ifelse
1.6       takayama   91:             [(oxReq) oxasir.ccc SM_dupErrors ] extension pop
1.5       takayama   92:
1.6       takayama   93:             [(oxReq) oxasir.ccc SM_popCMO ] extension pop
1.14      takayama   94:
                     95:             [(oxReq) oxasir.ccc SM_setName oxserver.vname] extension pop
                     96:             oxasir.ccc [oxserver.vname (;)] cat oxexecutestring
                     97:
1.5       takayama   98:             [(oxReq) oxasir.ccc SM_popString ] extension pop
                     99:             [(flush)] extension pop
                    100:             %% Select inputs for interruption.
                    101:             %% Wait by the spin lock.
                    102:             {
                    103:               [(oxMultiSelect) [oxasir.ccc] 1] extension 1 get 0 get
                    104:               /sss.engine set
                    105:               [(sm1.socket) (mselect)
                    106:                 [[httpd.server.fd 0 get] 1]
                    107:               ] extension 0 get /sss.web set
                    108:               /sss [sss.engine sss.web] def
                    109:               sss.engine { exit } { } ifelse
                    110:               sss.web    { exit } { } ifelse
                    111:             } loop
                    112:             sss message
                    113:
                    114:             sss 0 get {
1.6       takayama  115:                 [(oxGet) oxasir.ccc] extension  /err          set
1.5       takayama  116:                 [(oxGet) oxasir.ccc] extension  /httpd.result set
                    117:                 %% oxasir.ccc oxpopstring /httpd.result set
                    118:             } {
                    119:                 oxasir.ccc oxreset
                    120:                 oxasir.ccc ("computation is interrupted.";) oxexecutestring ;
                    121:                 oxasir.ccc oxpopstring
                    122:                 /httpd.result set
                    123:                 exit
                    124:             } ifelse
1.3       takayama  125:             (------------- result -------------) message
                    126:             httpd.result message
                    127:             (----------------------------------) message
                    128:             (  ) message
1.6       takayama  129:
                    130:             err message
                    131:             err [ ] eq  {
                    132:               /httpd.history
                    133:                 httpd.history
                    134:                 [10 (string) dc
                    135:                  (/**** ) httpd.serial toString ( ****/)
                    136:                  10 (string) dc
                    137:                   httpd.com
1.8       takayama  138:                  (;)  %% add extra ;
1.6       takayama  139:                  ] cat
                    140:                 append
                    141:               def
                    142:             } {
                    143:               oxasir.ccc cleanErrors
                    144:               [httpd.result 10 (string) dc err toString] cat
                    145:               /httpd.result set
                    146:             } ifelse
                    147:
1.4       takayama  148:             [httpd.serial 0 eq { } {
                    149:                 (<title> asirweb </title> )
                    150:                 (<font color="blue"> Input-) httpd.serial toString
                    151:                  (: </font> )
1.9       takayama  152:                  httpd.com preformatHTML (<br>)
1.4       takayama  153:               } ifelse
1.3       takayama  154:              (<font color="green"> Output-) httpd.serial toString
                    155:              (: </font> )
1.11      takayama  156:              (<a href="http://localhost:)  httpd.port toString
                    157:              (/?msg=httpdAsirMeta+Pretty+) httpd.serial toString
                    158:              ("> (in pretty format) </a>)
                    159:              %%(<a href=") httpd.image.name ("> (in pretty format) </a>) %%test
1.9       takayama  160:               httpd.result preformatHTML
1.11      takayama  161:               httpd.result.history httpd.result append /httpd.result.history set
1.3       takayama  162:             ] cat
1.11      takayama  163:             send-page-3  exit  %% exit the loop LOOP-A
1.5       takayama  164:           } { exit } ifelse  %% metaCommand
1.1       takayama  165:         } ifelse
1.11      takayama  166:   } loop  %% LOOP-A
1.2       takayama  167:   ] pop
                    168:   popVariables
1.1       takayama  169: } def
                    170:
                    171:
1.11      takayama  172:
1.3       takayama  173: /httpd.asirman
                    174:  ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_toc.html")
                    175: def
                    176: /httpd.asirman.index
                    177:   ("http://www.math.sci.kobe-u.ac.jp/OpenXM/1.1.3/doc/asir2000/html-jp/man_262.html#SEC262")
                    178: def
1.4       takayama  179: /httpd.asir.intro
                    180:    ("http://www.math.sci.kobe-u.ac.jp/~taka/asir-book-html/main")
                    181: def
1.3       takayama  182: /send-menu-1 {
                    183:
1.4       takayama  184:   (FILE:) sendln
1.3       takayama  185:   [$<a href="http://localhost:$ httpd.port toString
1.4       takayama  186:    $/?msg=httpdAsirMeta+quit"> Shutdown the asir server. </a>, $
1.3       takayama  187:   ] cat sendln
1.5       takayama  188: %%  [$<a href="http://localhost:$ httpd.port toString
                    189: %%   $/?msg=httpdAsirMeta+interrupt"> interrupt </a>, $
                    190: %%  ] cat sendln
                    191:   [$<a href="http://localhost:$ httpd.port toString
                    192:    $/?msg=httpdAsirMeta+save"> save. </a>, $
                    193:   ] cat sendln
1.4       takayama  194:   ( <spacer type=horizontal size=80> ) sendln
1.3       takayama  195:
1.4       takayama  196:   (HELP:) sendln
1.3       takayama  197:   [(<font color="red">
1.4       takayama  198:     <a href=) httpd.asirman ( > AsirManual (Ja) </a> </font>, )] cat sendln
1.3       takayama  199:   [(<font color="purple">
1.4       takayama  200:     <a href=) httpd.asirman.index ( > Index (Ja) </a> </font>, )] cat sendln
                    201:   [(<font color="blue">
                    202:     <a href=) httpd.asir.intro ( > Intro (Ja) </a> </font>, )] cat sendln
1.3       takayama  203: } def
1.1       takayama  204:
1.5       takayama  205: /send-page-save {
                    206:  [/in-send-page-save /i] pushVariables
                    207:  [
                    208:    (HTTP/0.9 200 OK) sendln
                    209:    (Connection: close) sendln
1.8       takayama  210:    (Content-Type: text/plain) sendln
1.5       takayama  211:    0 sendln
1.8       takayama  212:    (/* Saved the following to sm1out.txt */) sendln
                    213:    (/* Save the following by your browser as a text file. */) sendln
1.5       takayama  214:
                    215:    0 1 httpd.history length 1 sub {
                    216:      /i set
                    217:      httpd.history i get sendln
                    218:    } for
1.8       takayama  219:    ( end$) sendln
1.5       takayama  220:    0 sendln
                    221:    [(flush)] extension
                    222:    [(PrintDollar) 1] system_variable
                    223:    httpd.history output
                    224:    [(PrintDollar) 0] system_variable
                    225:  ] pop
                    226:  popVariables
                    227: } def
                    228:
1.3       takayama  229:
                    230: /metaCommand {
                    231:   /arg1 set
1.14      takayama  232:   [/in-metaCommand /msg /result /msg2 /nn
                    233:    /err /fn
                    234:   ] pushVariables
1.3       takayama  235:   [
                    236:     /msg arg1 def
                    237:     /result 1 def
1.11      takayama  238:     msg 1 copy toTokensBySpace /msg2 set
                    239:     msg2 length 3 eq {
                    240:       msg2 0 get (httpdAsirMeta) eq
                    241:       msg2 1 get (Pretty) eq and
                    242:       {
1.16    ! takayama  243:         httpd.image.type null eq {
        !           244:           send-page-warning-image
        !           245:           /skip-image goto
        !           246:         } {  } ifelse
        !           247:
        !           248:
1.11      takayama  249:         msg2 2 get . (integer) dc /nn set
                    250:
                    251:         %% Reformat the "nn"-th result by tex and send it.
1.14      takayama  252:         %% BUG: index is out of bound. httpd.result.history nn get message
                    253:
                    254:         oxasir.ccc
1.15      takayama  255:         [$print_$ httpd.image.type $_form(Oxserver_history_variable_$
1.14      takayama  256:          nn toString
                    257:          $);$
                    258:         ] cat
                    259:         (cmo)
                    260:         executeStringAndSelectInputFromBrowserAndOxserver
                    261:         dup 0 get /err set
                    262:             1 get /fn set
                    263:         err [ ] eq {
1.15      takayama  264:            fn 0 get httpd.image.type send-image
1.14      takayama  265:         } {
                    266:            [err preformatHTML] cat
                    267:            send-page-3
                    268:         } ifelse
1.11      takayama  269:         %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
                    270:
1.16    ! takayama  271:         /skip-image
1.11      takayama  272:         /result 0 def
                    273:       } { } ifelse
                    274:     }{ } ifelse
1.3       takayama  275:     msg (httpdAsirMeta quit) eq {
1.8       takayama  276:        oxasir.ccc oxshutdown
1.3       takayama  277:        send-page-bye
                    278:        quit
1.5       takayama  279:        /result 0 def
                    280:     } { } ifelse
                    281:     msg (httpdAsirMeta save) eq {
                    282:        send-page-save
                    283:        /result 0 def
                    284:     } { } ifelse
                    285:     msg (httpdAsirMeta interrupt) eq {
                    286:        oxasir.ccc oxreset
                    287:        (Interrupted! <br>) send-page-3
1.3       takayama  288:        /result 0 def
                    289:     } { } ifelse
                    290:     /arg1 result def
                    291:   ] pop
                    292:   popVariables
                    293:   arg1
                    294: } def

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