Google
 

Trailing-Edge - PDP-10 Archives - DEC_CMS-20_V1.0_SRC - cms/sources/filusr.req
There are no other files named filusr.req in the archive.
! FILUSR.REQ  --  Declarations for the user of the FILOPS module.

!
!			COPYRIGHT (C) 1982 BY
!	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
!
! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
! INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
! COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
! TRANSFERRED.
!
! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
! AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
! CORPORATION.
!
! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
!

!++
! Facility:  CMS Library Processor
!
! Abstract:
!
!	This file contains declarations needed by the user of the routines
!	declared in FILOPS.  For example, there are declarations defining
!	the ACCESS_FULLWORD type of block, in which file protection codes are
!	represented.
!
! Environment:  Transportable
!
! Author:  Earl Van Horn	Creation Date:  December 27, 1979
!
!--
! This file assumes that the declaration
!
!	LIBRARY 'XPORT' ;
!
! or equivalent has already appeared in the program.



! The file protection codes for owner, group, or world are given to the PROTEC
! routine as a set of bits in a block called an access fullword.  An access
! fullword always fits in a BLISS fullword, so its value can be computed by
! an expression that ORs the desired one bits.
!
! On VAX/VMS, both write and append access are granted if either is
! requested, and the directory listing bits have no effect.
!
! On TOPS-20, both write and delete access are granted if either is
! requested.
!
! On TOPS-10, access is done very differently.  See the PROTEC
! routine for details.



! These literals may be used to compose any desired access fullword value.
!
literal
    k_r_access = 1 ^ 0,		! Grant read access.
    k_w_access = 1 ^ 1,		! Grant write access.
    k_e_access = 1 ^ 2,		! Grant execute access.
    k_d_access = 1 ^ 3,		! Grant delete access.
    k_a_access = 1 ^ 4,		! Grant append access.
    k_l_access = 1 ^ 5,		! Grant directory listing access.

    ! The following bits are allowed on only if the K_SAME_ACCESS bit is on.
    k_no_r_access = 1 ^ 8,	! Deny read access.
    k_no_w_access = 1 ^ 9,	! Deny write access.
    k_no_e_access = 1 ^ 10,	! Deny execute access.
    k_no_d_access = 1 ^ 11,	! Deny delete access.
    k_no_a_access = 1 ^ 12,	! Deny append access.
    k_no_l_access = 1 ^ 13,	! Deny directory listing access.

    ! The following bit means that the access fullword tells how to change the
    ! protection from what it otherwise would be.  If this bit is off, the
    ! "grant" bits define the protection completely.
    k_same_access = 1 ^ 15 ;



! The ACCESS_FULLWORD macro defines the bits in the access codes that are
! passed to the PROTEC routine.
!
macro
    access_fullword =
	block[k_acc_fullwords] field(acc_fields)
	% ;

! These are the declarations used in the access_fullword macro.
!
$field
    acc_fields =
	set	! ACC_FIELDS
	acc_set_bits = [$bits(6)],	! A one bit means grant the access.
	    $overlay(acc_set_bits)
	    acc_r_bit = [$bit],		! Grant read access.
	    acc_w_bit = [$bit],		! Grant write access.
	    acc_e_bit = [$bit],		! Grant execute access.
	    acc_d_bit = [$bit],		! Grant delete access.
	    acc_a_bit = [$bit],		! Grant append access.
	    acc_l_bit = [$bit],		! Grant directory listing access.
	    $continue
	acc_mustbezeroa = [$bits(2)],	! Two spare bits to align on a byte.
	acc_reset_bits = [$bits(6)],	! A one bit means deny the access, but
					! only if the ACC_SAME bit is one.  If
					! ACC_SAME is zero, the ACC_RESET_BITS
					! field must be zero.
	    $overlay(acc_reset_bits)
	    acc_no_r_bit = [$bit],	! Deny read access.
	    acc_no_w_bit = [$bit],	! Deny write access.
	    acc_no_e_bit = [$bit],	! Deny execute access.
	    acc_no_d_bit = [$bit],	! Deny delete access.
	    acc_no_a_bit = [$bit],	! Deny append access.
	    acc_no_l_bit = [$bit],	! Deny directory listing access.
	    $continue
	acc_mustbezerob = [$bit],	! One spare bit to align to the
					! PDP-11 sign bit.
	acc_same = [$bit]		! Means that the access block tells how
					! the protection code is to be changed
					! from what it otherwise would be, and
					! that ACC_RESET_BITS may be non-zero.
					! Otherwise, ACC_SET_BITS completely
					! defines the protection.
	tes ;	! ACC_FIELDS

literal
    k_acc_fullwords = $field_set_size,	! Fullwords in an access fullword block
    k_acc_units = $field_set_units ;	! Addressable units in same.

! The ACCESS_FULLWORD block must be a single fullword.
%if k_acc_fullwords neq 1
%then %error('Bad size for ACCESS_FULLWORDS.')
%fi

!
! The follow definition specifies an entry in the file ver stack.
! this is used primary by the wilds routine to force the search
! sequencing of the a file with multiple version number in descending
! sequence

$field
	fil_stk_ent =
			set

			sub_descriptor(name=filtxt)

			tes;

literal
	k_fil_stk_full = $field_set_size ;	! size of entry in fullword

! the following definition is for memory chain block used by wilds to
! remember the address of filename text blocks.

$field
	chn_blk =

			set

			txt_ptr = [$pointer],	! pointer to filename text block

			bw_lnk  = [$address]	! address of previous block

			tes ;

literal
	k_chn_blk_full = $field_set_size ;

! FILUSR.REQ  --  LAST LINE