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

Diff for /OpenXM/src/kan96xx/Doc/ox.sm1 between version 1.3 and 1.22

version 1.3, 1999/11/03 00:45:43 version 1.22, 2003/01/01 02:03:41
Line 1 
Line 1 
 %%%%%%%%%%%  $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.2 1999/11/01 03:49:47 takayama Exp $  %%%%%%%%%%%  $OpenXM: OpenXM/src/kan96xx/Doc/ox.sm1,v 1.21 2002/11/08 14:18:00 takayama Exp $
   
   /ox.sm1.loaded 1 def
 %%%%%%%%%%%% Configuration: Specify your server path  %%%%%%%%%%%% Configuration: Specify your server path
 %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz  %%%%% ox, ox_sm1, oxlog are contained in kxx.tgz
 %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH  %%%%% These should be under /usr/local/lib/sm1 or LOAD_SM1_PATH
Line 7 
Line 9 
 /oxpath.oxlog (bin/oxlog) def  /oxpath.oxlog (bin/oxlog) def
 /oxpath.xterm (/usr/X11R6/bin/xterm  -icon  -e ) def  /oxpath.xterm (/usr/X11R6/bin/xterm  -icon  -e ) def
 /oxpath.null  (  ) def  /oxpath.null  (  ) def
 /oxpath.null00  ( >& /dev/null ) def   %% cf oxNoX  /oxpath.null00  ( >& /dev/null ) def  %%cf. oxNoX
   /oxpath.null00-pure-sh ( 2>&1 >/dev/null) def %%TODO:It does not work in our case
 %%%%%%%%%%%%%  The following is used only for sm1connectr-ssh.  %%%%%%%%%%%%%  The following is used only for sm1connectr-ssh.
 %%%%%%%%%%%%%  Configure path for ox and ox_sm1 on your remote machine.  %%%%%%%%%%%%%  Configure path for ox and ox_sm1 on your remote machine.
 /oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog /usr/X11R6/bin/xterm -icon -e ) def  /oxpath.oxlog.xterm-ssh (/home/taka/OpenXM/bin/oxlog /usr/X11R6/bin/xterm -icon -e ) def
Line 43 
Line 46 
    oxpath.oxlog.xterm message     oxpath.oxlog.xterm message
 } def  } def
   
 /ox.ccc.init { ox.ccc ( [(oxPrintMessage) 0] extension pop ) oxsubmit } def  /ox.ccc.init {
      ox.ccc ( [(oxPrintMessage) 0] extension pop ) oxsubmit
      (Ox103_loaded) boundp
      { ox.ccc ox103_sm1_init }
      { }  ifelse
   } def
   
 /ox.verbose 0   def  /ox.verbose 0   def
 /ox.version (2.981105) def  /ox.version (2.981105) def
