USEREXCP860

(George Source)

Macros used: ADDMODE, ANSOK2, BRUSEN, CHEKPRIV, FJOCA, HUNT, JBC, MENDAREA, SEG, SEGENTRY, SETREP2, SPRIVJUMP, TESTMODE, TESTNAMX, TESTUSER, UP, UPPLUS

USEREXCP860.txt
22FL ...      SEG      USEREXCP,860,FILESTORE   
22^=    #   
23DW    #  THIS SEGMENT HOLDS EXCEPTION PATHS FROM USEROPEN AND OTHER   
23YG    #  SEGMENTS.
24D6    #   
24XQ          SEGENTRY K1USEREXCP,X1
257J ...      SEGENTRY K2USEREXCP,X2
25?F ...      SEGENTRY K3USEREXCP,X3
25CB    #   
25X2    #  THE X1 ENTRY CHECKS TO SEE IF THE CURRENT JOB MAY ACCESS A   
26BL    #  USER-FROZEN FILE OR DIRECTORY. IT SETS A SUITABLE REPLY(OK,FROZEN,   
26W=    #  OR NOFPRIV) AND EXITS UP+1 IF ACCESS ALLOWED, UP IF NOT ALLOWED. 
27*W    #   
27TG    PRIVFR         8HFREEZE            [FOR CHEKPRIV MACROS 
28*6    X1  
28G# ...      LDN   7  0                   [SHOW X1 ENTRY   
28MG ...X1X2COMMON  
28SQ          BRUSEN   NOJOB               [J IF NOT IN USER CONTEXT.   
29#B          FJOCA    3,2                 [X3->JOB BLOCK   
29S2          SPRIVJUMP JSSTART,3,UPPLUS1OK[ SYS STARTED JOB ALLOWED THRU   
2=3S ...      SPRIVJUMP JSISSUE,3,UPPLUS1OK [ LIKE WISE SYS ISSUED JOBS 
2=?L    NOJOB   
2=HD ...      BNZ   7  X2B                 [RETURN TO X2 COE IF X2 ENTRY
2=R=          HUNT     3,FILE,ADJUNCTS     [TEST IF USER HAS GIVEN 'FROZEN' 
2?=W                                       [QUALIFIER AND HAS FREEZE PRIV.  
2?QG ...      BNG   3  NOTOK1              [J IF NO QUALIFIERS  
2#=6          JBC      NOTOK1,3,BAFROZEN   [J IF NOT FROZEN QUALIFIER   
2#PQ          CHEKPRIV 0,PRIVFR,NOTOK2     [J IF DOES NOT HAVE PRIV.
2*9B    UPPLUS1OK   
2*P2          ANSOK2
2B8L          UPPLUS   1
2BN=    NOTOK1  
2C7W          SETREP2  FROZEN              [FILE FROZEN 
2CMG    UP    UP
2D76    NOTOK2  
2DLQ          SETREP2  NOFPRIV             [UNPRIVILEGED USE OF FROZEN QUAL 
2F6B          BRN      UP   
2FL2    #   
2G5L    #   
2G6X ...#  THE X2 ENTRY DOES THE SAME AS THE X1 ENTRY EXCEPT THAT A FILE ADJUNCT
2G88 ...#  BLOCK IS NOT REQUIRED BEFORE WE CHECK FOR THE FREEZE PRIVILEGE   
2G9F ...#   
2G=Q ...X2  
2G#3 ...      LDN   7  1                    [SHOW X2 ENTRY  
2G*# ...      BRN      X1X2COMMON          [OBEY X1 + X2 COMMON CODE
2GBK ...X2B                                [X2 ONLY CODE
2GCW ...      CHEKPRIV 0,PRIVFR,NOTOK1     [J IF DOES NOT HAVE PRIV 
2GF7 ...      BRN      UPPLUS1OK           [OTHERWISE OK
2GGD ...#   
2GHP ...#   
2GH^ ...#  THE X3 ENTRY IS CALLED BY USEROPEN WHEN A USER ATTEMPTS TO ACCESS A  
2GJ9 ...#  DIRECTORY (OTHER THAN FOR ERASING). IT CHECKS WHETHER THE USER IS
2GJF ...#  ONE OF THOSE NOMINATED BY THE RESTORE TIME MACRO 'READIR' TO HAVE
2GJP ...#  UNTRAPPED ACCESS TO ALL DIRECTORIES, AND ADDS IN THE 'UNTRAP'SUBMODE 
2GJ^ ...#  IF HE IS.
2GK9 ...#  IT ALSO CHECKS THAT EITHER   
2GKF ...#     1) THE OPERATION IS ALLOWED ON DIRECTORIES (SUBMODE 'DIRONLY' OR  
2GKP ...#        'TERMDIR' SET).
2GK^ ...#  OR 2) THE USER POSSESSES 'ASSIDIR' PRIVILEGE.
2GL9 ...#   
2GLF ...PRIV           8HASSIDIR           [USED BY CHEKPRIV
2GLP ...USERTABLE                          [TABLE OF 'READIR' TYPE USERS
2GL^ ...      SEGENTRY K55USEREXCP  
2GM9 ...               12HMANAGER   
2GMF ...      SEGENTRY K53USEREXCP  
2GMP ...#GAP  45
2GM^ ...#   
2GN9 ...X3  
2GNF ...      TESTMODE 5,XDIR,,FREEZE      [CAN'T FREEZE DIRS   
2GNP ...      TESTMODE AWORK1(2),XDIR,,SAVEFREEZE   
2GN^ ...      TESTMAIN 5,XDIR,,EXECUTE      [DIRS CANNOT BE LOADED OR EXECUTED  
2GP9 ...#   
2GPF ...#  WE GET A POINTER TO THE USERNAME AND CHECK TO SEE IF HE IS IN
2GPP ...#  THE READIR LIST. 
2GP^ ...#   
2GQ9 ...      BRUSEN   NOJOB2              [J IF NO JOB BLOCK   
2GQF ...      FJOCA    2,FX2               [X2->JOB BLOCK   
2GQP ...      BRN      TUSER
2GQ^ ...NOJOB2                             [IF THERE IS NO JOB BLOCK WE GET A   
2GR9 ...                                   [POINTER SUCH THAT JUSER(2) IS THE   
2GRF ...                                   [SAME AS CPREFIX(FX2).   
2GRP ...      ADN   2  CPREFIX-JUSER
2GR^ ...#   
2GS9 ...TUSER   
2GSF ...      SEGENTRY K54USEREXCP  
2GSP ...      LDN   4  K53USEREXCP-K55USEREXCP/3 [NO OF ENTRIES IN THE TABLE
2GS^ ...TESTUSER
2GT9 ...      TESTNAMX 3,USERTABLE(1),JUSER(2),NOTHIM [J IF NOT USER
2GTF ...      ADDMODE  5,UNTRAP            [ADD IN MODE 
2GTP ...      BRN      USEROK              [AND JUMP OUT OF LOOP
2GT^ ...NOTHIM  
2GW9 ...      ADN   1  3                  [UPDATE POINTER TABLE 
2GWF ...      BCT   4  TESTUSER            [LOOP IF MORE ENTRIES IN TABLE   
2GWP ...USEROK  
2GW^ ...      LDX   1  FX1                 [RESTORE OVERWRITTEN X1+2
2GX9 ...      LDX   2  FX2  
2GXF ...#   
2GXP ...#  NEXT WE CHECK THAT EITHER A DIRECTORY SUBMODE WAS GIVEN OR THE   
2GX^ ...#  USER HAS THE PRIVILEGE.  
2GY9 ...      TESTMODE 5,YDIROK,,DIRONLY,TERMDIR[J IF DIR SUBMODE   
2GYF ...      CHEKPRIV 0,PRIV,XDIR         [OTHERWISE MUST HAVE PRIVILEGE   
2GYP ...#   
2GY^ ...#  IF ALL IS WELL WE PUT THE (POSSIBLE AUGMENTED) MODE WORD INTO
2G^9 ...#  ACOMMUNE1 FOR THE CALLING CODE AND EXIT UPPLUS 1 
2G^F ...#   
2G^P ...YDIROK  
2G^^ ...      STO   5  ACOMMUNE1(2) 
2H29 ...      UPPLUS   1
2H2F ...#   
2H2P ...#  THE ERROR EXIT GOES UP.  
2H2^ ...#   
2H39 ...XDIR  UP
2H3F ...#   
2H3P ... MENDAREA 20,K99USEREXCP
2H4W    #   
2HJG    #END
^^^^ ...172244150001
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1