Annotation of 43BSDTahoe/new/xns/courierlib/FilingSubset1.cr, revision 1.1.1.1

1.1       root        1: -- $Header: FilingSubset1.cr,v 2.7 87/03/23 13:07:15 ed Exp $
                      2: 
                      3: -- Copyright (c) 1986, 1987 Xerox Corp.
                      4: 
                      5: -- Note:  this is a TEST version of FilingSubset, and is not guaranteed to
                      6: -- match the official Xerox version at all.  It does seem to be adequate
                      7: -- for FTP, however.
                      8: 
                      9: -- $Log:       FilingSubset1.cr,v $
                     10: -- Revision 2.7  87/03/23  13:07:15  ed
                     11: -- Minor typo in SerializedTree.
                     12: -- 
                     13: -- Revision 2.6  87/03/23  11:49:45  ed
                     14: -- Slight mod to SerializedTree to allow current implementation.
                     15: -- 
                     16: -- Revision 2.5  87/01/12  16:48:15  ed
                     17: -- Created FilingSubset version 1 from Filing version 4
                     18: -- (Courier compiler doesn't allow the 'real' Courier definition so
                     19: -- this is a copy of complete Filing version 6)
                     20: --
                     21: -- Revision 2.2  86/06/30  11:31:13  jqj
                     22: -- convert to Authentication v 2 for compatibility with spec., now that
                     23: -- compiler allows it.
                     24: -- 
                     25: -- Revision 2.1  86/06/02  07:08:22  jqj
                     26: -- typos
                     27: -- 
                     28: -- Revision 2.0  85/11/21  07:22:38  jqj
                     29: -- 4.3BSD standard release
                     30: -- 
                     31: -- Revision 1.1  85/05/27  06:30:46  jqj
                     32: -- Initial revision
                     33: -- 
                     34: -- Revision 1.1  85/05/27  06:30:46  jqj
                     35: -- Initial revision
                     36: -- 
                     37: 
                     38: FilingSubset: PROGRAM 1500 VERSION 1 =
                     39: BEGIN
                     40:        DEPENDS UPON
                     41:                BulkData(0) VERSION 1,
                     42:                Clearinghouse(2) VERSION 3,
                     43:                Authentication(14) VERSION 3,
                     44:                Time(15) VERSION 2;
                     45: 
                     46: 
                     47: 
                     48: 
                     49: -- TYPES AND CONSTANTS --
                     50: 
                     51: -- Attributes (individual attributes defined later) --
                     52: 
                     53: AttributeType: TYPE = LONG CARDINAL;
                     54: AttributeTypeSequence: TYPE = SEQUENCE OF AttributeType;
                     55: allAttributeTypes: AttributeTypeSequence = [37777777777B];
                     56: Attribute: TYPE = RECORD [type: AttributeType, value: SEQUENCE OF UNSPECIFIED];
                     57: AttributeSequence: TYPE = SEQUENCE OF Attribute;
                     58: 
                     59: -- Controls --
                     60: 
                     61: ControlType: TYPE = {lockControl(0), timeoutControl(1), accessControl(2)};
                     62: ControlTypeSequence: TYPE = SEQUENCE 3 OF ControlType;
                     63: 
                     64: Lock: TYPE = {lockNone(0), share(1), exclusive(2)};
                     65: 
                     66: Timeout: TYPE = CARDINAL;      -- in seconds --
                     67: defaultTimeout: Timeout = 177777B;     -- actual value impl.-dependent --
                     68: 
                     69: AccessType: TYPE = {
                     70:        readAccess(0), writeAccess(1), ownerAccess(2),  -- all files --
                     71:        addAccess(3), removeAccess(4) };                -- directories only --
                     72: AccessSequence: TYPE = SEQUENCE 5 OF AccessType;
                     73: -- fullAccess: AccessSequence = [177777B]; --
                     74: 
                     75: Control: TYPE = CHOICE ControlType OF {
                     76:        lockControl => Lock,
                     77:        timeoutControl => Timeout,
                     78:        accessControl => AccessSequence};
                     79: ControlSequence: TYPE = SEQUENCE 3 OF Control;
                     80: 
                     81: -- Scopes --
                     82: 
                     83: Count: TYPE = CARDINAL;
                     84: unlimitedCount: Count = 177777B;
                     85: 
                     86: Depth: TYPE = CARDINAL;
                     87: allDescendants: Depth = 177777B;
                     88: 
                     89: Direction: TYPE = {forward(0), backward(1)};
                     90: 
                     91: Interpretation: TYPE = { interpretationNone(0), boolean(1), cardinal(2),
                     92:        longCardinal(3), time(4), integer(5), longInteger(6), string(7) };
                     93: FilterType: TYPE = {
                     94:        -- relations --
                     95:        less(0), lessOrEqual(1), equal(2), notEqual(3), greaterOrEqual(4),
                     96:        greater(5), 
                     97:        -- logical --
                     98:        and(6), or(7), not(8),
                     99:        -- constants --
                    100:        filterNone(9), all(10),
                    101:        -- patterns --
                    102:        matches(11) };
                    103: RestrictedFilter: TYPE = CHOICE FilterType OF {
                    104:        less, lessOrEqual, equal, notEqual, greaterOrEqual, greater =>
                    105:                RECORD [attribute: Attribute, interpretation: Interpretation],
                    106:                -- interpretation ignored if attribute interpreted by
                    107:                -- implementor
                    108:        -- NOT IMPLEMENTED: and, or, not --
                    109:        filterNone, all => RECORD [],
                    110:        matches => RECORD [attribute: Attribute] };
                    111: Filter: TYPE = CHOICE FilterType OF {
                    112:        less, lessOrEqual, equal, notEqual, greaterOrEqual, greater =>
                    113:                RECORD [attribute: Attribute, interpretation: Interpretation],
                    114:                -- interpretation ignored if attribute interpreted by
                    115:                -- implementor
                    116:        -- NOT YET IMPLEMENTED: (at least, not generally) and, or, not --
                    117:        and, or => SEQUENCE OF RestrictedFilter,
                    118:        not => RestrictedFilter,
                    119:        filterNone, all => RECORD [],
                    120:        matches => RECORD [attribute: Attribute] };
                    121: nullFilter: Filter = all[];
                    122:        
                    123: ScopeType: TYPE = { count(0), direction(1), filter(2), depth(3) };
                    124: Scope: TYPE = CHOICE ScopeType OF {
                    125:        count => Count,
                    126:        depth => Depth,
                    127:        direction => Direction,
                    128:        filter => Filter };
                    129: ScopeSequence: TYPE = SEQUENCE 4 OF Scope;
                    130: 
                    131: -- Handles and Authentication --
                    132: 
                    133: PrimaryCredentials: TYPE = Authentication.Credentials;
                    134: -- nullPrimaryCredentials: PrimaryCredentials = Authentication.nullCredentials;
                    135: 
                    136: -- Secondary credentials --
                    137: 
                    138: SecondaryItemType: TYPE = LONG CARDINAL;
                    139: SecondaryType: TYPE = SEQUENCE 10 OF SecondaryItemType;
                    140: 
                    141: SecondaryItem: TYPE = RECORD [
                    142:        type: SecondaryItemType,
                    143:        value: SEQUENCE OF UNSPECIFIED ];
                    144: 
                    145: Secondary: TYPE = SEQUENCE 10 OF SecondaryItem;
                    146: 
                    147: systemPassword: SecondaryItemType = 1;
                    148: SystemPassword : TYPE = STRING;                        -- value is private --
                    149: 
                    150: userName: SecondaryItemType = 2;
                    151: UserName: TYPE = STRING;                       -- value is not private --
                    152: 
                    153: userPassword: SecondaryItemType = 3;
                    154: UserPassword: TYPE = STRING;                   -- value is private --
                    155: 
                    156: userPassword2: SecondaryItemType = 4;
                    157: UserPassword2: TYPE = STRING;                  -- value is private --
                    158: 
                    159: userServiceName: SecondaryItemType = 5;
                    160: UserServiceName: TYPE = STRING;                        -- value is not private --
                    161: 
                    162: userServicePassword: SecondaryItemType = 6;
                    163: UserServicePassword: TYPE = STRING;            -- value is private --
                    164: 
                    165: userServicePassword2: SecondaryItemType = 7;
                    166: UserServicePassword2: TYPE = STRING;           -- value is private --
                    167: 
                    168: accountName: SecondaryItemType = 8;
                    169: AccountName: TYPE = STRING;                    -- value is not private --
                    170: 
                    171: accountPassword: SecondaryItemType = 9;
                    172: AccountPassword: TYPE = STRING;                        -- value is private --
                    173: 
                    174: accountPassword2: SecondaryItemType = 10;
                    175: AccountPassword2: TYPE = STRING;               -- value is private --
                    176: 
                    177: secondaryString: SecondaryItemType = 1000;
                    178: SecondaryString: TYPE = STRING;                        -- value is not private --
                    179: 
                    180: privateSecondaryString: SecondaryItemType = 1001;
                    181: PrivateSecondaryString: TYPE = STRING;         -- value is not private --
                    182: 
                    183: EncryptedSecondary: TYPE = SEQUENCE OF Authentication.Block;
                    184: 
                    185: Strength: TYPE = { strengthNone(0), simple(1), strong(2) };
                    186: SecondaryCredentials: TYPE = CHOICE Strength OF {
                    187:        strengthNone => RECORD [],
                    188:        simple => Secondary,
                    189:        strong => EncryptedSecondary };
                    190: 
                    191: Credentials: TYPE = RECORD [
                    192:        primary: PrimaryCredentials,
                    193:        secondary: SecondaryCredentials ];
                    194: 
                    195: Verifier: TYPE = Authentication.Verifier;
                    196: 
                    197: Handle: TYPE = ARRAY 2 OF UNSPECIFIED;
                    198: nullHandle: Handle = [0,0];
                    199: 
                    200: Session: TYPE = RECORD [token: ARRAY 2 OF UNSPECIFIED, verifier: Verifier ];
                    201: 
                    202: -- Random Access --
                    203: 
                    204: ByteAddress: TYPE = LONG CARDINAL;
                    205: ByteCount: TYPE = LONG CARDINAL;
                    206: endOfFile: LONG CARDINAL = 3777777777B; -- logical end of file --
                    207: 
                    208: ByteRange: TYPE = RECORD [ firstByte: ByteAddress, count: ByteCount ];
                    209: 
                    210: 
                    211: 
                    212: 
                    213: 
                    214: -- REMOTE ERRORS --
                    215: 
                    216: ArgumentProblem: TYPE = {
                    217:        illegal(0),
                    218:        disallowed(1),
                    219:        unreasonable(2),
                    220:        unimplemented(3),
                    221:        duplicated(4),
                    222:        missing(5) };
                    223: 
                    224: -- problem with an attribute type or value --
                    225: AttributeTypeError: ERROR [ problem: ArgumentProblem, type: AttributeType]
                    226:        = 0;
                    227: AttributeValueError: ERROR [ problem: ArgumentProblem, type: AttributeType]
                    228:        = 1;
                    229: 
                    230: -- problem with an control type or value --
                    231: ControlTypeError: ERROR [ problem: ArgumentProblem, type: ControlType]
                    232:        = 2;
                    233: ControlValueError: ERROR [ problem: ArgumentProblem, type: ControlType]
                    234:        = 3;
                    235: 
                    236: -- problem with an scope type or value --
                    237: ScopeTypeError: ERROR [ problem: ArgumentProblem, type: ScopeType]
                    238:        = 4;
                    239: ScopeValueError: ERROR [ problem: ArgumentProblem, type: ScopeType]
                    240:        = 5;
                    241: 
                    242: -- problem in obtaining access to a file --
                    243: AccessProblem: TYPE = {
                    244:        accessRightsInsufficient(0),
                    245:        accessRightsIndeterminate(1),
                    246:        fileChanged(2),
                    247:        fileDamaged(3),
                    248:        fileInUse(4),
                    249:        fileNotFound(5),
                    250:        fileOpen(6) };
                    251: AccessError: ERROR [problem: AccessProblem] = 6;
                    252: 
                    253: -- problem with a credentials or verifier --
                    254: AuthenticationProblem: TYPE = {
                    255:        primaryCredentialsInvalid(0),
                    256:        verifierInvalid(1),
                    257:        verifierExpired(2),
                    258:        verifierReused(3),
                    259:        primaryCredentialsExpired(4),
                    260:        inappropriatePrimaryCredentials(5),
                    261:        secondaryCredentialsRequired(6),
                    262:        secondaryCredentialsTypeInvalid(7),
                    263:        secondaryCredentialsValueInvalid(8) };
                    264: AuthenticationError: ERROR [problem: AuthenticationProblem,
                    265:                            type: SecondaryType] = 7;
                    266: 
                    267: -- problem with a BDT --
                    268: ConnectionProblem: TYPE = {
                    269:                -- communication problems --
                    270:        noRoute(0),
                    271:        noResponse(1),
                    272:        transmissionHardware(2),
                    273:        transportTimeout(3),
                    274:                -- resource problems --
                    275:        tooManyLocalConnections(4),
                    276:        tooManyRemoteConnections(5),
                    277:                -- remote program implementation problems --
                    278:        missingCourier(6),
                    279:        missingProgram(7),
                    280:        missingProcedure(8),
                    281:        protocolMismatch(9),
                    282:        parameterInconsistency(10),
                    283:        invalidMessage(11),
                    284:        returnTimedOut(12),
                    285:                -- miscellaneous --
                    286:        otherCallProblem(177777B) };
                    287: ConnectionError: ERROR [problem: ConnectionProblem] = 8;
                    288: 
                    289: -- problem with file handle --
                    290: HandleProblem: TYPE = {
                    291:        invalid(0),
                    292:        nullDisallowed(1),
                    293:        directoryRequired(2) };
                    294: HandleError: ERROR [problem: HandleProblem] = 9;
                    295: 
                    296: -- problem during insertion in directory or changing attributes --
                    297: InsertionProblem: TYPE = {
                    298:        positionUnavailable(0),
                    299:        fileNotUnique(1),
                    300:        loopInHierarchy(2) };
                    301: InsertionError: ERROR [problem: InsertionProblem] = 10;
                    302: 
                    303: -- problem during random access operation --
                    304: RangeError: ERROR [problem: ArgumentProblem] = 16;
                    305: 
                    306: -- problem during logon or logoff --
                    307: ServiceProblem: TYPE = {
                    308:        cannotAuthenticate(0),
                    309:        serviceFull(1),
                    310:        serviceUnavailable(2),
                    311:        sessionInUse(3) };
                    312: ServiceError: ERROR [problem: ServiceProblem] = 11;
                    313: 
                    314: -- problem with a session --
                    315: SessionProblem: TYPE = {
                    316:        tokenInvalid(0) };
                    317: SessionError: ERROR [problem: SessionProblem ] = 12;
                    318: 
                    319: -- problem obtaining space for file contents or attributes --
                    320: SpaceProblem: TYPE = {
                    321:        allocationExceeded(0),
                    322:        attributeAreaFull(1),
                    323:        mediumFull(2) };
                    324: SpaceError: ERROR [problem: SpaceProblem ] = 13;
                    325: 
                    326: -- problem during BDT --
                    327: TransferProblem: TYPE = {
                    328:        aborted(0),
                    329:        checksumIncorrect(1),
                    330:        formatIncorrect(2),
                    331:        noRendezvous(3),
                    332:        wrongDirection(4) };
                    333: TransferError: ERROR [problem: TransferProblem ] = 14;
                    334: 
                    335: -- some undefined (and implementation-dependent) problem occurred --
                    336: UndefinedProblem: TYPE = CARDINAL;
                    337: UndefinedError: ERROR [problem: UndefinedProblem ] = 15;
                    338: 
                    339: 
                    340: 
                    341: 
                    342: -- REMOTE PROCEDURES --
                    343: 
                    344: -- Logging On and Off --
                    345: 
                    346: Logon: PROCEDURE [
                    347:        service: Clearinghouse.Name, credentials: Credentials,
                    348:        verifier: Verifier ] 
                    349:        RETURNS [ session: Session ]
                    350:        REPORTS [ AuthenticationError, ServiceError, SessionError,
                    351:                UndefinedError ]
                    352:        = 0;
                    353: 
                    354: Logoff: PROCEDURE [ session: Session ]
                    355:        REPORTS [ AuthenticationError, ServiceError, SessionError,
                    356:                UndefinedError ]
                    357:        = 1;
                    358: 
                    359: Continue: PROCEDURE [ session: Session ]
                    360:        RETURNS [ continuance: CARDINAL ]
                    361:        REPORTS [ AuthenticationError, SessionError, UndefinedError ]
                    362:        = 19;
                    363: 
                    364: -- Opening and Closing Files --
                    365: 
                    366: Open: PROCEDURE [ attributes: AttributeSequence, directory: Handle,
                    367:                controls: ControlSequence, session: Session ]
                    368:        RETURNS [ file: Handle ]
                    369:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    370:                AuthenticationError, ControlTypeError, ControlValueError,
                    371:                HandleError, SessionError, UndefinedError ]
                    372:        = 2;
                    373: 
                    374: Close: PROCEDURE [ file: Handle, session: Session ]
                    375:        REPORTS [ AuthenticationError, HandleError, SessionError,
                    376:                UndefinedError ] 
                    377:        = 3;
                    378: 
                    379: -- Creating and Deleting Files --
                    380: 
                    381: Create: PROCEDURE [ directory: Handle, attributes: AttributeSequence,
                    382:                controls: ControlSequence, session: Session ]
                    383:        RETURNS [ file: Handle ]
                    384:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    385:                AuthenticationError, ControlTypeError, ControlValueError,
                    386:                HandleError, InsertionError, SessionError, SpaceError,
                    387:                UndefinedError ]
                    388:        = 4;
                    389: 
                    390: Delete: PROCEDURE [ file: Handle, session: Session ]
                    391:        REPORTS [ AccessError, AuthenticationError, HandleError, SessionError,
                    392:                UndefinedError ]
                    393:        = 5;
                    394: 
                    395: -- Getting and Changing Controls (transient) --
                    396: 
                    397: GetControls: PROCEDURE [ file: Handle, types: ControlTypeSequence,
                    398:                session: Session ]
                    399:        RETURNS [ controls: ControlSequence ]
                    400:        REPORTS [ AccessError, AuthenticationError, ControlTypeError,
                    401:                HandleError, SessionError, UndefinedError ]
                    402:        = 6;
                    403: 
                    404: ChangeControls: PROCEDURE [ file: Handle, controls: ControlSequence,
                    405:                session: Session ]
                    406:        REPORTS [ AccessError, AuthenticationError,
                    407:                ControlTypeError, ControlValueError,
                    408:                HandleError, SessionError, UndefinedError ]
                    409:        = 7;
                    410: 
                    411: 
                    412: -- Getting and Changing Attributes (permanent) --
                    413: 
                    414: GetAttributes: PROCEDURE [ file: Handle, types: AttributeTypeSequence,
                    415:                session: Session ]
                    416:        RETURNS [ attributes: AttributeSequence ]
                    417:        REPORTS [ AccessError, AttributeTypeError, AuthenticationError,
                    418:                HandleError, SessionError, UndefinedError ]
                    419:        = 8;
                    420: 
                    421: ChangeAttributes: PROCEDURE [ file: Handle, attributes: AttributeSequence,
                    422:                session: Session ]
                    423:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    424:                AuthenticationError, HandleError, InsertionError,
                    425:                SessionError, SpaceError, UndefinedError ]
                    426:        = 9;
                    427: 
                    428: UnifyAccessLists: PROCEDURE [ directory: Handle, session: Session ]
                    429:        REPORTS [ AccessError, AuthenticationError, HandleError, SessionError,
                    430:                UndefinedError ] 
                    431:        = 20;
                    432: 
                    433: -- Copying and Moving Files --
                    434: 
                    435: Copy: PROCEDURE [ file, destinationDirectory: Handle ,
                    436:                attributes: AttributeSequence, controls: ControlSequence,
                    437:                session: Session ]
                    438:        RETURNS [ newFile: Handle ]
                    439:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    440:                AuthenticationError, ControlTypeError, ControlValueError,
                    441:                HandleError, InsertionError, SessionError, SpaceError,
                    442:                UndefinedError ] 
                    443:        = 10;
                    444: 
                    445: Move: PROCEDURE [ file, destinationDirectory: Handle ,
                    446:                attributes: AttributeSequence, session: Session ]
                    447:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    448:                AuthenticationError, HandleError, InsertionError,
                    449:                SessionError, SpaceError, UndefinedError ] 
                    450:        = 11;
                    451: 
                    452: -- Transfering Bulk Data (File Content) --
                    453: 
                    454: Store: PROCEDURE [ directory: Handle, attributes: AttributeSequence,
                    455:                controls: ControlSequence, content: BulkData.Source,
                    456:                session: Session ]
                    457:        RETURNS [ file: Handle ]
                    458:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    459:                AuthenticationError, ConnectionError, ControlTypeError,
                    460:                ControlValueError, HandleError, InsertionError, SessionError,
                    461:                SpaceError, TransferError, UndefinedError ]
                    462:        = 12;
                    463: 
                    464: Retrieve: PROCEDURE [ file: Handle, content: BulkData.Sink, session: Session ]
                    465:        REPORTS [ AccessError, AuthenticationError, ConnectionError,
                    466:                HandleError, SessionError, TransferError,
                    467:                UndefinedError ]
                    468:        = 13;
                    469: 
                    470: Replace: PROCEDURE [ file: Handle,  attributes: AttributeSequence,
                    471:                content: BulkData.Source, session: Session ]
                    472:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    473:                AuthenticationError, ConnectionError, HandleError,
                    474:                SessionError, SpaceError, TransferError, UndefinedError ]
                    475:        = 14;
                    476: 
                    477: -- Transferring Bulk Data (Serialized Files) --
                    478: 
                    479: Serialize: PROCEDURE [ file: Handle, serializedFile: BulkData.Sink,
                    480:                session: Session ]
                    481:        REPORTS [ AccessError, AuthenticationError, ConnectionError,
                    482:                HandleError, SessionError, TransferError, UndefinedError ]
                    483:        = 15;
                    484: 
                    485: Deserialize: PROCEDURE [ directory: Handle, attributes: AttributeSequence,
                    486:                controls: ControlSequence, serializedFile: BulkData.Source,
                    487:                session: Session ]
                    488:        RETURNS [ file: Handle ]
                    489:        REPORTS [ AccessError, AttributeTypeError, AttributeValueError,
                    490:                AuthenticationError, ConnectionError, ControlTypeError,
                    491:                ControlValueError, HandleError, InsertionError,
                    492:                SessionError, SpaceError, TransferError, UndefinedError ]
                    493:        = 16;
                    494: 
                    495: -- Random Access to File Data --
                    496: 
                    497: RetrieveBytes: PROCEDURE [ file: Handle, range: ByteRange,
                    498:                sink: BulkData.Sink, session: Session ]
                    499:        REPORTS [ AccessError, HandleError, RangeError, SessionError,
                    500:                UndefinedError ]
                    501:        = 22;
                    502: 
                    503: ReplaceBytes: PROCEDURE [ file: Handle, range: ByteRange,
                    504:                source: BulkData.Source, session: Session ]
                    505:        REPORTS [ AccessError, HandleError, RangeError, SessionError,
                    506:                SpaceError, UndefinedError ]
                    507:        = 23;
                    508: 
                    509: -- Locating and Listing Files in a Directory --
                    510: 
                    511: Find: PROCEDURE [ directory: Handle, scope: ScopeSequence,
                    512:                controls: ControlSequence, session: Session ]
                    513:        RETURNS [ file: Handle ]
                    514:        REPORTS [ AccessError, AuthenticationError,
                    515:                ControlTypeError, ControlValueError, HandleError,
                    516:                ScopeTypeError, ScopeValueError,
                    517:                SessionError, UndefinedError ]
                    518:        = 17;
                    519: 
                    520: List: PROCEDURE [ directory: Handle, types: AttributeTypeSequence,
                    521:                scope: ScopeSequence, listing: BulkData.Sink,
                    522:                session: Session ]
                    523:        REPORTS [ AccessError, AttributeTypeError,
                    524:                AuthenticationError, ConnectionError,
                    525:                HandleError,
                    526:                ScopeTypeError, ScopeValueError,
                    527:                SessionError, TransferError, UndefinedError ]
                    528:        = 18;
                    529: 
                    530: 
                    531: 
                    532: 
                    533: 
                    534: -- INTERPRETED ATTRIBUTE DEFINITIONS --
                    535: 
                    536: -- common definitions --
                    537: 
                    538: Time: TYPE = Time.Time;                -- seconds --
                    539: nullTime: Time = Time.earliestTime;
                    540: 
                    541: User: TYPE = Clearinghouse.Name;
                    542: 
                    543: -- attributes --
                    544: 
                    545: accessList: AttributeType = 19;
                    546: AccessEntry: TYPE = RECORD [key: Clearinghouse.Name, access: AccessSequence];
                    547: AccessList: TYPE = RECORD [entries: SEQUENCE OF AccessEntry, defaulted: BOOLEAN];
                    548: 
                    549: checksum: AttributeType = 0;
                    550: Checksum: TYPE = CARDINAL;
                    551: unknownChecksum: Checksum = 177777B;
                    552: 
                    553: childrenUniquelyNamed: AttributeType = 1;
                    554: ChildrenUniquelyNamed: TYPE = BOOLEAN;
                    555: 
                    556: createdBy: AttributeType = 2;
                    557: CreatedBy: TYPE = User;
                    558: 
                    559: createdOn: AttributeType = 3;
                    560: CreatedOn: TYPE = Time;
                    561: 
                    562: dataSize: AttributeType = 16;
                    563: DataSize: TYPE = LONG CARDINAL;
                    564: 
                    565: defaultAccessList: AttributeType = 20;
                    566: DefaultAccessList: TYPE = AccessList;
                    567: 
                    568: fileID: AttributeType = 4;
                    569: FileID: TYPE = ARRAY 5 OF UNSPECIFIED;
                    570: nullFileID: FileID = [0,0,0,0,0];
                    571: 
                    572: isDirectory: AttributeType = 5;
                    573: IsDirectory: TYPE = BOOLEAN;
                    574: 
                    575: isTemporary: AttributeType = 6;
                    576: IsTemporary: TYPE = BOOLEAN;
                    577: 
                    578: modifiedBy: AttributeType = 7;
                    579: ModifiedBy: TYPE = User;
                    580: 
                    581: modifiedOn: AttributeType = 8;
                    582: ModifiedOn: TYPE = Time;
                    583: 
                    584: name: AttributeType = 9;       -- name relative to parent --
                    585: Name: TYPE = STRING;   -- must not exceed 100 bytes --
                    586: 
                    587: numberOfChildren: AttributeType = 10;
                    588: NumberOfChildren: TYPE = CARDINAL;
                    589: 
                    590: ordering: AttributeType = 11;
                    591: Ordering: TYPE = RECORD [key: AttributeType, ascending: BOOLEAN,
                    592:                interpretation: Interpretation];
                    593: -- see below for defaultOrdering, byAscendingPosition, byDescendingPosition --
                    594: 
                    595: parentID: AttributeType = 12;
                    596: ParentID: TYPE = FileID;
                    597: 
                    598: pathname: AttributeType = 21;
                    599: Pathname: TYPE = STRING;
                    600: 
                    601: position: AttributeType = 11;
                    602: Position: TYPE = SEQUENCE 100 OF UNSPECIFIED;
                    603: firstPosition: Position = [0];
                    604: lastPosition: Position = [177777B];
                    605: 
                    606: readBy: AttributeType = 14;
                    607: ReadBy: TYPE = User;
                    608: 
                    609: readOn: AttributeType = 15;
                    610: ReadOn: TYPE = Time;
                    611: 
                    612: storedSize: AttributeType = 26;
                    613: StoredSize: TYPE = LONG CARDINAL;
                    614: 
                    615: subtreeSize: AttributeType = 27;
                    616: SubtreeSize: TYPE = LONG CARDINAL;
                    617: 
                    618: subtreeSizeLimit: AttributeType = 28;
                    619: SubtreeSizeLimit: TYPE = LONG CARDINAL;
                    620: nullSubtreeSizeLimit: SubtreeSizeLimit = 37777777777B;
                    621: 
                    622: type: AttributeType = 17;
                    623: Type: TYPE = LONG CARDINAL;
                    624: 
                    625: version: AttributeType = 18;
                    626: Version: TYPE = CARDINAL;
                    627: lowestVersion: Version = 0;
                    628: highestVersion: Version = 177777B;
                    629: 
                    630: defaultOrdering: Ordering = [key: name, ascending: TRUE, interpretation:
                    631:                string];
                    632: byAscendingPosition: Ordering = [key: position, ascending: TRUE,
                    633:                interpretation: interpretationNone];
                    634: byDescendingPosition: Ordering = [key: position, ascending: FALSE,
                    635:                interpretation: interpretationNone];
                    636: 
                    637: 
                    638: 
                    639: 
                    640: 
                    641: -- BULK DATA FORMATS --
                    642: 
                    643: -- Serialized File Format, used in Serialize and Deserialize --
                    644: 
                    645: -- SerializedTree should contain the following but compiler won't allow it
                    646: -- Use Sequence of Unspecified  to get around it for now.
                    647: --
                    648: -- SerializedTree: TYPE = RECORD [
                    649: --     attributes: AttributeSequence,
                    650: --     content: RECORD [ data: BulkData.StreamOfUnspecified ,
                    651: --                     lastByteSignificant: BOOLEAN ],
                    652: --     children: SEQUENCE OF SerializedTree ];
                    653: 
                    654: SerializedTree: TYPE = RECORD [
                    655:        attributes: AttributeSequence,
                    656:        content: RECORD [ data: BulkData.StreamOfUnspecified ,
                    657:                        lastByteSignificant: BOOLEAN ],
                    658:        children: SEQUENCE OF UNSPECIFIED ];
                    659: 
                    660: Serializedfile: TYPE = RECORD [ version: LONG CARDINAL, file: SerializedTree ];
                    661: currentVersion: LONG CARDINAL = 3;
                    662: 
                    663: 
                    664: -- Attribute Series Format, used in List --
                    665: 
                    666: StreamOfAttributeSequence: TYPE = CHOICE OF {
                    667:        nextSegment(0) => RECORD [
                    668:                segment: SEQUENCE OF AttributeSequence,
                    669:                restOfStream: StreamOfAttributeSequence ],
                    670:        lastSegment(1) => SEQUENCE OF AttributeSequence };
                    671: 
                    672: -- Line-oriented ASCII text file format, used in file interchange --
                    673: 
                    674: AsciiString: TYPE = RECORD [
                    675:                lastByteSignificant: BOOLEAN,
                    676:                bytes: SEQUENCE OF UNSPECIFIED ];
                    677: 
                    678: -- a liberty until the compiler can accept the alternate syntax --
                    679: --     see StreamOfAttributeSequence --
                    680: 
                    681: LineType: TYPE = { nextLine(0), lastLine(1) };
                    682: 
                    683: StreamOfAsciiText: TYPE = CHOICE LineType OF {
                    684:        nextLine => RECORD [
                    685:                        line: AsciiString,
                    686:                        restOfText: StreamOfAsciiText ],
                    687:        lastLine => AsciiString };
                    688: 
                    689: 
                    690: 
                    691: 
                    692: -- FILE TYPES --
                    693: 
                    694: tUnspecified: Type = 0;
                    695: tDirectory: Type = 1;
                    696: tText: Type = 2;
                    697: tSerialized: Type = 3;
                    698: tEmpty: Type = 4;
                    699: tAscii: Type = 6;
                    700: tAsciiText: Type = 7;
                    701: 
                    702: END. -- of Filing --

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.