10 ! ----- READ_UAF.FUN ----- ! ! ----- FUNCTION TO READ THE SYSUAF FILE TO VERIFY A USERNAME ----- ! ! ----- RETURNS FALSE IF PASSED USERNAME MATCHES A SYSUAF RECORD ----- ! ! ----- Last Change 05/01/89 by Brian Lomasky ----- ! ! ----- Teradyne, Inc., 179 Lincoln Street, Boston, MA 02111 ----- ! ----- (617) 482-2706, x3259 ----- ! ! ----- Neither Brian Lomasky nor Teradyne, Inc. implicitly or ----- ! ----- explicitly implies this program is usable in any way. ----- ! ----- This program is released to the public domain in an ----- ! ----- "AS-IS" condition. ----- ! ! ----- Restrictions: ----- ! ----- 1) Requires VAX BASIC V2.4 or later. ----- ! ----- 2) Calling program must have UAF Map defined ----- ! ----- 3) The SYSUAF.DAT file must have been already opened ----- ! ----- on BASIC I/O Channel #9 ----- ! FUNCTION WORD READ_UAF(STRING USERNAME_TO_CHECK) ! ----- COMMON CONSTANTS ----- DECLARE WORD CONSTANT TRUE = (1%=1%) DECLARE WORD CONSTANT FALSE = NOT TRUE ! ----- ERROR CODES RETURNED BY ERR ----- DECLARE WORD CONSTANT BUCKET_LOCKED = 154% DECLARE WORD CONSTANT END_OF_FILE = 11% DECLARE WORD CONSTANT REC_NOT_FOUND = 155% ! ----- MAP FOR SYSUAF.DAT DATA FILE ----- ! ----- (Calling program must have this UAF Map defined) ----- MAP (UAF) STRING UAF_REC = 1412% MAP (UAF) STRING FILL = 4%, & STRING USER_NAME_NO_TAG = 31%, & STRING USER_NAME_TAG = 1%, & WORD UIC1, & WORD UIC2 MAP (UAF) STRING FILL = 4%, & ! ----- USER_NAME IS THE PRIMARY ----- & ! ----- KEY (NO DUPLICATES, NO ----- & ! ----- CHANGES) ----- & STRING USER_NAME = 32%, ! ALJTB & ! ----- UIC IS THE ALTERNATE KEY ----- & ! ----- #1 (DUPLICATES, CHANGES) ----- & LONG UIC, & STRING FILL = 44%, & BYTE OWNER_NAME_LENGTH, & STRING OWNER_NAME = 31%, & STRING FILL = 352%, & BYTE FLAGS(3%) READ_UAF = TRUE ! ASSUME ERROR STATUS ON ERROR GOTO READ_UAF_ERROR ! ----- SEE IF USER NAME CAN NOT BE IN THE SYSUAF FILE ----- EXIT FUNCTION IF LEN(TRM$(USERNAME_TO_CHECK)) = 0% EXIT FUNCTION IF POS(TRM$(USERNAME_TO_CHECK), " ", 1%) > 0% EXIT FUNCTION IF POS(USERNAME_TO_CHECK, ".", 1%) > 0% USER_NAME = USERNAME_TO_CHECK GET #9%, KEY #0% GE USER_NAME, REGARDLESS EXIT FUNCTION IF TRM$(USER_NAME_NO_TAG) <> & TRM$(USERNAME_TO_CHECK) ! ----- INVALID USERNAME IF ACCOUNT IS DISUSER-ED ----- ! ----- (DISACNT) ----- EXIT FUNCTION IF (FLAGS(0%) AND 16%) = 16% READ_UAF = FALSE ! RETURN SUCCESS STATUS EXIT FUNCTION ! AND EXIT FUNCTION READ_UAF_ERROR: IF ERR = BUCKET_LOCKED THEN ! IF BUCKET IS LOCKED? SLEEP 1% RESUME END IF RESUME READ_UAF_EXIT IF ERR = REC_NOT_FOUND OR ERR = END_OF_FILE PRINT "Unexpected error from READ_UAF"; ERR; TIME$(0%) ON ERROR GO BACK READ_UAF_EXIT: END FUNCTION