Line 52  ox.version [(Version)] system_variable gt 
Line 60  ox.version [(Version)] system_variable gt 
   (Please get it from http://www.math.kobe-u.ac.jp/KAN) message    (Please get it from http://www.math.kobe-u.ac.jp/KAN) message
   error    error
 } { } ifelse  } { } ifelse
 (ox.sm1, --- open sm1 protocol module 10/1,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  /ox.ccc load isArray
 { }  { }
Line 72  ox.version [(Version)] system_variable gt 
Line 80  ox.version [(Version)] system_variable gt 
   
 /SM_popCMO 262 def  /SM_popCMO 262 def
 /SM_executeFunction 269 def  /SM_executeFunction 269 def
 /SM_DUMMY_sendcmo  280 def  /SM_DUMMY_sendcmo   2147418112 1 add def    %%% SM_PRIVATE+1
 /SM_sync_ball 281 def  /SM_sync_ball 281 def
   
 /SM_pops  265  def  /SM_pops  265  def
Line 86  ox.version [(Version)] system_variable gt 
Line 94  ox.version [(Version)] system_variable gt 
   
 /SM_control_kill 1024 def  /SM_control_kill 1024 def
 /SM_control_reset_connection  1030 def  /SM_control_reset_connection  1030 def
   /SM_control_spawn_server  1027 def
   
 /Etag_error 257 def  /Etag_error 257 def
   
Line 139  ox.version [(Version)] system_variable gt 
Line 148  ox.version [(Version)] system_variable gt 
  (oxhelp for this message, [(oxWatch) client] extension to start a log.)   (oxhelp for this message, [(oxWatch) client] extension to start a log.)
  ([(oxSerial)] extension serial-number-of-out-going-ox-packet.)   ([(oxSerial)] extension serial-number-of-out-going-ox-packet.)
  (oxpopcmo1, oxpopcmo2,  sm1connect2, sm1connect3)   (oxpopcmo1, oxpopcmo2,  sm1connect2, sm1connect3)
  (sm1connectr )   (sm1connectr ox_launch, ox_launch_nox)
  (oxNoX : set an environment to invoke oxlog without xterm and to call oxlog with >& /dev/null)   (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 1.  (ox.sm1) run oxNoX sm1connectr $
  $        ex 2.  (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $   $        ex 2.  (oxasir.sm1) run oxNoX (x^2-1). fctr pmat ; $
  ]   ]
Line 160  ox.verbose { oxhelp } {  } ifelse
Line 170  ox.verbose { oxhelp } {  } ifelse
 /sm1connect2 {  /sm1connect2 {
  [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1   [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1
   oxpath.null    oxpath.null
   ( &)] cat system    ( &)] cat system-csh
 % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 &) system  % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 &) system
 % For MSRI, or Eterm,  % For MSRI, or Eterm,
 %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 &) system  %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 &) system
  (If you start the server automatically, you may have a trouble to) message   (If you start the server automatically, you may have a trouble to) message
  (oxreset. In order to avoid this trouble, start the server by hand.) message   (oxreset. In order to avoid this trouble, start the server by hand.) message
  (sleep 5) system   (sleep 5) system-csh
   [(localhost) 1300 1200] oxconnect /ox.ccc set    [(localhost) 1300 1200] oxconnect /ox.ccc set
  (The server is binded to the variable ox.ccc) message   (The server is binded to the variable ox.ccc) message
  ox.ccc.init   ox.ccc.init
Line 176  ox.verbose { oxhelp } {  } ifelse
Line 186  ox.verbose { oxhelp } {  } ifelse
  [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1   [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1
   (  -data 2300 -control 2200 )    (  -data 2300 -control 2200 )
   oxpath.null    oxpath.null
   ( &)] cat system    ( &)] cat system-csh
 % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system  % (kterm -iconic -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_sm1 -data 2300 -control 2200 &) system-csh
 % For MSRI  % For MSRI
 %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system  %(xterm -icon -e /u/nobuki/tmp/kxx/ox -ox /u/nobuki/tmp/Ox/ox_sm1 -data 2300 -control 2200&) system-csh
  (If you start the server automatically, you may have a trouble to) message   (If you start the server automatically, you may have a trouble to) message
  (oxreset. In order to avoid this trouble, start the server by hand.) message   (oxreset. In order to avoid this trouble, start the server by hand.) message
  (sleep 5) system   (sleep 5) system-csh
   [(localhost) 2300 2200] oxconnect /ox.ccc2 set    [(localhost) 2300 2200] oxconnect /ox.ccc2 set
  (The server is binded to the variable ox.ccc2) message   (The server is binded to the variable ox.ccc2) message
 } def  } def
Line 193  ox.verbose { oxhelp } {  } ifelse
Line 203  ox.verbose { oxhelp } {  } ifelse
  [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1   [oxpath.oxlog.xterm   oxpath.ox ( -ox ) oxpath.oxsm1
   ( -portfile ) ox.ccc.portfile    ( -portfile ) ox.ccc.portfile
   oxpath.null    oxpath.null
   ( &)] cat system    ( &)] cat system-csh
  (sleep 5) system   (sleep 5) system-csh
  [(oxReadPortFile) ox.ccc.portfile] extension /ox.ccc.control set   [(oxReadPortFile) ox.ccc.portfile] extension /ox.ccc.control set
  ox.ccc.control message   ox.ccc.control message
  [(localhost) ox.ccc.control 1200] /ox.ccc set   [(localhost) ox.ccc.control 1200] /ox.ccc set
