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

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

unix.superglobalmegacorp.com

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