home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 033 / atcp40de.zip / CH_NFSCT < prev    next >
Text File  |  1994-10-15  |  8KB  |  347 lines

  1. /*
  2.  * ch_nfsctl - control options of the ch_nfsc NFS client
  3.  *
  4.  * call without args for usage
  5.  *
  6.  * $Id: ch_nfsctl.rexx,v 1.4 1994/08/06 12:52:35 alph Exp $
  7.  */
  8.  
  9. Options FailAt 100
  10. Options Results
  11.  
  12. PARSE ARG line
  13. PARSE VAR line device line
  14. device=upper(device)
  15.  
  16. IF (device='') | (line='') THEN do
  17.     CALL usage
  18.     EXIT 0
  19. END
  20.  
  21. PA.Die=""
  22. PA.GetAll=""
  23. PA.FlushDebug=""
  24.  
  25. PA.Debug=""
  26. PA.GetDebug=""
  27. PA.UMask=""
  28. PA.GetUMask=""
  29. PA.User=""
  30. PA.GetUser=""
  31. PA.MR=""
  32. PA.GetMR=""
  33. PA.MD=""
  34. PA.GetMD=""
  35. PA.MW=""
  36. PA.GetMW=""
  37. PA.WL=""
  38. PA.GetWL=""
  39. PA.ACTO=""
  40. PA.GetACTO=""
  41. PA.DCTO=""
  42. PA.GetDCTO=""
  43. PA.RPCTO=""
  44. PA.GetRPCTO=""
  45. PA.TR=""
  46. PA.GetTR=""
  47. PA.SM=""
  48. PA.GetSM=""
  49. PA.ARPC=""
  50. PA.GetARPC=""
  51.  
  52. DO FOREVER
  53.     IF line = '' THEN LEAVE
  54.     PARSE VAR line tok line
  55.     IF tok ~='' THEN DO
  56.     tok=UPPER(tok)
  57.     SELECT
  58.         WHEN tok=SET_DEBUG THEN PARSE VAR line PA.Debug line
  59.         WHEN tok=get_debug THEN PA.GetDebug=1
  60.         WHEN tok=set_umask THEN PARSE Var line PA.UMask line
  61.         WHEN tok=get_umask THEN PA.GetUMask=1
  62.         WHEN tok=set_user THEN PARSE VAR line PA.User line
  63.         WHEN tok=get_user THEN PA.GetUser=1
  64.         WHEN tok=set_MAX_readsize THEN PARSE VAR line PA.MR line
  65.         WHEN tok=set_MR THEN PARSE VAR line PA.MR line
  66.         WHEN tok=get_MAX_readsize THEN PA.GetMR=1
  67.         WHEN tok=get_mr THEN PA.GetMR=1
  68.         WHEN tok=set_MAX_readdirsize THEN PARSE VAR line PA.MD line
  69.         WHEN tok=set_MD THEN PARSE VAR line PA.MD line
  70.         WHEN tok=get_MAX_readdirsize THEN PA.GetMD=1
  71.         WHEN tok=get_md THEN PA.GetMD=1
  72.         WHEN tok=set_MAX_writesize THEN PARSE VAR line PA.MW line
  73.         WHEN tok=set_MW THEN PARSE VAR line PA.MW line
  74.         WHEN tok=get_MAX_writesize THEN PA.GetMW=1
  75.         WHEN tok=get_mw THEN PA.GetMW=1
  76.         WHEN tok=set_wl THEN PARSE VAR line PA.WL line
  77.         WHEN tok=set_writebufferlimit THEN PARSE VAR line PA.WL line
  78.         WHEN tok=get_wl THEN PA.GetWL=1
  79.         WHEN tok=get_writebufferlimit THEN PA.GetWL=1
  80.         WHEN tok=set_attrcache_timeout THEN PARSE VAR line PA.ACTO line
  81.         WHEN tok=set_acto THEN PARSE VAR line PA.ACTO line
  82.         WHEN tok=get_attrcache_timeout THEN PA.GetACTO=1
  83.         WHEN tok=get_acto THEN PA.GetACTO=1
  84.         WHEN tok=set_dircache_timeout THEN PARSE VAR line PA.DCTO line
  85.         WHEN tok=set_dcto THEN PARSE VAR line PA.DCTO line
  86.         WHEN tok=get_dircache_timeout THEN PA.GetDCTO=1
  87.         WHEN tok=get_dcto THEN PA.GetDCTO=1
  88.         WHEN tok=set_rpc_timeout THEN PARSE VAR line PA.RPCTO line
  89.         WHEN tok=set_rpcto THEN PARSE VAR line PA.RPCTO line
  90.         WHEN tok=get_rpc_timeout THEN PA.GetRPCTO=1
  91.         WHEN tok=get_rpcto THEN PA.GetRPCTO=1
  92.         WHEN tok=set_timeoutreq then PARSE VAR line PA.TR line
  93.         WHEN tok=set_tr then PARSE VAR line PA.TR line
  94.         WHEN tok=get_timeoutreq then PA.GetTR=1
  95.         WHEN tok=get_tr then PA.GetTR=1
  96.         WHEN tok=set_slow_medium then PARSE VAR line PA.SM line
  97.         WHEN tok=set_sm then PARSE VAR line PA.SM line
  98.         WHEN tok=get_slow_medium then PA.GetSM=1
  99.         WHEN tok=get_sm then PA.GetSM=1
  100.         WHEN tok=set_arpc THEN PARSE VAR line PA.ARPC line
  101.         WHEN tok=set_async_rpc THEN PARSE VAR line PA.ARPC line
  102.         WHEN tok=get_arpc THEN PA.GetARPC=1
  103.         WHEN tok=set_async_rpc THEN PA.GetARPC=1
  104.         
  105.         WHEN tok=die THEN PA.die=1
  106.         WHEN tok=flush_debug THEN PA.FlushDebug=1
  107.         WHEN tok=get_all THEN PA.GetAll=1
  108.         OTHERWISE DO
  109.         CALL usage
  110.         EXIT 20
  111.         END
  112.     END
  113.     END
  114. END
  115.  
  116.  
  117. if ADDLIB("rexxsupport.library",0,-30,0)<0 THEN DO
  118.     SAY "Unable to load rexxsupport library!"
  119.     EXIT 20
  120. END
  121.  
  122. /* search for port of given device/volume */
  123.  
  124. found=0
  125. ports=showlist('P')
  126. DO FOREVER
  127.     IF ports='' THEN LEAVE
  128.     PARSE VAR ports port ports
  129.     port=UPPER(port)
  130.     if INDEX(port,CH_NFSC) = 1 THEN DO
  131.     ADDRESS VALUE port
  132.     get volume
  133.     ADDRESS
  134.     IF rc > 0 THEN DO
  135.         say 'Error was 'VALUE(PORT||.LASTERROR)
  136.     END
  137.     ELSE DO
  138.         thisdev=UPPER(result)
  139.         IF (thisdev = device) THEN do
  140.         found=i
  141.         LEAVE
  142.         END
  143.         ELSE DO
  144.         thisdev=thisdev || ':'
  145.         IF (thisdev = device) THEN do
  146.             found=i
  147.             LEAVE
  148.         END
  149.         END
  150.     end
  151.     END
  152. END
  153.  
  154. IF found=0 THEN DO 
  155.     SAY "Device" device "not found"
  156.     EXIT 20
  157. END; ELSE DO
  158.     nop
  159. /*    SAY "Using port """ || Port || """"*/
  160. END
  161.  
  162. IF PA.GetALL~='' THEN DO
  163.     /*
  164.     * Try to read all possible commands
  165.     */
  166.     
  167.     ADDRESS VALUE Port
  168.     get commands
  169.     ADDRESS
  170.     
  171.     gets=""
  172.     if rc > 0 then DO
  173.     say 'iocontrol: getting commands returned "'VALUE(PORT||.LASTERROR)'"'
  174.     EXIT 20
  175.     END
  176.     else DO
  177.     commands=result
  178.     DO FOREVER
  179.         PARSE VAR commands "(" cmdline ")" commands
  180.         IF cmd == '' THEN LEAVE
  181.         PARSE VAR cmdline cmd "," args
  182.         /*    SAY cmd*/
  183.         IF INDEX(args,"GET") THEN DO
  184.         gets = gets || " " || cmd
  185.         END
  186.     END
  187.     END
  188. END
  189.  
  190. /* treat all except 0 as 1 */
  191.  
  192. IF PA.TR~="" THEN
  193.     IF DATATYPE(PA.TR)=num THEN    do
  194.     IF PA.TR~=0 THEN
  195.         PA.TR=1
  196.     END; ELSE DO
  197.     PA.TR=1
  198.     END
  199. IF PA.SM~="" THEN
  200.     IF DATATYPE(PA.SM)=num THEN    do
  201.     IF PA.SM~=0 THEN
  202.         PA.SM=1
  203.     END; ELSE DO
  204.     PA.SM=1
  205.     END
  206.  
  207. /* now do the real work */
  208.     
  209. CALL setget port debug PA.Debug PA.GetDebug
  210. CALL setget port umask PA.UMask PA.GetUMask
  211. CALL setget port user PA.User PA.GetUser
  212. CALL setget port MAX_READSIZE PA.MR PA.GetMR
  213. CALL setget port MAX_READDIRSIZE PA.MD PA.GetMD
  214. CALL setget port MAX_WRITESIZE PA.MW PA.GetMW
  215. CALL setget port WRITEBUFFERLIMIT PA.WL PA.GetWL
  216. CALL setget port ATTRCACHE_TIMEOUT PA.ACTO PA.GetACTO
  217. CALL setget port DIRCACHE_TIMEOUT PA.DCTO PA.GetDCTO
  218. CALL setget port RPC_TIMEOUT PA.RPCTO PA.GetRPCTO
  219. CALL setget port TIMEOUTREQ PA.TR PA.GetTR
  220. CALL setget port SLOW_MEDIUM PA.SM PA.GetSM
  221. CALL setget port ASYNC_RPC PA.ARPC PA.GetARPC
  222.  
  223. IF PA.GetAll~="" THEN CALL get_all port gets 
  224. IF PA.FlushDebug~="" THEN CALL iocontrol port get debug
  225. IF PA.Die~="" THEN ADDRESS COMMAND "ch_die " device
  226. EXIT 0
  227.  
  228. setget: PROCEDURE
  229. DO
  230.     PARSE ARG port " " memb " " set " " get
  231.  
  232.     IF set ~= '' THEN DO
  233.     IF iocontrol(port "set" memb set) then
  234.         CALL io_get port memb
  235.     ELSE NOP
  236.     END; ELSE do
  237.     IF get~=""  THEN CALL io_get port memb
  238.     END
  239. RETURN
  240.  
  241. /*
  242.  *    get_all(port,gets)
  243.  *
  244.  * get all information from port. gets contains all get commands 
  245.  */
  246. get_all: PROCEDURE
  247. DO
  248.     PARSE ARG port x
  249.     SAY "Current settings:"
  250.     DO FOREVER
  251.     PARSE VAR x cmd x
  252.     IF cmd == '' then LEAVE
  253.     IF cmd ~= COMMANDS THEN DO
  254.         CALL io_get port cmd
  255.         END
  256.     END
  257. END
  258. RETURN
  259.  
  260. /* print formatted sting */
  261.  
  262. prints: PROCEDURE
  263. DO
  264.     PARSE ARG args
  265.     line=""
  266.     DO FOREVER
  267.     IF args='' THEN leave
  268.     PARSE VAR args str len args
  269.     l=LENGTH(str)
  270.     IF len < 0 THEN DO /* left aligned */
  271.         len=ABS(len)
  272.         IF l<= len then
  273.         line=line || str || COPIES(" ",(len-l)) || ""
  274.         ELSE
  275.         line=line || str
  276.     END; ELSE DO
  277.         IF l<=len THEN
  278.         line=line || COPIES(" ",(len-l)) || str
  279.         ELSE
  280.         line=line || str
  281.     END
  282.     END
  283.     SAY line
  284. END
  285. RETURN
  286.  
  287. usage: PROCEDURE
  288. do
  289.     SAY "Usage: ch_nfsctl <arguments>"
  290.     SAY "arguments:"
  291.     SAY "    DEVICE/A, GET_ALL/S, DIE/S, FLUSH_DEBUG/S,"
  292.     SAY "    SET_UMASK/K/N, GET_UMASK/S,"
  293.     SAY "    SET_DEBUG/K/N, GET_DEBUG/S,"
  294.     SAY "    SET_USER/K, GET_USER/S,"
  295.     SAY "    SET_MR=SET_MAX_READSIZE/K/N,     GET_MR=GET_MAX_READSIZE/S,"
  296.     SAY "    SET_MD=SET_MAX_READDIRSIZE/K/N,  GET_MD=GET_MAX_READDIRSIZE/S,"
  297.     SAY "    SET_MW=SET_MAX_WRITESIZE/K/N,    GET_MW=GET_MAX_WRITESIZE/S,"
  298.     SAY "    SET_WL=SET_WRITEBUFFERLIMIT/K/N, GET_WL=GET_WRITEBUFFERLIMIT/S,"
  299.     SAY "    SET_ACTO=SET_ATTRCACHE_TIMEOUT/K/N,GET_ACTO=GET_ATTRCACHE_TIMEOUT/S,"
  300.     SAY "    SET_DCTO=SET_DIRCACHE_TIMEOUT/K/N, GET_DCTO=GET_DIRCACHE_TIMEOUT/S,"
  301.     SAY "    SET_RPCTO=SET_RPC_TIMEOUT/K/N,     GET_RPCTO=GET_RPC_TIMEOUT/S,"
  302.     SAY "    SET_TR=SET_TIMEOUTREQ/K/N,  GET_TR=GET_TIMEOUTREQ/S,"
  303.     SAY "    SET_SM=SET_SLOW_MEDIUM/K/N, GET_SM=GET_SLOW_MEDIUM/S"
  304.     SAY "    SET_ARPC=SET_ASYNC_RPC/K/N, GET_ARPC=GET_ASYNC_RPC/S"
  305. END
  306. RETURN 
  307.  
  308. iocontrol: PROCEDURE
  309. DO
  310.     PARSE ARG port commands
  311.     
  312.     commands=strip(commands)
  313.     
  314.     ADDRESS Value Port
  315.     commands
  316.     ADDRESS
  317.     res=1
  318.     
  319.     if rc > 0 then DO
  320.     say "iocontrol:" '"'commands'"' "returned" '"'VALUE(PORT||.LASTERROR)'"'
  321.     res=0
  322.     END
  323. END
  324. RETURN res
  325.  
  326. io_get: PROCEDURE
  327. DO
  328.     PARSE ARG port cmd
  329.  
  330.     ADDRESS Value Port
  331.     get cmd
  332.     ADDRESS
  333.  
  334.     if rc > 0 then 
  335.     say "iocontrol:" '"'get cmd'"' "returned" '"'VALUE(PORT||.LASTERROR)'"'
  336.     else DO
  337.     res=result
  338.     PARSE VAR res minval val maxval rest
  339.     IF val = '' then
  340.         CALL prints cmd "-20" res 10
  341.     ELSE
  342.         CALL prints cmd "-20" val 10 '('||minval||'..'||maxval||')' 15
  343.     END
  344. END
  345. RETURN
  346.  
  347.