=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/ox.sm1,v retrieving revision 1.43 retrieving revision 1.50 diff -u -p -r1.43 -r1.50 --- OpenXM/src/kan96xx/Doc/ox.sm1 2004/09/17 07:27:28 1.43 +++ OpenXM/src/kan96xx/Doc/ox.sm1 2006/02/02 07:07:22 1.50 @@ -1,4 +1,4 @@ -%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.42 2004/09/10 13:20:22 takayama Exp $ +%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.49 2006/02/02 05:15:45 takayama Exp $ /ox.sm1.myname (ox-new.sm1) def @@ -48,6 +48,7 @@ ox.version [(Version)] system_variable gt /@@@.Xm_noX Xm_noX def }{ } ifelse /Xm_noX @@@.Xm_noX def +/Xm_engineLogToStdout 0 def /oxNoX { /Xm_noX 1 def @@ -103,6 +104,7 @@ ox.version [(Version)] system_variable gt (client oxpushcmotag) ( ) (client oxgetsp --- get stack pointer, client oxgeterrors --- get all errors) + (client oxclearstack --- clear the stack of the ox server.) (cleint oxisData, client oxreset, client oxshutdown) (oxhelp for this message) ([(oxWatch) client] extension to start a log.) @@ -348,11 +350,12 @@ ox.verbose { oxhelp } { } ifelse %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /ox_launch_nox { - /@@@.ox_launch_nox 1 def + Xm_noX /ox_launch_nox.save set + oxNoX ox_launch_aux + /Xm_noX ox_launch_nox.save def } def /ox_launch { - /@@@.ox_launch_nox 0 def ox_launch_aux } def @@ -360,7 +363,7 @@ ox.verbose { oxhelp } { } ifelse /arg1 set [/in-launch_nox /pass /peer /data /control /name /machine /your-peer /comm /remoteOpenXMbin /remoteServer /myhost - /argNumber /aaa + /argNumber /aaa /myssh ] pushVariables [ /aaa arg1 def @@ -370,36 +373,42 @@ ox.verbose { oxhelp } { } ifelse aaa 1 get ox_launch_localhost /your-peer set /LLL.end goto } { - /remoteOpenXMbin aaa 1 get def - /remoteServer aaa 2 get def - /name aaa 3 get def - /myhost aaa 4 get def + /remoteServer aaa 1 get def + /name aaa 2 get def } ifelse + /myssh [(which) (ssh)] oxshell def + myssh tag 0 eq { + (ssh is not found.) error + } { } ifelse + + [(gethostname)] extension /myhost set + /pass ox_encrypt_104_genPass def /peer [(oxGetPort) myhost] extension def /data peer 1 get toString def /control peer 3 get toString def peer message - [(ssh -f ) machine ( -l ) name ( ") - - @@@.ox_launch_nox { - } { - remoteOpenXMbin(/oxlog ) - ( /usr/X11R6/bin/xterm -icon -e ) - } ifelse - - ( ) remoteOpenXMbin (/ox ) - ( -reverse -ox ) remoteServer - ( -host ) myhost - ( -data ) data ( -control ) control pass [1 2] get - oxpath.null - ( ") + peer 0 get -1 eq { + (Error in oxGetPort) error + } { } ifelse + [myssh ( -X -f ) machine ( -l ) name ( ) + [ + (ox100start ) % it must be on a path of the remote host + @@@.quiet { ( -quiet ) } { } ifelse + Xm_noX { ( -nox ) } { } ifelse + ( -oxserver ) remoteServer ( -e ) + ( -reverse ) + ( -host ) myhost + ( -data ) data ( -control ) control pass [1 2] get + ] cat ] cat /comm set - (Executing the command : ) messagen comm message message - comm system - (sleep 5) system-csh - [(oxCreateClient2) peer 1 pass 0 get] extension /your-peer set + (Executing the command : ) messagen comm message + comm execve 0 lt { + (Fork exec failed) error + } { } ifelse +% ipmask must be 1 to accept from a global address. + [(oxCreateClient2) peer 1 , pass 0 get] extension /your-peer set /LLL.end /arg1 your-peer def ] pop @@ -408,22 +417,24 @@ ox.verbose { oxhelp } { } ifelse } def [(ox_launch) -[( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] ) +[( [remote-machine remote-ox-server-name remote-login-name] ) ( ox_launch client ) $or $ $ [(localhost) ox-server-name] ox_launch client$ + (This command launches ox server via ssh.) + (My hostname is set by the function gethostname.) (Example 1: ) - $ [(tau.math.kobe-u.ac.jp) (/home/taka/OpenXM/bin) $ - $ (/home/taka/OpenXM/src/ox_math/ox_math) (taka) (dc4.math.kobe-u.ac.jp) $ - $ ] ox_launch /@@@.oxmath set $ + $ [(orange2-clone) $ + $ (bin/ox_sm1) (taka)$ + $ ] ox_launch /@@@.oxsm1 set $ ]] putUsages [(ox_launch_nox) -[( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] ) +[( [remote-machine remote-ox-server-name remote-login-name] ) ( ox_launch_nox client ) (Example 1: ) - $ [(tau.math.kobe-u.ac.jp) (/home/taka/OpenXM/bin) $ - $ (/home/taka/OpenXM/src/ox_math/ox_math) (taka) (dc4.math.kobe-u.ac.jp) $ + $ [(tau.math.kobe-u.ac.jp) $ + $ (bin/ox_math) (taka) $ $ ] ox_launch_nox /@@@.oxmath set $ ]] putUsages @@ -438,10 +449,14 @@ ox.verbose { oxhelp } { } ifelse /data peer 1 get toString def /control peer 3 get toString def peer message - [oxpath.oxlog.xterm oxpath.ox ( -reverse -ox ) oxserver + [ + oxstart100 + @@@.quiet { ( -quiet ) } { } ifelse + Xm_noX { ( -nox ) } { } ifelse + ( -oxserver ) oxserver ( -e ) + ( -reverse ) ( -data ) data ( -control ) control pass [1 2] get - oxpath.null - ( &)] cat system-csh + ] cat execve [(oxCreateClient2) peer 0 pass 0 get] extension /my-peer set %% 0 means connect from only localhost. /arg1 my-peer def @@ -671,6 +686,7 @@ ox.verbose { oxhelp } { } ifelse oxstart100 @@@.quiet { ( -quiet ) } { } ifelse Xm_noX { ( -nox ) } { } ifelse + Xm_engineLogToStdout { ( -nox -engineLogToStdout ) } { } ifelse %bug.onlyForsm1 ( -oxserver bin/ox_sm1 -e ) ( -reverse ) ( -data ) data ( -control ) control pass [1 2] get ( )] cat execve @@ -1715,6 +1731,7 @@ oxasir.verbose { oxstart100 @@@.quiet { ( -quiet ) } { } ifelse Xm_noX { ( -nox ) } { } ifelse + Xm_engineLogToStdout { ( -nox -engineLogToStdout ) } { } ifelse %bug.onlyForasir ( -oxserver bin/ox_asir -e ) ( -reverse ) ( -data ) data ( -control ) control pass [1 2] get ( )] cat execve @@ -1826,4 +1843,83 @@ oxasir.verbose { ] pop popVariables arg1 -} def \ No newline at end of file +} def + +[[(lines),[10,-1]], + [(where),[(shell), (length)]], + [(reason_of_error), (invalid argument)]] +/i1 set +%% /translateErrorForCfep.sampleInput set + +[(translateErrorForCfep) +[ + (translate the error packet defined in ox-rfc-103 into series of commands for cfep.) +] +] putUsages +/translateErrorForCfep { + /arg1 set + [/ee /ans /tt /lf] pushVariables + [ + /ee arg1 def + { + ee etag 257 eq { + ee (body) dc 1 get /ee set + ee length 3 gt { + ee 3 get /ee set + }{ /ee [ ] def } ifelse + }{ } ifelse + ee etag 6 eq not { /ans [ ] def exit } { } ifelse + /ans [ ] def + /lf 12 (string) dc def % line feed. + + ee (lines) getNode /tt set + tt tag 0 eq { + ee (parse_error_at) getNode /tt set + } { } ifelse + tt isArray { + tt length 0 gt { + ans + [(gotoLine, ) tt 0 get toString nl lf] join /ans set + }{ } ifelse + } { } ifelse + tt isInteger { + [(gotoLine, ) tt toString nl lf] join /ans set + } { } ifelse + + ee (where) getNode /tt set + tt isArray { + tt length 0 gt { + ans + [(findAndSelect, ) tt 0 get (string) dc nl lf] join /ans set + }{ } ifelse + } { } ifelse + + ee (reason_of_error) getNode /tt set + tt tag 0 eq { + ee (reason_of_parse_error) getNode /tt set + } { } ifelse + tt tag 0 eq not { + ans [(printErrorMessage, ) tt (string) dc nl lf] join /ans set + %% translation and encoding is necessary. + }{ } ifelse + + exit + } loop + ans cat /arg1 set + ] pop + popVariables + arg1 +} def + +/oxclearstack { + /arg1 set + [/cl /n] pushVariables + [ + /cl arg1 def + cl oxgetsp /n set + n tag 0 eq { /n 0 def } { } ifelse + n tag 15 eq { n (integer) dc /n set } { } ifelse + cl n oxpops pop + ] pop + popVariables +} def