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

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

unix.superglobalmegacorp.com

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