=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/httpd.sm1,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM/src/kan96xx/Doc/httpd.sm1 2001/08/23 00:16:55 1.1 +++ OpenXM/src/kan96xx/Doc/httpd.sm1 2001/09/20 05:57:40 1.5 @@ -1,5 +1,11 @@ -%% $OpenXM$ +%% $OpenXM: OpenXM/src/kan96xx/Doc/httpd.sm1,v 1.4 2001/08/29 11:18:57 takayama Exp $ %% common modules for httpd on sm1. +/Oxserver_history_variable (Oxserver_history_variable_) def +/httpd.image.type + [(getenv) (OpenXM_PSTOIMG_TYPE)] extension +def + + /httpd_startserver { [(sm1.socket) (open) [httpd.port (localhost)]] extension /httpd.server.fdAndPort set @@ -172,6 +178,17 @@ [(flush)] extension } def +/send-page-warning-image { + (HTTP/0.9 200 OK) sendln + (Connection: close) sendln + (Content-Type: text/html) sendln + 0 sendln + (Error: Image translation is not supported on this server
) sendln + ( Check the value of the environmental variable OpenXM_PSTOIMG_TYPE
) sendln + 0 sendln + [(flush)] extension +} def + /stopclient { [(sm1.socket) (close) [client.fdAndPort 0 get] ] extension message } def @@ -407,4 +424,78 @@ ] pop popVariables arg1 -} def +} def + +/executeStringAndSelectInputFromBrowserAndOxserver { + /arg3 set + /arg2 set + /arg1 set + [/in-executeStringAndSelectInputFromBrowserAndOxserver + /oxserver.ccc + /command.to.oxserver + /sss.engine + /sss.web + /sss + /err + /httpd.result + /stringOrCmo + ] pushVariables +% Global var: httpd.server.fd + [ + /oxserver.ccc arg1 def + /command.to.oxserver arg2 def + /stringOrCmo arg3 def + oxserver.ccc + command.to.oxserver + oxexecutestring ; + + [(oxReq) oxserver.ccc SM_dupErrors ] extension pop + + [(oxReq) oxserver.ccc SM_popCMO ] extension pop + stringOrCmo (string) eq { + [(oxReq) oxserver.ccc SM_popString ] extension pop + }{ + [(oxReq) oxserver.ccc SM_popCMO ] extension pop + } ifelse + [(flush)] extension pop + %% Select inputs for interruption. + %% Wait by the spin lock. + { + [(oxMultiSelect) [oxserver.ccc] 1] extension 1 get 0 get + /sss.engine set + [(sm1.socket) (mselect) + [[httpd.server.fd 0 get] 1] + ] extension 0 get /sss.web set + /sss [sss.engine sss.web] def + sss.engine { exit } { } ifelse + sss.web { exit } { } ifelse + } loop + sss message + + sss 0 get { + [(oxGet) oxserver.ccc] extension /err set + [(oxGet) oxserver.ccc] extension /httpd.result set + } { + oxserver.ccc oxreset + oxserver.ccc ("computation is interrupted.";) oxexecutestring ; + oxserver.ccc oxpopstring + /httpd.result set + exit + } ifelse + (------------- result -------------) message + httpd.result message + (----------------------------------) message + ( ) message + + err message + err [ ] eq { + } { + oxserver.ccc cleanErrors + [httpd.result 10 (string) dc err toString] cat + /httpd.result set + } ifelse + /arg1 [err httpd.result] def + ] pop + popVariables + arg1 +} def \ No newline at end of file