=================================================================== RCS file: /home/cvs/OpenXM/src/kan96xx/Doc/ox.sm1,v retrieving revision 1.15 retrieving revision 1.21 diff -u -p -r1.15 -r1.21 --- OpenXM/src/kan96xx/Doc/ox.sm1 2000/12/06 00:29:51 1.15 +++ OpenXM/src/kan96xx/Doc/ox.sm1 2002/11/08 14:18:00 1.21 @@ -1,4 +1,6 @@ -%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.14 2000/12/05 12:03:43 takayama Exp $ +%%%%%%%%%%% $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.20 2002/08/03 06:02:35 takayama Exp $ + +/ox.sm1.loaded 1 def %%%%%%%%%%%% Configuration: Specify your server path %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH @@ -53,7 +55,7 @@ ox.version [(Version)] system_variable gt (Please get it from http://www.math.kobe-u.ac.jp/KAN) message error } { } ifelse -(ox.sm1, --- open sm1 protocol module 11/11,1999 (C) N.Takayama. oxhelp for help) message-quiet +(ox.sm1, ---OpenXM protocol module 08/22, 2001 (C) N.Takayama. oxhelp for help) message-quiet /ox.ccc load isArray { } @@ -143,6 +145,7 @@ ox.version [(Version)] system_variable gt (oxpopcmo1, oxpopcmo2, sm1connect2, sm1connect3) (sm1connectr ox_launch, ox_launch_nox) (oxNoX : set an environment to invoke oxlog without xterm and to call oxlog with >& /dev/null) + (oxresetAll, oxIsInterruptable, [(oxGetClientList)] extension ) $ ex 1. (ox.sm1) run oxNoX sm1connectr $ $ ex 2. (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $ ] @@ -955,4 +958,158 @@ ox.verbose { arg1 } def -initializePathNamesForOx %% This should be +/OxWorkDirCreated false def +/oxWorkDir { + [/in-oxWorkDir /workHome /work] pushVariables + [ + [(getenv) (OpenXM_tmp)] extension tag 0 eq { + /workHome [ + [(getenv) (HOME)] extension + (/OpenXM_tmp) + ] cat def + }{ + /workHome + [(getenv) (OpenXM_tmp)] extension + def + }ifelse + /work [workHome (/) [(getpid)] extension toString] cat def + + OxWorkDirCreated not { + [(stat) workHome] extension 0 get tag 0 eq { + [(Working directory ) workHome ( will be created.)] cat + message + [(mkdir ) workHome] cat system + }{ + } ifelse + + [(stat) work] extension 0 get tag 0 eq { + [(Working directory ) work ( will be created.)] cat + message + [(mkdir ) work] cat system + }{ + } ifelse + /OxWorkDirCreated true def + }{ } ifelse + /arg1 work def + ] pop + popVariables + arg1 +} def +[(oxWorkDir) + [(oxWorkDir returns a name of working directory for OpenXM processes.) + (If the working direcotry does not exist, it creates ~/OpenXM_tmp/[pid].) + (The name can be changed by setting a value to the environmental variable) + (OpenXM_tmp. cf. oxNewFileName) + ] +] putUsages + +/OxFileName 0 def +/oxNewFileName { + [/in-oxNewFileName /name] pushVariables + [ + /name [(work) OxFileName toString] cat def + /OxFileName OxFileName 1 add def + /arg1 name def + ] pop + popVariables + arg1 +} def +[(oxNewFileName) + [(oxNewFileName returns a unique file name for a working file.) + (cf. oxWorkDir) + ] +] putUsages + +/ox_get_os { + [/in-ox_get_ox /os1 /os2] pushVariables + [ + /os1 [(ostype)] extension 0 get def + os1 (windows) eq { + [(getenv) (WINDOWID)] extension tag 0 eq not { + %% expect cygwin X + /os2 (xcygwin) def + }{ + [(getenv) (OSTYPE)] extension tag 0 eq not + [(getenv) (MACHTYPE)] extension tag 0 eq not or + [(getenv) (PWD)] extension tag 0 eq not or + { + %% expect cygwin environment + /os2 (cygwin) def + }{ + %% expect the native windows environment + /os2 (native) def + } ifelse + } ifelse + }{ + /os2 null def + } ifelse + /arg1 [os1 os2] def + ] pop + popVariables + arg1 +} def + +/ox.ostype ox_get_os def + +/ox_backslash_to_slash { + /arg1 set + [/in-ox_backslash_to_slash /sss ] pushVariables + [ + /sss arg1 def + sss (array) dc /sss set + sss { dup 92 eq { pop 47 } { } ifelse } map + { (string) dc } map cat /arg1 set + ] pop + popVariables + arg1 +} def +/ox_slash_to_backslash { + /arg1 set + [/in-ox_slash_to_backslash /sss ] pushVariables + [ + /sss arg1 def + sss (array) dc /sss set + sss { dup 47 eq { pop 92 } { } ifelse } map + { (string) dc } map cat /arg1 set + ] pop + popVariables + arg1 +} def + +/oxIsInterruptable { + /arg1 set % Client Object + [/in-ox_get_server_name /mcap /ans /sname] pushVariables + [ + /mcap arg1 def + /ans 0 def + mcap tag 6 eq { + mcap 10 get tag 6 eq { + mcap 10 get 1 get 0 get 1 get /sname set + }{ /sname ( ) def } ifelse + }{ + /sname ( ) def + } ifelse + (ox_sm1) sname isSubstr -1 eq { + } { /ans 1 def } ifelse + (ox_asir) sname isSubstr -1 eq { + } { /ans 1 def } ifelse + /arg1 ans def + ] pop + popVariables + arg1 +} def + +/oxresetAll { + [(oxGetClientList)] extension + { dup oxIsInterruptable { oxreset } { pop } ifelse } map +} def + +[(ostype)] extension 0 get +(windows) eq { + (ox-win.sm1.loaded) boundp { + }{ + [(parse) (ox-win.sm1) pushfile] extension + } ifelse +}{ + initializePathNamesForOx %% This should be +} ifelse