Line 354  ox.verbose { oxhelp } {  } ifelse
Line 364  ox.verbose { oxhelp } {  } ifelse
 /oxreset {  /oxreset {
   /arg1 set    /arg1 set
   [(oxReq) arg1 SM_control_reset_connection] extension pop    [(oxReq) arg1 SM_control_reset_connection] extension pop
   [(oxGetFromControl) arg1 ] extension pop  %%  [(oxGetFromControl) arg1 ] extension pop
   [(oxGet) arg1] extension message    [(oxGet) arg1] extension message
 } def  } def
   
Line 484  def
Line 494  def
   /exhausted 0 def    /exhausted 0 def
   % clear the busy flag.    % clear the busy flag.
   /busy [1 1 enginesN { pop 0 } for ] def    /busy [1 1 enginesN { pop 0 } for ] def
   (date) system    (date) system-csh
   {{    {{
   exhausted 0 eq {    exhausted 0 eq {
     0 1 enginesN 1 sub {      0 1 enginesN 1 sub {
Line 513  def
Line 523  def
     } { } ifelse      } { } ifelse
   } for    } for
   } loop } timer    } loop } timer
   (date) system    (date) system-csh
   (result is in result) message    (result is in result) message
   (Number of s-pairs checked is ) messagen result length message    (Number of s-pairs checked is ) messagen result length message
 } def  } def
Line 585  ox.verbose {
Line 595  ox.verbose {
  [oxpath.oxlog.xterm  oxpath.ox ( -reverse -ox ) oxpath.oxsm1   [oxpath.oxlog.xterm  oxpath.ox ( -reverse -ox ) oxpath.oxsm1
   ( -data ) data ( -control ) control  ( -pass ) pass    ( -data ) data ( -control ) control  ( -pass ) pass
   oxpath.null    oxpath.null
   ( &)] cat system    ( &)] cat system-csh
  [(oxCreateClient2) peer 0 pass] extension /ox.ccc set   [(oxCreateClient2) peer 0 pass] extension /ox.ccc set
                      %% 0 means connect from only localhost.                       %% 0 means connect from only localhost.
  (The server is binded to the variable ox.ccc) message   (The server is binded to the variable ox.ccc) message
Line 617  ox.verbose {
Line 627  ox.verbose {
  ] cat /comm set   ] cat /comm set
  (Executing the command : ) messagen comm message message   (Executing the command : ) messagen comm message message
   comm system    comm system
  (sleep 5) system   (sleep 5) system-csh
  [(oxCreateClient2) peer 1 pass] extension /your-peer set   [(oxCreateClient2) peer 1 pass] extension /your-peer set
  /arg1 your-peer def   /arg1 your-peer def
  ] pop   ] pop
Line 695  ox.verbose {
Line 705  ox.verbose {
        } { } ifelse         } { } ifelse
      } {  } ifelse       } {  } ifelse
   
        %% Else first try to find it in OpenXM_HOME
        [(getenv) (OpenXM_HOME)] extension /tname set
        tname isString
        {
          tname addSlash /tname set
          [tname (lib/sm1/)] cat /tname set
          [(stat) [tname fname] cat] extension
          0 get isInteger  %% The file was found.
          {  /fullname [tname fname] cat def
             /getPathNameSm1.LLL goto
          } { } ifelse
        } {  } ifelse
   
      %% Else try to find it in /usr/local/lib/sm1       %% Else try to find it in /usr/local/lib/sm1
      [(stat) [(/usr/local/lib/sm1/) fname] cat] extension       [(stat) [(/usr/local/lib/sm1/) fname] cat] extension
      0 get isInteger  %% The file was found.       0 get isInteger  %% The file was found.
