{**************************************************************************} { Author : Darrell C Olsen 6 Oct 99 } { dco@prismac.com } { } { This code is released under the GNU public license version 2 or later } { } {**************************************************************************} Program Mnt ( Input, Output ); FUNCTION RgParam ( iParam : integer; jParam : integer; pSdRet : adsmem ) : WORD; EXTERN; FUNCTION MountVolume ( pbDevSp : adsmem; cbDevSp : word; pbDevPw : adsmem; cdDevPw : word ) : WORD; EXTERN; FUNCTION DisMountVolume ( pbDevSp : adsmem; cbDevSp : word; pbDevPw : adsmem; cdDevPw : word ) : WORD; EXTERN; PROCEDURE Endxqq; EXTERN; CONST cInvCase = 'Invalid case : options are Mn - mount; Dm - dismount'; cInvDev = 'Param 1 - Invalid Device Name'; cNoMnt = 'Unable to mount volume'; cNoDMnt = 'Unable to dismount volume'; TYPE LST255 = LSTRING ( 255 ); VAR [PUBLIC] Opt : LST255; Dev : LST255; Pwd : LST255; PROCEDURE ErcAbort ( CONST Erc : WORD; CONST Msg : LSTRING ) [PUBLIC]; BEGIN WRITELN; IF ( Erc = -1 ) THEN WRITELN ( Msg ) ELSE WRITELN ( 'Erc = ', Erc, ' - ', Msg ); Endxqq; END; PROCEDURE VolMount [PUBLIC]; VAR Erc : WORD; BEGIN WRITE ( 'Mounting Volume ', Dev ); Erc := MountVolume ( ADS Dev[1], Dev.Len, ADS Pwd[1], Pwd.Len ); IF ( Erc <> 0 ) THEN ErcAbort ( Erc, cNoMnt ); WRITELN ( '...done' ); END; PROCEDURE VolDisMount [PUBLIC]; VAR Erc : WORD; BEGIN WRITE ( 'Dismounting Volume ', Dev ); Erc := DismountVolume ( ADS Dev[1], Dev.Len, ADS Pwd[1], Pwd.Len ); IF ( Erc <> 0 ) THEN ErcAbort ( Erc, cNoDMnt ); WRITELN ( '...done' ); END; FUNCTION GetParam ( CONST PrmIdx : WORD; CONST SPrmIdx : WORD; VARS PrmVal : LST255 ) : WORD [PUBLIC]; TYPE SDRec = RECORD pParam [0] : ADSMEM; sParam [4] : WORD; END; VAR lvErc : WORD; lvSD : SDRec; lvLStr : LSTRING(91); BEGIN lvErc := RgParam ( ORD ( PrmIdx ), ORD ( SPrmIdx ), ADS lvSD ); IF lvErc = 0 THEN BEGIN WITH lvSD DO BEGIN MOVESL ( pParam, ADS lvLStr[1], sParam ); lvLStr.LEN := sParam; END END; PrmVal := lvLStr; GetParam := lvErc; END; PROCEDURE Init [PUBLIC]; VAR Erc : word; BEGIN Erc := GetParam ( 0, 1, Opt ); IF ( Erc <> 0 ) THEN ErcAbort ( Erc, cInvCase ); Erc := GetParam ( 1, 0, Dev ); IF ( Erc <> 0 ) THEN ErcAbort ( Erc, cInvDev ); Erc := GetParam ( 2, 0, Pwd ); IF ( Erc <> 0 ) THEN Pwd.Len := 0; END; BEGIN Init; case Opt[1] of 'M' : VolMount; 'D' : VolDisMount; otherwise ErcAbort ( -1, cInvCase ); end; END.