[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.25

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

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