home *** CD-ROM | disk | FTP | other *** search
- /*
- * ch_nfsctl - control options of the ch_nfsc NFS client
- *
- * call without args for usage
- *
- * $Id: ch_nfsctl.rexx,v 1.4 1994/08/06 12:52:35 alph Exp $
- */
-
- Options FailAt 100
- Options Results
-
- PARSE ARG line
- PARSE VAR line device line
- device=upper(device)
-
- IF (device='') | (line='') THEN do
- CALL usage
- EXIT 0
- END
-
- PA.Die=""
- PA.GetAll=""
- PA.FlushDebug=""
-
- PA.Debug=""
- PA.GetDebug=""
- PA.UMask=""
- PA.GetUMask=""
- PA.User=""
- PA.GetUser=""
- PA.MR=""
- PA.GetMR=""
- PA.MD=""
- PA.GetMD=""
- PA.MW=""
- PA.GetMW=""
- PA.WL=""
- PA.GetWL=""
- PA.ACTO=""
- PA.GetACTO=""
- PA.DCTO=""
- PA.GetDCTO=""
- PA.RPCTO=""
- PA.GetRPCTO=""
- PA.TR=""
- PA.GetTR=""
- PA.SM=""
- PA.GetSM=""
- PA.ARPC=""
- PA.GetARPC=""
-
- DO FOREVER
- IF line = '' THEN LEAVE
- PARSE VAR line tok line
- IF tok ~='' THEN DO
- tok=UPPER(tok)
- SELECT
- WHEN tok=SET_DEBUG THEN PARSE VAR line PA.Debug line
- WHEN tok=get_debug THEN PA.GetDebug=1
- WHEN tok=set_umask THEN PARSE Var line PA.UMask line
- WHEN tok=get_umask THEN PA.GetUMask=1
- WHEN tok=set_user THEN PARSE VAR line PA.User line
- WHEN tok=get_user THEN PA.GetUser=1
- WHEN tok=set_MAX_readsize THEN PARSE VAR line PA.MR line
- WHEN tok=set_MR THEN PARSE VAR line PA.MR line
- WHEN tok=get_MAX_readsize THEN PA.GetMR=1
- WHEN tok=get_mr THEN PA.GetMR=1
- WHEN tok=set_MAX_readdirsize THEN PARSE VAR line PA.MD line
- WHEN tok=set_MD THEN PARSE VAR line PA.MD line
- WHEN tok=get_MAX_readdirsize THEN PA.GetMD=1
- WHEN tok=get_md THEN PA.GetMD=1
- WHEN tok=set_MAX_writesize THEN PARSE VAR line PA.MW line
- WHEN tok=set_MW THEN PARSE VAR line PA.MW line
- WHEN tok=get_MAX_writesize THEN PA.GetMW=1
- WHEN tok=get_mw THEN PA.GetMW=1
- WHEN tok=set_wl THEN PARSE VAR line PA.WL line
- WHEN tok=set_writebufferlimit THEN PARSE VAR line PA.WL line
- WHEN tok=get_wl THEN PA.GetWL=1
- WHEN tok=get_writebufferlimit THEN PA.GetWL=1
- WHEN tok=set_attrcache_timeout THEN PARSE VAR line PA.ACTO line
- WHEN tok=set_acto THEN PARSE VAR line PA.ACTO line
- WHEN tok=get_attrcache_timeout THEN PA.GetACTO=1
- WHEN tok=get_acto THEN PA.GetACTO=1
- WHEN tok=set_dircache_timeout THEN PARSE VAR line PA.DCTO line
- WHEN tok=set_dcto THEN PARSE VAR line PA.DCTO line
- WHEN tok=get_dircache_timeout THEN PA.GetDCTO=1
- WHEN tok=get_dcto THEN PA.GetDCTO=1
- WHEN tok=set_rpc_timeout THEN PARSE VAR line PA.RPCTO line
- WHEN tok=set_rpcto THEN PARSE VAR line PA.RPCTO line
- WHEN tok=get_rpc_timeout THEN PA.GetRPCTO=1
- WHEN tok=get_rpcto THEN PA.GetRPCTO=1
- WHEN tok=set_timeoutreq then PARSE VAR line PA.TR line
- WHEN tok=set_tr then PARSE VAR line PA.TR line
- WHEN tok=get_timeoutreq then PA.GetTR=1
- WHEN tok=get_tr then PA.GetTR=1
- WHEN tok=set_slow_medium then PARSE VAR line PA.SM line
- WHEN tok=set_sm then PARSE VAR line PA.SM line
- WHEN tok=get_slow_medium then PA.GetSM=1
- WHEN tok=get_sm then PA.GetSM=1
- WHEN tok=set_arpc THEN PARSE VAR line PA.ARPC line
- WHEN tok=set_async_rpc THEN PARSE VAR line PA.ARPC line
- WHEN tok=get_arpc THEN PA.GetARPC=1
- WHEN tok=set_async_rpc THEN PA.GetARPC=1
-
- WHEN tok=die THEN PA.die=1
- WHEN tok=flush_debug THEN PA.FlushDebug=1
- WHEN tok=get_all THEN PA.GetAll=1
- OTHERWISE DO
- CALL usage
- EXIT 20
- END
- END
- END
- END
-
-
- if ADDLIB("rexxsupport.library",0,-30,0)<0 THEN DO
- SAY "Unable to load rexxsupport library!"
- EXIT 20
- END
-
- /* search for port of given device/volume */
-
- found=0
- ports=showlist('P')
- DO FOREVER
- IF ports='' THEN LEAVE
- PARSE VAR ports port ports
- port=UPPER(port)
- if INDEX(port,CH_NFSC) = 1 THEN DO
- ADDRESS VALUE port
- get volume
- ADDRESS
- IF rc > 0 THEN DO
- say 'Error was 'VALUE(PORT||.LASTERROR)
- END
- ELSE DO
- thisdev=UPPER(result)
- IF (thisdev = device) THEN do
- found=i
- LEAVE
- END
- ELSE DO
- thisdev=thisdev || ':'
- IF (thisdev = device) THEN do
- found=i
- LEAVE
- END
- END
- end
- END
- END
-
- IF found=0 THEN DO
- SAY "Device" device "not found"
- EXIT 20
- END; ELSE DO
- nop
- /* SAY "Using port """ || Port || """"*/
- END
-
- IF PA.GetALL~='' THEN DO
- /*
- * Try to read all possible commands
- */
-
- ADDRESS VALUE Port
- get commands
- ADDRESS
-
- gets=""
- if rc > 0 then DO
- say 'iocontrol: getting commands returned "'VALUE(PORT||.LASTERROR)'"'
- EXIT 20
- END
- else DO
- commands=result
- DO FOREVER
- PARSE VAR commands "(" cmdline ")" commands
- IF cmd == '' THEN LEAVE
- PARSE VAR cmdline cmd "," args
- /* SAY cmd*/
- IF INDEX(args,"GET") THEN DO
- gets = gets || " " || cmd
- END
- END
- END
- END
-
- /* treat all except 0 as 1 */
-
- IF PA.TR~="" THEN
- IF DATATYPE(PA.TR)=num THEN do
- IF PA.TR~=0 THEN
- PA.TR=1
- END; ELSE DO
- PA.TR=1
- END
- IF PA.SM~="" THEN
- IF DATATYPE(PA.SM)=num THEN do
- IF PA.SM~=0 THEN
- PA.SM=1
- END; ELSE DO
- PA.SM=1
- END
-
- /* now do the real work */
-
- CALL setget port debug PA.Debug PA.GetDebug
- CALL setget port umask PA.UMask PA.GetUMask
- CALL setget port user PA.User PA.GetUser
- CALL setget port MAX_READSIZE PA.MR PA.GetMR
- CALL setget port MAX_READDIRSIZE PA.MD PA.GetMD
- CALL setget port MAX_WRITESIZE PA.MW PA.GetMW
- CALL setget port WRITEBUFFERLIMIT PA.WL PA.GetWL
- CALL setget port ATTRCACHE_TIMEOUT PA.ACTO PA.GetACTO
- CALL setget port DIRCACHE_TIMEOUT PA.DCTO PA.GetDCTO
- CALL setget port RPC_TIMEOUT PA.RPCTO PA.GetRPCTO
- CALL setget port TIMEOUTREQ PA.TR PA.GetTR
- CALL setget port SLOW_MEDIUM PA.SM PA.GetSM
- CALL setget port ASYNC_RPC PA.ARPC PA.GetARPC
-
- IF PA.GetAll~="" THEN CALL get_all port gets
- IF PA.FlushDebug~="" THEN CALL iocontrol port get debug
- IF PA.Die~="" THEN ADDRESS COMMAND "ch_die " device
- EXIT 0
-
- setget: PROCEDURE
- DO
- PARSE ARG port " " memb " " set " " get
-
- IF set ~= '' THEN DO
- IF iocontrol(port "set" memb set) then
- CALL io_get port memb
- ELSE NOP
- END; ELSE do
- IF get~="" THEN CALL io_get port memb
- END
- RETURN
-
- /*
- * get_all(port,gets)
- *
- * get all information from port. gets contains all get commands
- */
- get_all: PROCEDURE
- DO
- PARSE ARG port x
- SAY "Current settings:"
- DO FOREVER
- PARSE VAR x cmd x
- IF cmd == '' then LEAVE
- IF cmd ~= COMMANDS THEN DO
- CALL io_get port cmd
- END
- END
- END
- RETURN
-
- /* print formatted sting */
-
- prints: PROCEDURE
- DO
- PARSE ARG args
- line=""
- DO FOREVER
- IF args='' THEN leave
- PARSE VAR args str len args
- l=LENGTH(str)
- IF len < 0 THEN DO /* left aligned */
- len=ABS(len)
- IF l<= len then
- line=line || str || COPIES(" ",(len-l)) || ""
- ELSE
- line=line || str
- END; ELSE DO
- IF l<=len THEN
- line=line || COPIES(" ",(len-l)) || str
- ELSE
- line=line || str
- END
- END
- SAY line
- END
- RETURN
-
- usage: PROCEDURE
- do
- SAY "Usage: ch_nfsctl <arguments>"
- SAY "arguments:"
- SAY " DEVICE/A, GET_ALL/S, DIE/S, FLUSH_DEBUG/S,"
- SAY " SET_UMASK/K/N, GET_UMASK/S,"
- SAY " SET_DEBUG/K/N, GET_DEBUG/S,"
- SAY " SET_USER/K, GET_USER/S,"
- SAY " SET_MR=SET_MAX_READSIZE/K/N, GET_MR=GET_MAX_READSIZE/S,"
- SAY " SET_MD=SET_MAX_READDIRSIZE/K/N, GET_MD=GET_MAX_READDIRSIZE/S,"
- SAY " SET_MW=SET_MAX_WRITESIZE/K/N, GET_MW=GET_MAX_WRITESIZE/S,"
- SAY " SET_WL=SET_WRITEBUFFERLIMIT/K/N, GET_WL=GET_WRITEBUFFERLIMIT/S,"
- SAY " SET_ACTO=SET_ATTRCACHE_TIMEOUT/K/N,GET_ACTO=GET_ATTRCACHE_TIMEOUT/S,"
- SAY " SET_DCTO=SET_DIRCACHE_TIMEOUT/K/N, GET_DCTO=GET_DIRCACHE_TIMEOUT/S,"
- SAY " SET_RPCTO=SET_RPC_TIMEOUT/K/N, GET_RPCTO=GET_RPC_TIMEOUT/S,"
- SAY " SET_TR=SET_TIMEOUTREQ/K/N, GET_TR=GET_TIMEOUTREQ/S,"
- SAY " SET_SM=SET_SLOW_MEDIUM/K/N, GET_SM=GET_SLOW_MEDIUM/S"
- SAY " SET_ARPC=SET_ASYNC_RPC/K/N, GET_ARPC=GET_ASYNC_RPC/S"
- END
- RETURN
-
- iocontrol: PROCEDURE
- DO
- PARSE ARG port commands
-
- commands=strip(commands)
-
- ADDRESS Value Port
- commands
- ADDRESS
- res=1
-
- if rc > 0 then DO
- say "iocontrol:" '"'commands'"' "returned" '"'VALUE(PORT||.LASTERROR)'"'
- res=0
- END
- END
- RETURN res
-
- io_get: PROCEDURE
- DO
- PARSE ARG port cmd
-
- ADDRESS Value Port
- get cmd
- ADDRESS
-
- if rc > 0 then
- say "iocontrol:" '"'get cmd'"' "returned" '"'VALUE(PORT||.LASTERROR)'"'
- else DO
- res=result
- PARSE VAR res minval val maxval rest
- IF val = '' then
- CALL prints cmd "-20" res 10
- ELSE
- CALL prints cmd "-20" val 10 '('||minval||'..'||maxval||')' 15
- END
- END
- RETURN
-
-