Line 705  ox.verbose {
Line 728  ox.verbose {
      %% Otherwise error.       %% Otherwise error.
        [(getPathNameSm1: The file ) fname         [(getPathNameSm1: The file ) fname
         ( could not be found )          ( could not be found )
         (neigher in LOAD_SM1_PATH=)          (neigher in LOAD\_SM1\_PATH=)
         [(getenv) (LOAD_SM1_PATH)] extension          [(getenv) (LOAD_SM1_PATH)] extension
           ( nor in OpenXM\_HOME/lib/sm1=)
           [(getenv) (OpenXM_HOME)] extension
           (/lib/sm1)
         ( nor in /usr/local/lib/sm1)          ( nor in /usr/local/lib/sm1)
        ] cat /getPathNameSm1.errorMessage set         ] cat /getPathNameSm1.errorMessage set
        getPathNameSm1.errorMessage message         getPathNameSm1.errorMessage message
Line 721  ox.verbose {
Line 747  ox.verbose {
 [(getPathNameSm1)  [(getPathNameSm1)
 [([fname] getPathNameSm1 fullname)  [([fname] getPathNameSm1 fullname)
  (string fname, fullname)   (string fname, fullname)
  (This command searches the fname in /usr/local/lib/sm1 and LOAD_SM1_PATH)   (This command searches the fname in LOAD_SM1_PATH, )
  (and returns the fullname.)   (OpenXM_HOME/lib/sm1, and /usr/local/lib/sm1)
    (It returns the fullname.)
 ]] putUsages  ]] putUsages
   
 /getPathNameAsir {  /getPathNameAsir {
Line 737  ox.verbose {
Line 764  ox.verbose {
         /getPathNameAsir.LLL goto          /getPathNameAsir.LLL goto
      } { } ifelse       } { } ifelse
   
      %% Else first try to find it in /usr/local/lib/asir  
      [(stat) [(/usr/local/lib/asir/) fname] cat] extension  
      0 get isInteger  %% The file was found.  
      {  /fullname [(/usr/local/lib/asir/) fname] cat def  
         /getPathNameAsir.LLL goto  
      } { } ifelse  
   
      %% Else try to find it in ASIR_LIBDIR       %% Else try to find it in ASIR_LIBDIR
      [(getenv) (ASIR_LIBDIR)] extension /tname set       [(getenv) (ASIR_LIBDIR)] extension /tname set
      tname isString       tname isString
Line 756  ox.verbose {
Line 776  ox.verbose {
   
      } {  } ifelse       } {  } ifelse
   
        %% Else try to find it in /usr/local/lib/asir
        [(stat) [(/usr/local/lib/asir/) fname] cat] extension
        0 get isInteger  %% The file was found.
        {  /fullname [(/usr/local/lib/asir/) fname] cat def
           /getPathNameAsir.LLL goto
        } { } ifelse
   
      %% Otherwise error.       %% Otherwise error.
        [ (getPathNameAsir: The file )  fname         [ (getPathNameAsir: The file )
             fname  (ox_asir) eq
             {(ox\_asir)} { fname }ifelse
        ( could not be found )         ( could not be found )
        (neigher in /usr/local/lib/asir nor in ASIR_LIBDIR. )         (neigher in /usr/local/lib/asir nor in ASIR\_LIBDIR. )
        ] cat /getPathNameAsir.errorMessage set         ] cat /getPathNameAsir.errorMessage set
        getPathNameAsir.errorMessage message         getPathNameAsir.errorMessage message
      ] pop popVariables getPathNameAsir.errorMessage error       ] pop popVariables getPathNameAsir.errorMessage error
Line 778  ox.verbose {
Line 807  ox.verbose {
 ]] putUsages  ]] putUsages
   
   
   /ox_launch_nox {
     /@@@.ox_launch_nox  1 def
     ox_launch_aux
   } def
   /ox_launch {
     /@@@.ox_launch_nox  0 def
     ox_launch_aux
   } def
   
 initializePathNamesForOx  %% This should be  /ox_launch_aux {
    /arg1 set
    [/in-launch_nox /pass /peer /data /control /name /machine
     /your-peer /comm /remoteOpenXMbin /remoteServer /myhost
     /argNumber /aaa
    ] pushVariables
    [
      /aaa arg1 def
      /argNumber aaa length def
      /machine aaa 0 get def
      machine (localhost) eq argNumber 5 lt and {
        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
      } ifelse
   
      /pass [(oxGenPass)] extension 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 ) pass
     oxpath.null
     ( ")
    ] cat /comm set
    (Executing the command : ) messagen comm message message
     comm system
    (sleep 5) system-csh
    [(oxCreateClient2) peer 1 pass] extension /your-peer set
    /LLL.end
    /arg1 your-peer def
    ] pop
    popVariables
    arg1
   } def
   
   [(ox_launch)
   [( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] )
    (  ox_launch  client )
    $or $
    $ [(localhost) ox-server-name] ox_launch 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) $
    $ ] ox_launch /@@@.oxmath set $
   ]] putUsages
   
   [(ox_launch_nox)
   [( [remote remote-OpenXM-bin remote-ox-server remote-login-name myhostname] )
    (  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) $
    $ ] ox_launch_nox /@@@.oxmath set $
   ]] putUsages
   
   /system-csh {
     /arg1 set
     [/in-system-csh /com /com2] pushVariables
     [
       /com arg1 def
       [(/bin/csh -c ") com (")] cat
       /com2 set
       %%com2 message
       com2 system
     ] pop
     popVariables
   } def
   
   /ox_launch_localhost {
    /arg1 set
    [/in-ox_launch_localhost /pass /peer /data /control /oxserver
     /my-peer] pushVariables
    [
       /oxserver arg1 def
       /pass [(oxGenPass)] extension def
       /peer [(oxGetPort) (localhost)] extension def
       /data peer 1 get toString def
       /control peer 3 get toString def
       peer message
       [oxpath.oxlog.xterm  oxpath.ox ( -reverse -ox ) oxserver
        ( -data ) data ( -control ) control  ( -pass ) pass
         oxpath.null
        ( &)] cat system-csh
       [(oxCreateClient2) peer 0 pass] extension /my-peer set
                            %% 0 means connect from only localhost.
       (The server is binded to the variable ox.ccc) message
       /arg1 my-peer def
    ] pop
    popVariables
    arg1
   } def
   
   %% Test code for oxCreateControl_RFC_101
   /sm1StartControl101 {
    [/in-sm1connectr /pass /peer /data /control ] pushVariables
    [
    /pass [(oxGenPass)] extension def
    /peer [(oxGetPort1) (localhost)] extension def
    /data peer 1 get toString def
    peer message
    [(/home/nobuki/OpenXM/src/oxc/oxc)
     ( -c ) pass ( -h ) (localhost) ( -p ) data ( -x )
     oxpath.null
     ( &)] cat system-csh
   
    [(oxCreateControl_RFC_101) peer 0 pass] extension /ox.ccc set
                        %% 0 means connect from only localhost.
    (The server is binded to the variable ox.ccc) message
     ox.ccc
    ] pop
    popVariables
   } def
   
   /sm1StartEngine101 {
    [/in-sm1StartEngine101 /peer /data /control /engineID] pushVariables
    [
       /peer [(oxGetPort1) (localhost)] extension def
       /data peer 1 get def
   
       ox.ccc data oxpushcmo
       ox.ccc (/home/nobuki/OpenXM/bin/ox_sm1) oxpushcmo
       [(oxPushCMD) ox.ccc SM_control_spawn_server] extension
       ox.ccc oxpopcmo /engineID set
       [(oxCreateEngine_RFC_101) peer 0 (Empty) engineID] extension
       /ox.ddd set
       (The engine is binded to the variables ox.ddd) message
    ] pop
    popVariables
    arg1
   } def
   
   /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
   
   /oxrpc2 {
     /arg2 set
     /arg1 set
    [/in-oxrpc2 /pid /n /comm /i] pushVariables
    [
      /pid arg1 def
      /comm arg2 def
      /n comm length def
      n 1 sub -1 1 {
          /i set
          pid comm i get oxsendcmo
      } for
      pid n 1 sub oxsendcmo
      pid comm 0 get oxexec
    ] pop
    popVariables
   } def
   
   [(oxrpc2)
     [(Remote procedure call by using oxexec)
      (client [function-name  arg1 arg2 ...] oxrpc2 )
      (cf. ox-cmo-rpc in Risa/Asir)
      (Example: )
      $ (oxasir.sm1) run (x^2-1). fctr $
      (oxasir.ccc [(igcd) (6).. (10)..] oxrpc2)
      (oxasir.ccc oxpopcmo :: )
     ]
   ] putUsages
   
   
   [(ostype)] extension  0 get
   (windows) eq {
     (ox-win.sm1.loaded) boundp {
     }{
       [(parse) (ox-win.sm1) pushfile] extension
     } ifelse
   }{
     initializePathNamesForOx  %% This should be
   } ifelse

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.22

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