home *** CD-ROM | disk | FTP | other *** search
/ ftp.cse.unsw.edu.au / 2014.06.ftp.cse.unsw.edu.au.tar / ftp.cse.unsw.edu.au / pub / doc / standards / posix / x3b11.1 / x3b11.1-wp.text.Z / x3b11.1-wp.text
Encoding:
Text File  |  1992-10-18  |  145.8 KB  |  4,649 lines

  1. .RT
  2. .SP 2i
  3. .ce 99
  4. .ps +3
  5. .vs +3p
  6. .ft 3
  7. Working Paper for Volume and File Structure of Write-Once Media
  8. Using Non-Sequential Recording for Information Interchange
  9. .ft P
  10. .ps
  11. .vs
  12. .ce 0
  13. .in +10n
  14. .SP 1i
  15.  
  16. This document is subject to change without notice, and may not be referred
  17. to as a standard until approved by an accredited standards body.
  18. Distribution of this document warrants neither completeness
  19. nor correctness of this document.
  20.  
  21. Use this document at your own risk.
  22. It may be incomplete,
  23. it may be inconsistent, and
  24. it may be incorrect.
  25. That is why it is a working paper and not a draft standard.
  26. The editor would appreciate constructive feedback.
  27. .in -10n
  28. .SP 2.2i
  29. .nf
  30. .in \n(zzu
  31. Technical Editor:
  32. .in \n(zzu
  33. .SP
  34. Andrew Hume
  35. AT&T Bell Laboratories,  Room 2C-515
  36. 600 Mountain Ave
  37. Murray Hill  NJ  07974
  38. USA
  39. .SP .5
  40. Phone: +1 908-582-6262
  41. Fax: +1 908-582-5857
  42. Email: \f(CWandrew@research.att.com\fP
  43. .in 0
  44. .fi
  45. .BP
  46. .SH
  47. Editor's Remarks
  48.  
  49. This draft purports to be in a format suitable for a standard with two exceptions.
  50. The first are remarks by the editor
  51. .X1
  52. this is a sample of an editorial comment
  53. .X2
  54. which are meant to point out changes in, or difficulties with, the text.
  55.  
  56. The second exception are explanations which provide a rationale or
  57. motivation for a particular piece of the standard.
  58. .R1
  59. The purpose of these comments is to prepare the reader
  60. who might otherwise be puzzled at what seem to be random comments
  61. strewn throughout the text.
  62. .R2
  63.  
  64. It is important that these rationales are not part of the standard.
  65. They are colocated with the text they refer to for the reader's convenience
  66. but eventually they will probably become an annex to the standard.
  67. It is also a mistake if the rationales are necessary in order to understand
  68. what some part of the standard means.
  69.  
  70. For this draft, there has been no committee review of the rationales;
  71. they are solely the work and responsibility of the editor and may be
  72. significantly altered for the next draft.
  73.  
  74. I have made the latest version of this working paper available via
  75. .I ftp .
  76. Assuming you have access to the Internet, the scenario is approximately
  77. .P1
  78.     ftp research.att.com        # research's IP address is 192.20.225.2
  79.     <login as netlib; password is your email address>
  80.     cd research/memo
  81.     get x3b11.1-wp.text
  82.     binary
  83.     get x3b11.1-wp.ps.Z
  84. .P2
  85.  
  86. The two files of interest are
  87. .I compress 'ed
  88. Postscript and
  89. .CW wp.text
  90. which is a more or less useful form of the text used
  91. to generate the working paper.
  92. .BP
  93. .ce
  94. .B "Table of Contents"
  95.  
  96. .de xx
  97. .if !\\$1-1 .sp .5
  98. .if 4-\\$1 \h`\\n(zzu`\\$2\f2\a\f1\\$3
  99. ..
  100. .nf
  101. .fi
  102. .LN
  103. .BP
  104. .2C
  105. .HH "General"
  106. .HH "Scope"
  107. This standard specifies the volume and file structure of media for the
  108. interchange of information between users of information processing
  109. systems using a type of medium that shall be recorded as if the
  110. following constraints applied:
  111. .DL 3n
  112. the recording of the data field of a sector is constrained by the
  113. relationship of the address of the sector with the address of any
  114. other sector;
  115. .DL
  116. once recorded, the data field of a sector shall not be
  117. recorded again with different information.
  118.  
  119. This standard specifies:
  120. .DL 3n
  121. the attributes of a volume and the descriptors recorded on it;
  122. .DL
  123. the relationship among volumes of a volume set;
  124. .DL
  125. the placement of files;
  126. .DL
  127. the attributes of the files;
  128. .DL
  129. record structures intended for use when the information constituting
  130. a file is required to be interpreted as a set of records;
  131. .DL
  132. requirements for the processes which are provided within information
  133. processing systems, to enable information to be interchanged between
  134. different systems; for this purpose it specifies the functions to be
  135. provided within systems which are intended to originate or receive
  136. media which conform to this standard;
  137. .DL
  138. nested levels of medium interchange.
  139. .HH "Conformance"
  140. .HH "Conformance of a Medium"
  141. A medium shall be in conformance with this standard when
  142. it conforms to a standard of recording (see 1.4.15)
  143. and all information recorded on it conforms to the specifications of this
  144. standard.
  145. A statement of conformance shall identify the lowest level
  146. of medium interchange (see 4.1)
  147. to which the contents of the medium conform.
  148. .HH "Conformance of an Information Processing System"
  149. An information processing system shall be in conformance with this
  150. standard if it meets the requirements specified in this standard
  151. either for an originating system (see 4.3),
  152. or for a receiving system (see 4.4), or for both types of system.
  153. A statement of conformance
  154. shall identify which level of these requirements can be met by the
  155. system (see 4.1 and 4.2).
  156. .HH "References"
  157.  
  158. ISO 646 \f2Information processing-ISO 7-bit coded character set for
  159. information interchange\fP (International Reference Version)
  160.  
  161. ISO 1539 \f2Programming languages \- FORTRAN\fP
  162.  
  163. ISO 2022 \f2Information processing \- ISO 7-bit and 8-bit coded character
  164. sets-Code extension techniques\fP
  165.  
  166. ISO 2375 \f2Data processing \- Procedure for registration of escape sequences\fP
  167.  
  168. ISO 8859-1 \f2Information processing \- 8-bit single-byte coded graphic
  169. character set\fP Part 1:  Latin alphabet No. 1
  170.  
  171. .C1
  172. ISO 9660 \f2Information Processing \- Volume and file structure of
  173. CD\-ROM for information interchange\fP
  174.  
  175. ISO 9945-1
  176. \f2Information Technology - Portable Operating System Interface (POSIX)\fP
  177. Part 1: System Application Program Interface (API) [C Language]
  178. .C2
  179.  
  180. International Register of Coded Character Sets to be Used with Escape
  181. Sequences
  182.  
  183. Standards for recording:  This standard assumes the existence of a
  184. standard for recording (see 1.4.15)
  185. .HH "Definitions"
  186. For the purpose of this standard, the following definitions apply:
  187. .de xx
  188. .HH "\\$1"
  189. .xz "!\\$1"
  190. ..
  191. .xx "Application Program"
  192. A program that processes the contents of a file, and may also process
  193. selected attribute data relating to the file or to the volume(s) on
  194. which the file is recorded.
  195. .xx "Byte"
  196. A string of eight binary digits operated upon as a unit.
  197. .xx "Descriptor"
  198. A structure containing descriptive information about a volume or a
  199. file.
  200. .xx "Extent"
  201. A set of sectors or logical blocks, the addresses of which form a
  202. continuous ascending sequence.
  203. The address, or location, of an extent is the address of the first
  204. logical block or sector in the extent.
  205. .X1
  206. .C1
  207. I added the definition of the address of an extent.
  208. .C2
  209. This should probably just be something like ``contiguous consecutive sequence
  210. of integers'' and force the language say ``extents of sectors''
  211. (or logical blocks or whatever).
  212. .X2
  213. .xx "File"
  214. .C1
  215. A collection of information recorded over one or more extents.
  216. .C2
  217. .xx "File Section"
  218. That part of a file that is recorded in any one extent.
  219. .xx "Implementation"
  220. A set of processes which enable an information processing system to
  221. behave as an originating system, or as a receiving system, or as both
  222. types of system.
  223. .xx "Logical Block"
  224. .C1
  225. The unit of allocation of a logical volume.
  226. .C2
  227. .xx "Logical Volume"
  228. A logical volume is a nonempty set of partitions over which one or more
  229. namespaces are recorded describing a set files.
  230. .xx "Originating System"
  231. As information processing system which can create a set of files on a
  232. volume set for the purpose of data interchange with another system.
  233. .xx Partition
  234. A partition is an extent of a volume.
  235. Partitions may overlap.
  236. .xx "Receiving System"
  237. An information processing system which can read a set of files from a
  238. volume set which has been created by another system for the purpose of
  239. data interchange.
  240. .xx "Record"
  241. A sequence of bytes treated as a unit of information.
  242. .xx "Sector"
  243. The smallest addressable part of the recordable area on a medium that
  244. can be accessed independently of other addressable parts of the
  245. recordable area.
  246. .xx "Standard for Recording"
  247. A standard that specifies the recording method and the addressing
  248. method for the information recorded on a medium.
  249. The specifications of the standard for recording that are relevant for
  250. this standard are:
  251. .RS
  252. .DL
  253. a unique address for each sector;
  254. .DL
  255. the length of the data field within each sector;
  256. .DL
  257. the means for detecting whether the data field of a sector has not
  258. yet been recorded.
  259. .RE
  260.  
  261. The standard for recording used in conjunction with this
  262. standard is subject to agreement between the originator and the
  263. recipient of the volumes.
  264. .xx "User"
  265. A person or other entity (for example, an application program) that
  266. causes the invocation of the services provided by an implementation.
  267. .xx "Volume"
  268. A logical address space as specified in the relevant standard for
  269. recording.
  270. .xx "Volume Set"
  271. A set of volumes with identical volume set identification.
  272. A logical volume may only belong to one volume set.
  273. .HH "Notation"
  274. The following notation is used in this standard:
  275. .HH "Numerical Notation"
  276. .HH "Decimal Notation"
  277. Numbers in decimal notation are represented by decimal digits, and are
  278. not shown in parentheses.
  279. .HH "Hexadecimal Notation"
  280. Numbers in hexadecimal notation are represented as hexadecimal digits
  281. within parentheses.
  282. The (decimal) values of the hexadecimal digits are
  283. .TS
  284. center, tab(-);
  285. r c1 c1 c1 c1 c1 c1 c1 c.
  286. digit-(0)-(1)-(2)-(3)-(4)-(5)-(6)-(7)
  287. value-0-1-2-3-4-5-6-7
  288. .sp .5
  289. digit-(8)-(9)-(A)-(B)-(C)-(D)-(E)-(F)
  290. value-8-9-10-11-12-13-14-15
  291. .TE
  292. .HH "Bit Positions"
  293. .EQ
  294. delim $$
  295. .EN
  296. Bit positions within an $n$
  297. bit integer field are numbered such that the least significant bit is numbered 0
  298. and the most significant bit is numbered $n - 1$.
  299. .EQ
  300. delim off
  301. .EN
  302. .HH "Descriptor and Record Formats"
  303. .C1
  304. Descriptor and record formats shall be specified by a table;
  305. an example is shown in figure 1.
  306. .C2
  307. .Fd figExample
  308. .de zz
  309. .Fg "1" "Example Structure"
  310. ..
  311. .1C
  312. .KF no_value
  313. .SP 1
  314. .TS
  315. center;
  316. l l l.
  317. _
  318. BP    Field name    Contents
  319. _
  320. 1-4    Data Length (= D_L)    \f(CWuint32\fP (1.6.1.5)
  321. 5-36    Application Identifier    32 a-characters
  322. 37-40    Reserved    4 (00) bytes
  323. 41-42    Type    \f(CWint16\fP (1.6.1.4) = 57
  324. 43-(42+D_L)    Implementation Use    D_L bytes
  325. _
  326. .TE
  327. .zz
  328. .KE
  329. .2C
  330.  
  331. This record has five fields.
  332. The first, Data Length (also referred to as D_L),
  333. is a 32-bit unsigned integer recorded at bytes 1 through 4.
  334. The second, Application Identifier, is a string of a-characters occupying at most
  335. 32 bytes recorded at bytes 5 through 36.
  336. The third field, Reserved, is 4 bytes, each with the value (00), recorded
  337. at bytes 37 through 40.
  338. The fourth field, Type, is a 16-bit signed integer whose value shall be 57
  339. and is recorded at bytes 41 and 42.
  340. The fifth field, Implementation Use, is D_L
  341. (the value of the first field) bytes whose meaning is
  342. unspecified by this standard, recorded at bytes 43 through (42+D_L).
  343.  
  344. The table specifies the location, type and size of each field;
  345. the field semantics shall be described after the table.
  346.  
  347. .C1
  348. Many of the structures (descriptors and records) described in this standard
  349. are recorded so that the first byte of the structure
  350. is the first byte of a sector or logical block.
  351. All space, if any, after the end of the structure up to the end of the
  352. sector or logical block are reserved for future use and shall be recorded
  353. as (00).
  354. .br
  355. .C2
  356. .HH "Other Notation"
  357. .TS
  358. center;
  359. c l
  360. l l.
  361. _
  362. Notation    Significance
  363. _
  364. BP    Byte position within a descriptor,
  365.     starting with 0
  366. ZERO    A single bit with the value 0
  367. ONE    A single bit with the value 1
  368. _
  369. .TE
  370. .HH "Basic Types"
  371. .HH "Numerical Values"
  372. Numeric types are referred to by a type name such as
  373. .CW uint16
  374. as well as the clause number of its definition.
  375. .HH "8-Bit Unsigned Numerical Values"
  376. An 8-bit unsigned numerical value, or
  377. .CW uint8 ,
  378. shall be represented in binary notation by
  379. an 8-bit number recorded in a one-byte field.
  380. .HH "8-Bit Signed Numerical Values"
  381. An 8-bit signed numerical value, or
  382. .CW int8 ,
  383. shall be represented in binary notation by an
  384. 8-bit two's complement number recorded in a one-byte field.
  385. .HH "16-Bit Unsigned Numerical Values"
  386. A 16-bit unsigned numerical value, or
  387. .CW uint16 ,
  388. represented by the hexadecimal representation (wxyz)
  389. shall be recorded in a two-byte field as (yz) (wx).
  390. For example, the decimal number 4660 has (1234) as its
  391. hexadecimal representation and shall be recorded as (34) (12).
  392. .HH "16-Bit Signed Numerical Values"
  393. A 16-bit signed numerical value, or
  394. .CW int16 ,
  395. represented in two's complement form by the hexadecimal representation (wxyz)
  396. shall be recorded in a two-byte field as (yz) (wx).
  397. For example, the decimal number \-30875 has (8765) as its
  398. hexadecimal representation and shall be recorded as (65) (87).
  399. .HH "16-Bit Signed Numerical Values (MSB)"
  400. A 16-bit signed numerical value (MSB), or
  401. .CW int16MSB ,
  402. represented in two's complement form by the hexadecimal representation (wxyz)
  403. shall be recorded in a two-byte field as (wx) (yz).
  404. For example, the decimal number \-30875 has (8765) as its
  405. hexadecimal representation and shall be recorded as (87) (65).
  406. .HH "32-Bit Unsigned Numerical values"
  407. A 32-bit unsigned numerical value represented in binary notation by a 32-bit
  408. number represented by the hexadecimal representation (stuvwxyz)
  409. shall be recorded in a four-byte field as (yz) (wx) (uv) (st).
  410. For example, the decimal number 305419896 has (12345678) as
  411. .C1
  412. its hexadecimal representation and shall be recorded as (78) (56) (34) (12).
  413. .C2
  414. .HH "64-Bit Unsigned Numerical values"
  415. A 64-bit unsigned numerical value represented in binary notation by a 64-bit
  416. number represented by the hexadecimal representation (klmnopqrstuvwxyz)
  417. shall be recorded in a eight-byte field as (yz) (wx) (uv) (st) (qr) (op) (mn) (kl).
  418. For example, the decimal number 12345678987654321012 has (AB54A9A10A23D374) as
  419. its hexadecimal representation and shall be recorded as
  420. .C1
  421. (74) (D3) (23) (0A) (A1) (A9) (54) (AB).
  422. .C2
  423. .HH "Character Sets and Coding"
  424. Except as specified in this clause, the characters in the descriptors
  425. shall be coded according to ISO 646.
  426. All character strings whose interpretation is defined by this standard shall
  427. consist of either a-characters, c-characters or f-characters as defined below.
  428. The definitions depend on the current character set specification or
  429. .CW charspec ,
  430. which has the format shown in figure 2.
  431. .xz "!\f(CWcharspec\fP"
  432. .Fd figcharspec
  433. .de zz
  434. .Fg "2" "\f(CWcharspec\fP"
  435. ..
  436. .1C
  437. .KF 
  438. .SP 1
  439. .TS
  440. center;
  441. l l l.
  442. _
  443. BP    Field name    Contents
  444. _
  445. 0    Character Set Type    \f(CWuint8\fP (1.6.1.1)
  446. 1-31    Escape Sequences    31 bytes
  447. _
  448. .TE
  449. .zz
  450. .KE
  451. .2C
  452. .HH "Character Set Type (BP 0)"
  453. The Character Set Type is interpreted as a 5 bit number (bits 0-4) CS,
  454. defined in the following subclauses and 3 single bit fields whose meaning is:
  455. .ne 5v
  456. Bit 5n
  457. Interpretation
  458. 5
  459. Registration: If set to ZERO, shall mean that the Escape Sequences
  460. field specifies only escape
  461. sequences registered according to ISO 2375;
  462. If set to ONE, shall mean that the Escape Sequences field
  463. specifies at least one escape sequence not registered
  464. according to ISO 2375.
  465. 6
  466. Interpretation:
  467. If set to ZERO, shall mean that selected descriptor fields shall
  468. be interpreted according to 1.6.2.7.
  469. If set to ONE, shall
  470. mean that selected descriptor fields shall be interpreted according
  471. to 1.6.2.7.
  472. .X1
  473. This is the original wording; I won't change it until we find
  474. out what 1.6.2.7 says.
  475. .X2
  476. 7
  477. Reserved:
  478. this bit is reserved for future
  479. standardization and shall be set to ZERO.
  480. .R1
  481. In general, the current character set is set by high level descriptors
  482. such as the Volume Header Record and occasionally overridden for
  483. specific lower level descriptors.
  484. Thus, a volume may be Latin\-1 in general but have a Kanji partition.
  485. .R2
  486. .HH c-characters
  487. .X1
  488. .C1
  489. c-characters are no longer used in this standard.
  490. We should either use them or remove them.
  491. There were previously listed as being used in the
  492. .C2
  493. Directory Identifier Record, Primary Volume
  494. Descriptor and Logical Volume Descriptor.
  495. .X2
  496. .ne 5v
  497. CS 7n
  498. Interpretation
  499. 0-2
  500. shall mean that the c-characters shall be the 95 characters in
  501. positions 2/0 to 7/14 of the International Reference Version of ISO
  502. 646.
  503. .X1
  504. Why does this say International Reference Version?
  505. .X2
  506. 3
  507. shall mean that the c-characters shall be the 191 characters in
  508. positions 2/0 to 7/14 and 10/0 to 15/15 of the character set of ISO
  509. 8859-1.
  510. 4-30
  511. reserved for future standardization
  512. 31
  513. shall mean the c-characters shall be a subset of the coded graphic
  514. character sets specified by the Escape Sequences field.
  515. This subset shall be subject to agreement between the
  516. originator and the recipient of the volume.
  517. .HH a-characters
  518. The a-characters are a subset of the c-characters.
  519. CS 7n
  520. Interpretation
  521. .ne 5v
  522. 0
  523. shall mean that the a-characters shall be the 57 characters in
  524. positions 2/0 to 2/2, 2/5 to 3/15, 4/1 to 5/10, and 5/15 of the
  525. International Reference Version of ISO 646.
  526. 1
  527. shall mean that the a-characters shall be the 83 characters in
  528. position 2/0 to 2/2, 2/5 to 3/15, 4/1 to 5/10, 5/15, and 6/1 to 7/10
  529. of the International Reference Version of ISO 646.
  530. 2
  531. shall mean that the a-characters shall be the 95 characters in
  532. positions 2/0 to 7/14 of the International Reference Version of ISO
  533. 646. 
  534. 3
  535. shall mean that the a-characters shall be the 191 characters in
  536. positions 2/0 to 7/14 and 10/0 to 15/15 of the character set of ISO
  537. 8859-1.
  538. 4-30
  539. reserved for future standardization
  540. 31
  541. shall mean that the a-characters shall be a subset of the
  542. c-characters.  This subset shall be subject to agreement between the
  543. originator and the recipient of the volume.
  544. .HH f-characters
  545. The f-characters are a subset of the a-characters.
  546. .ne 5v
  547. CS 7n
  548. Interpretation
  549. 0
  550. shall mean that the
  551. f-characters shall be the 38 characters in the following positions of
  552. the International Reference Version of ISO 646.
  553. .TS
  554. center;
  555. c c c
  556. l c l.
  557. _
  558. .C1
  559. Character    Graphic    Position
  560. .C2
  561. _
  562. FULL STOP    .    2/14
  563. digits ZERO to NINE    0...9    3/0-3/9
  564. capital letters A to Z    A...Z    4/15-5/10
  565. LOW LINE    \&_    5/15
  566. _
  567. .TE
  568. 1
  569. shall mean that the f-characters shall be the 65 characters in the
  570. following positions of the International Reference Version of ISO 646.
  571. .TS
  572. center;
  573. c c c
  574. l c l.
  575. _
  576. .C1
  577. Character    Graphic    Position
  578. .C2
  579. _
  580. FULL STOP    .    2/14
  581. digits ZERO to NINE    0...9    3/0-3/9
  582. capital letters A to Z    A...Z    4/15-5/10
  583. LOW LINE    \&_    5/15
  584. small letters a...z    a..z    6/1-7/10
  585. _
  586. .TE
  587. 2
  588. shall mean that the f-characters shall be the 95 characters in
  589. positions 2/0 to 7/14 of the International Reference Version of ISO
  590. 646. 
  591. 3
  592. shall mean that the f-characters and shall be the 191 characters in
  593. positions 2/0 to 7/14 and 10/0 to 15/15 of the character set of ISO
  594. 8859-1.
  595. 4-30
  596. reserved for future standardization.
  597. 31
  598. shall mean that the f-characters and shall be a subset of the
  599. a-characters.  This subset shall be subject to agreement between the
  600. originator and the recipient of the volume.
  601. .HH "Escape Sequences (BP 1-31)"
  602. This field shall specify one or more escape sequences according to ISO
  603. 2022 that designate and implicitly invoke the graphic character sets
  604. to be used in an 8-bit environment according to ISO 2022.
  605.  
  606. These escape sequences shall conform to ISO 2022, except that the
  607. ESCAPE character shall be omitted from each designating escape
  608. sequence when recorded in this field.
  609. .X1
  610. why do we omit the ESCAPE?
  611. .X2
  612. The first or only escape
  613. sequence shall begin at the first byte of the field.  Each successive
  614. escape sequence shall begin at the byte in the field immediately
  615. following the last byte of the preceding escape sequence.  Any unused
  616. byte positions following the last sequence shall be set to (00).
  617.  
  618. All the bytes of this field shall be set to (00) if the
  619. Character Set Type field does not contain the number 31.
  620. .HH "Justification of Characters"
  621. In each fixed-length field the content of which is specified by this
  622. standard to be characters, the characters shall be left-justified and
  623. any remaining byte positions on the right shall be set to (00).
  624. .C1
  625. .X1
  626. should we say that there is always at least one (00) after the string?
  627. .X2
  628. .C2
  629. .HH "Embedded Escape Sequences and Shift Functions"
  630. Text to be supplied in a later draft.
  631. .X1
  632. I have no idea what this means
  633. .X2
  634. .HH Timestamp
  635. .C1
  636. A
  637. .CW timestamp
  638. shall specify a date and time in the format shown in figure 3.
  639. If all eight numbers are zero, it shall mean that the date and time
  640. are not specified.
  641. .xz "!\f(CWtimestamp\fP"
  642. .Fd figtimestamp
  643. .de zz
  644. .Fg "3" "\f(CWtimestamp\fP"
  645. ..
  646. .1C
  647. .KF 
  648. .SP 1
  649. .TS
  650. center;
  651. l l l.
  652. _
  653. BP    Field name    Contents
  654. _
  655. 0-1    Time Zone    \f(CWuint16\fP (1.6.1.3)
  656. 2-3    Year    \f(CWint16\fP (1.6.1.4)
  657. 4    Month    \f(CWuint8\fP (1.6.1.1)
  658. 5    Day    \f(CWuint8\fP (1.6.1.1)
  659. 6    Hour    \f(CWuint8\fP (1.6.1.1)
  660. 7    Minute    \f(CWuint8\fP (1.6.1.1)
  661. 8    Second    \f(CWuint8\fP (1.6.1.1)
  662. 9    Centiseconds    \f(CWuint8\fP (1.6.1.1)
  663. 10-11    Reserved    2 (00) bytes
  664. _
  665. .TE
  666. .zz
  667. .KE
  668. .2C
  669. .HH "Time Zone (BP 0-1)"
  670. Offset from Universal Coordinated Time in minutes.
  671. .HH "Year (BP 2-3)"
  672. The year relative to 0 A.D.
  673. .HH "Month (BP 4)"
  674. Month of the year from 1 to 12.
  675. .HH "Day (BP 5)"
  676. Day of the month from 1 to 31.
  677. .HH "Hour (BP 6)"
  678. Hour of the day from 0 to 23.
  679. .HH "Minute (BP 7)"
  680. Minute of the hour from 0 to 59.
  681. .HH "Second (BP 8)"
  682. Second of minute, 0 to 59.
  683. .R1
  684. Leap seconds are not supported as there is no
  685. model for how they might be used and it is incorrect to
  686. specify how to record leap seconds without specifying their semantics.
  687. .R2
  688. .HH "Centiseconds (BP 9)"
  689. Hundredths of a second, 0 to 99.
  690. .HH "Reserved (BP 10-11)"
  691. This is for padding out to 12 bytes.
  692. .X1
  693. I observe that we can encode the timestamp in 8 bytes as
  694. 12x31x24x60x60x100 fits in an \f(CWuint32\fP (1.6.1.5).
  695. .X2
  696. .C2
  697. .HH "Checksums"
  698. Some fields have a checksum.
  699. The checksum shall be 16 bits long and be generated by the CRC-CCITT polynomial:
  700. .SP .5
  701. .EQ
  702. delim $$
  703. .EN
  704. .ce
  705. $x sup 16 + x sup 12 + x sup 5 + 1$
  706. .EQ
  707. delim off
  708. .EN
  709.  
  710. .C1
  711. As an example, the checksum of the three bytes (70) (6A) (77) is (168E).
  712. Code to calculate the checksum is given in Annex 1.
  713. .C2
  714. .HH "Allocation Records"
  715. Extents representing recorded data or space yet to be allocated shall
  716. be described by allocation records.
  717. .HH "Short Allocation Record"
  718. The Short Allocation Record, or
  719. .CW short_ar ,
  720. shall have the format shown in figure 4.
  721. .xz "!Short Allocation Record"
  722. .Fd figShortAllocationRecord
  723. .de zz
  724. .Fg "4" "Short Allocation Record"
  725. ..
  726. .1C
  727. .KF 
  728. .SP 1
  729. .TS
  730. center;
  731. l l l.
  732. _
  733. BP    Field name    Contents
  734. _
  735. 0-3    Extent Location    \f(CWuint32\fP (1.6.1.5)
  736. 4-7    Data Length    \f(CWuint32\fP (1.6.1.5)
  737. _
  738. .TE
  739. .zz
  740. .KE
  741. .2C
  742. .HH "Extent Location (BP 0-3)"
  743. This field shall specify the location of
  744. the extent, if any information has been recorded in the extent, or
  745. may be zero if no information has been recorded in the extent.
  746. .HH "Data Length (BP 4-7)"
  747. .C1
  748. The lower 30 bits shall indicate the length of the extent in
  749. .C2
  750. bytes.
  751. The high 2 bits shall indicate the state of the extent.  The value of
  752. these 2 bits shall be one of the following:
  753. .ne 5v
  754. Number 8n
  755. Interpretation
  756. .C1
  757. 0
  758. Extent not written and not allocated
  759. 1
  760. Extent not written but allocated
  761. 2
  762. Extent written and allocated
  763. 3
  764. Extent location and length refer to the next extent of allocation records
  765. .br
  766. .C2
  767. .BP
  768. .HH "Volumes and Partitions"
  769. This clause defines partitions, volumes and volume sets.
  770.  
  771. This clause describes how volumes are combined into volume sets.
  772.  
  773. This clause describes how to record data structures that label volumes,
  774. describe the unallocated space on a volume,
  775. and define an optional sector replacement scheme independent
  776. from any scheme inherent in the standard of recording.
  777.  
  778. This clause describes how to divide a volume into partitions,
  779. and how to label those partitions.
  780.  
  781. This clause does not describe any data structures specific to recording
  782. user files or directories.
  783. Such structures, whether they be those described in clause 3
  784. or in some other document or standard, may be recorded within
  785. partitions and as a partition descriptor.
  786. .R1
  787. This clause is intended to be largely independent from, but harmonious with,
  788. the clause describing the file system.
  789.  
  790. There has been considerable debate in the committee over the need for
  791. a sector replacement scheme.
  792. With modern media and so-called ``error free'' interfaces such as SCSI,
  793. the drive (and controller) is the best place to handle errors such as bad sectors.
  794. If the interface to all media was like this, then perhaps this scheme might
  795. not be necessary, although this doesn't help with non-drive errors such as
  796. memory parity errors and bus interface errors.
  797. However, particularly with WORM media and drives, there is a history of
  798. drives without error correction and a history of turning off error
  799. detection/correction for performance reasons.
  800. Also, this standard, or a closely related one, can be used on existing
  801. magnetic disk drives, and many such drives do not have an ``error free'' interface.
  802. In fact, most SMD drives support a bad sector (or bad track) replacement scheme
  803. similar to the one in this standard.
  804. .R2
  805.  
  806. .C1
  807. All the data structures defined in this clause shall be recorded so that
  808. the first byte of the data structure coincides with the first byte of a sector.
  809. .C2
  810. .HH "Volume Space"
  811. This clause takes a volume to be a sequence of sectors,
  812. each with a unique sector number.
  813. Sector numbers shall be consecutive integers starting at 0, assigned in the
  814. order of the ascending physical addresses of the sectors of the volume
  815. (as specified in the relevant standard for recording).
  816. Sector 0 shall be assigned to the sector having the lowest physical
  817. address which may contain recorded information.
  818.  
  819. The information on a volume shall be recorded in the data fields of
  820. the set of all sectors on the volume.  This set shall be referred to
  821. as the volume space of the volume.
  822. .HH "Volume Data Structures"
  823. .X1
  824. overview to be done
  825. .X2
  826. .HH "Volume Header Sequence"
  827. A volume header sequence shall consist of the following descriptors
  828. consecutively recorded as follows.
  829. .RS
  830. .DL
  831. The sequence shall contain zero or more Volume Header Records
  832. (see 2.2.2)
  833. each recorded consecutively at least once.
  834. .DL
  835. The sequence shall be terminated by either one or more unrecorded
  836. sectors or, if there is a successor volume header sequence, by one
  837. Volume Header Pointer Record (see 2.2.3)
  838. recorded consecutively at least once.
  839. The Volume Header Pointer Record shall identify the location of
  840. the successor, if any, volume header sequence.
  841. .RE
  842.  
  843. We define the governing Volume Header Record
  844. .X1
  845. I would suggest regnant as the best word here
  846. but ruling and controlling are good too.
  847. .X2
  848. of a volume header sequence is the last Volume Header Record in the sequence,
  849. including all successor volume header sequences.
  850. The data structures describing the volume
  851. shall be specified by the governing Volume Header Record. 
  852.  
  853. One or more volume header sequences shall be recorded on a volume subject
  854. to the following restrictions:
  855. .RS
  856. .DL
  857. volume header sequences containing only Volume Header Pointer Records
  858. shall be recorded at one or more of the following sector addresses:
  859. 0, 16, 128, 192, 256, N-16, N-4,
  860. where N is the largest recordable sector address in the volume.
  861. .C1
  862. All such volume header sequences must have the same governing Volume Header Record.
  863. .DL
  864. .C2
  865. An occurrence of the volume header sequence shall be recorded such
  866. that it terminates in the sector having largest sector number of the
  867. volume.
  868. .X1
  869. I think this is detritus from earlier drafts.
  870. .X2
  871. .C1
  872. .DL
  873. There must be at least one Volume Header Record recorded.
  874. .C2
  875. .RE
  876. .HH "Volume Header Record"
  877. .xz "volume header record"
  878. The Volume Header Record shall specify the size and location of the
  879. primary file control block for the set of volume descriptors of the
  880. volume, and certain attributes of the volume.
  881. It shall be recorded in the format shown in figure 5.
  882. .xz "!Volume Header Record"
  883. .Fd figVolumeHeaderRecord
  884. .de zz
  885. .Fg "5" "Volume Header Record"
  886. ..
  887. .1C
  888. .KF 
  889. .SP 1
  890. .TS
  891. center;
  892. l l l.
  893. _
  894. BP    Field name    Contents
  895. _
  896. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  897. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  898. .C1
  899. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  900. .C2
  901. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  902. 16-19    Predecessor Volume Header Sequence Location    \f(CWuint32\fP (1.6.1.5)
  903. 20-23    Volume Descriptor Set File Control Block Location    \f(CWuint32\fP (1.6.1.5)
  904. 24-27    Partition Descriptor Set File Control Block Location    \f(CWuint32\fP (1.6.1.5)
  905. 28-31    Unallocated Space Table Location    \f(CWuint32\fP (1.6.1.5)
  906. 32-35    Replacement Sector Record Location    \f(CWuint32\fP (1.6.1.5)
  907. 36-47    Recording Date and Time    \f(CWtimestamp\fP (1.6.3.9)
  908. 48-79    Implementation Use    32 bytes
  909. 80-511    Reserved    432 (00) bytes
  910. _
  911. .TE
  912. .zz
  913. .KE
  914. .2C
  915. .HH "Descriptor Checksum (BP 0-1)"
  916. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  917. starting at the first byte of the Descriptor Checksum Length field.
  918. .HH "Descriptor Checksum Length (BP 2-3)"
  919. This field specifies how many bytes were used
  920. in calculating the Descriptor Checksum.
  921. .HH "Descriptor Version (BP 4-7)"
  922. This field shall specify the version of this Descriptor.
  923. The value 1 shall indicate the structure of this standard.
  924. .HH "Descriptor Tag (BP 8-15)"
  925. This field shall specify (DEADBEEF).
  926. .HH "Predecessor Volume Header Sequence Location (BP 16-19)"
  927. The field shall specify the address of the extent of the
  928. volume in which a predecessor volume header sequence of the volume is
  929. recorded.
  930. If the number in this field is 0, it shall mean that no
  931. such volume header sequence is identified.
  932. .HH "Volume Descriptor Set File Control Block Location (BP 20-23)"
  933. .C1
  934. The field shall specify the address of file control block describing a set
  935. of volume descriptors.
  936. If the number in this field is 0, it shall mean that no
  937. such volume descriptors are identified.
  938. .C2
  939. .HH "Partition Descriptor Set File Control Block Location (BP 24-27)"
  940. .C1
  941. The field shall specify the address of file control block describing a set
  942. of partition descriptors.
  943. If the number in this field is 0, it shall mean that no
  944. such partition descriptors are identified.
  945. .C2
  946. .HH "Unallocated Space Table Location (BP 28-31)"
  947. The field shall specify the address of the Unallocated Space Table for the volume.
  948. .HH "Replacement Sector Record Location (BP 32-35)"
  949. The field shall specify the address of the extent
  950. in which Replacement Sector Records (see 2.2.7.1) are recorded.
  951. A value of (0) shall indicate there are no such records.
  952. .HH "Recording Date and Time (BP 36-47)"
  953. This field shall indicate the date and the time of the day at which
  954. the volume header record was recorded.
  955. If all eight numbers in this field are zero, it shall mean
  956. that the date and time are not specified.
  957. .HH "Implementation Use (BP 48-79)"
  958. This field shall be reserved for implementation use.
  959. Its content is not specified by this standard.
  960. .HH "Reserved (BP 80-511)"
  961. This field shall be reserved for future standardization.
  962. .HH "Volume Header Pointer Record"
  963. The Volume Header Pointer Record shall specify the location of a
  964. volume header sequence recorded on the volume.
  965. It shall be recorded in the format shown in figure 6.
  966. .C1
  967. .X1
  968. should we add a timestamp?
  969. .X2
  970. .C2
  971. .xz "!Volume Header Pointer Record"
  972. .Fd figVolumeHeaderPointerRecord
  973. .de zz
  974. .Fg "6" "Volume Header Pointer Record"
  975. ..
  976. .1C
  977. .KF 
  978. .SP 1
  979. .TS
  980. center;
  981. l l l.
  982. _
  983. BP    Field name    Contents
  984. _
  985. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  986. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  987. .C1
  988. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  989. .C2
  990. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  991. 16-19    Successor Volume Header Sequence Location    \f(CWuint32\fP (1.6.1.5)
  992. 20-511    Reserved    492 bytes
  993. _
  994. .TE
  995. .zz
  996. .KE
  997. .2C
  998. .HH "Descriptor Checksum (BP 0-1)"
  999. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1000. starting at the first byte of the Descriptor Checksum Length field.
  1001. .HH "Descriptor Checksum Length (BP 2-3)"
  1002. This field specifies how many bytes were used
  1003. in calculating the Descriptor Checksum.
  1004. .HH "Descriptor Version (BP 4-7)"
  1005. This field shall specify the version of this Descriptor.
  1006. The value 1 shall indicate the structure of this standard.
  1007. .HH "Descriptor Tag (BP 8-15)"
  1008. This field shall specify (DEADBEEF).
  1009. .HH "Successor Volume Header Sequence Location (BP 16-19)"
  1010. The field shall specify the address of the successor volume header sequence.
  1011. If the number in this field is 0, it shall mean
  1012. that no such volume header sequence is identified.
  1013. .HH "Reserved (BP 20-511)"
  1014. This field shall be reserved for future standardization.
  1015. .HH "Primary Volume Descriptor"
  1016. The Primary Volume Descriptor shall identify the volume and certain
  1017. attributes of the volume.
  1018. It shall be recorded in the format shown in figure 7.
  1019. .C1
  1020. .X1
  1021. should we add a timestamp?
  1022. .X2
  1023. .C2
  1024. .xz "!Primary Volume Descriptor"
  1025. .Fd figPrimaryVolumeDescriptor
  1026. .de zz
  1027. .Fg "7" "Primary Volume Descriptor"
  1028. ..
  1029. .1C
  1030. .KF 
  1031. .SP 1
  1032. .TS
  1033. center;
  1034. l l l.
  1035. _
  1036. BP    Field name    Contents
  1037. _
  1038. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1039. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1040. .C1
  1041. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1042. .C2
  1043. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1044. 16-47    Volume Identifier    32 f-characters
  1045. 48-49    Volume Sequence Number    \f(CWuint16\fP (1.6.1.3)
  1046. 50-177    Volume Set Identifier    128 f-characters
  1047. 178-209    Descriptor Character Set    \f(CWcharspec\fP (1.6.2)
  1048. 210-213    Implementation Use    \f(CWuint32\fP (1.6.1.5)
  1049. 214-469    Reserved    256 (00) bytes
  1050. _
  1051. .TE
  1052. .zz
  1053. .KE
  1054. .2C
  1055. .HH "Descriptor Checksum (BP 0-1)"
  1056. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1057. starting at the first byte of the Descriptor Checksum Length field.
  1058. .HH "Descriptor Checksum Length (BP 2-3)"
  1059. This field specifies how many bytes were used
  1060. in calculating the Descriptor Checksum.
  1061. .HH "Descriptor Version (BP 4-7)"
  1062. This field shall specify the version of this Descriptor.
  1063. The value 1 shall indicate the structure of this standard.
  1064. .HH "Descriptor Tag (BP 8-15)"
  1065. This field shall specify (DEADBEEF).
  1066. .HH "Volume Identifier (BP 16-47)"
  1067. This field shall specify an identification of the volume.
  1068. .HH "Volume Sequence Number (BP 48-49)"
  1069. This field shall specify the ordinal
  1070. number of the volume in the volume set of which the volume is a
  1071. member.
  1072. .HH "Volume Set Identifier (BP 50-177)"
  1073. This field shall specify an identification of the volume set of which
  1074. the volume is a member.
  1075. .HH "Descriptor Character Set (BP 178-209)"
  1076. This field shall specify the characters in certain fields of file
  1077. descriptors and directory descriptors that are associated with the
  1078. Primary Volume Descriptor (see 2.2.4).
  1079. .HH "Implementation Use (BP 210-213)"
  1080. This field shall be reserved for implementation use.
  1081. Its content is not specified by this standard.
  1082. .HH "Reserved (BP 214-469)"
  1083. This field shall be reserved for future standardization.
  1084. .X1
  1085. how many reserved bytes do we need? this doesn't have to be sector-sized.
  1086. .X2
  1087. .HH "Implementation Use Volume Descriptor"
  1088. The Implementation Use Volume Descriptor shall identify an
  1089. implementation which can recognize and act upon the content of the
  1090. implementation use field in the volume descriptor.
  1091. It shall be recorded in the format shown in figure 8.
  1092. .xz "!Implementation Use Volume Descriptor"
  1093. .Fd figImplementationUseVolumeDescriptor
  1094. .de zz
  1095. .Fg "8" "Implementation Use Volume Descriptor"
  1096. ..
  1097. .1C
  1098. .KF 
  1099. .SP 1
  1100. .TS
  1101. center;
  1102. l l l.
  1103. _
  1104. BP    Field name    Contents
  1105. _
  1106. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1107. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1108. .C1
  1109. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1110. .C2
  1111. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1112. 16-47    Implementation Identifier    32 a-characters
  1113. 48-79    Descriptor Character Set    \f(CWcharspec\fP (1.6.2)
  1114. 80-511    Implementation Use    432 bytes
  1115. _
  1116. .TE
  1117. .zz
  1118. .KE
  1119. .2C
  1120. .HH "Descriptor Checksum (BP 0-1)"
  1121. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1122. starting at the first byte of the Descriptor Checksum Length field.
  1123. .HH "Descriptor Checksum Length (BP 2-3)"
  1124. This field specifies how many bytes were used
  1125. in calculating the Descriptor Checksum.
  1126. .HH "Descriptor Version (BP 4-7)"
  1127. This field shall specify the version of this Descriptor.
  1128. The value 1 shall indicate the structure of this standard.
  1129. .HH "Descriptor Tag (BP 8-15)"
  1130. This field shall specify (DEADBEEF).
  1131. .HH "Implementation Identifier (BP 16-47)"
  1132. This field shall specify an identification of an implementation which
  1133. can recognize and act upon the content of the implementation use field
  1134. in the volume descriptor.
  1135. .HH "Descriptor Character Set (BP 48-79)"
  1136. This field shall specify the characters in certain fields of file
  1137. descriptors and directory descriptors that are associated with the
  1138. Primary Volume Descriptor (see 2.2.4).
  1139. .C1
  1140. .X1
  1141. Why do we need this field?
  1142. It seems unnecessary.
  1143. .X2
  1144. .C2
  1145. .HH "Implementation Use (BP 80-511)"
  1146. This field shall be reserved for implementation use.
  1147. Its content is not specified by this standard.
  1148. .HH "Volume Space Management"
  1149. The unallocated parts of the volume are specified by an Unallocated Space Table.
  1150. It is a File Control Block (see 2.4)
  1151. consisting of indirect entries and space entries.
  1152. The space entry, defined below,
  1153. .C1
  1154. describes the unallocated volume space as the allocation records within the File Control Block.
  1155. .C2
  1156. .R1
  1157. A regular file has contents described by the allocation records in the File Control Block.
  1158. The Unallocated Space Table is like such a file, except that no data is
  1159. recorded and the extents are precisely the extents of unallocated space.
  1160. .R2
  1161. .HH "Space Entry"
  1162. .C1
  1163. The Space Entry shall specify extents that are unallocated and therefore,
  1164. available for use by an implementation.
  1165. .C2
  1166. It shall be recorded in the format shown in figure 9.
  1167. .xz "!Space Entry"
  1168. .Fd figSpaceEntry
  1169. .de zz
  1170. .Fg "9" "Space Entry"
  1171. ..
  1172. .1C
  1173. .KF 
  1174. .SP 1
  1175. .TS
  1176. center;
  1177. l l l.
  1178. _
  1179. BP    Field name    Contents
  1180. _
  1181. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1182. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1183. .C1
  1184. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1185. .C2
  1186. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1187. 16-19    Recorded Direct Entry Number    \f(CWuint32\fP (1.6.1.5)
  1188. 20    Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  1189. 21    Indirect Entry Number    \f(CWuint8\fP (1.6.1.1)
  1190. 22    Flags    \f(CWuint8\fP (1.6.1.1)
  1191. 23    File Type    \f(CWuint8\fP (1.6.1.1) = 5
  1192. 24-25    Number of Allocation Records (=N_AR)    \f(CWuint16\fP (1.6.1.3)
  1193. 26-[N_AR\(mu8+25]    Allocation Records    N_AR \f(CWshort_ar\fP (1.6.5.1)
  1194. _
  1195. .TE
  1196. .zz
  1197. .KE
  1198. .2C
  1199. .HH "Descriptor Checksum (BP 0-1)"
  1200. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1201. starting at the first byte of the Descriptor Checksum Length field.
  1202. .HH "Descriptor Checksum Length (BP 2-3)"
  1203. This field specifies how many bytes were used
  1204. in calculating the Descriptor Checksum.
  1205. .HH "Descriptor Version (BP 4-7)"
  1206. This field shall specify the version of this Descriptor.
  1207. The value 1 shall indicate the structure of this standard.
  1208. .HH "Descriptor Tag (BP 8-15)"
  1209. This field shall specify (DEADBEEF).
  1210. .HH "Recorded Direct Entry Number (BP 16-19)"
  1211. This field specifies the number of Direct Entries recorded in this File Control Block
  1212. prior to this entry.
  1213. .C1
  1214. .X1
  1215. we need to cover here (and everywhere else we talk about file control blocks)
  1216. exactly what this means: there is an implied hierarchy.
  1217. .X2
  1218. .C2
  1219. .HH "Direct Entry Number (BP 20)"
  1220. This field specifies the number of Direct Entries in this File Control Block.
  1221. .HH "Indirect Entry Number (BP 21)"
  1222. This field specifies the number of Indirect Entries in this File Control Block.
  1223. .HH "Flags (BP 22)"
  1224. This field shall specify recording information as specified in 2.4.2.8.
  1225. .C1
  1226. Bit 0 of this field shall be set to ZERO.
  1227. .C2
  1228. .HH "File Type (BP 23)"
  1229. .C1
  1230. This field shall be 5, specifying that this a unallocated space table.
  1231. .C2
  1232. .HH "Number of Allocation Records (=N_AR) (BP 24-25)"
  1233. This field shall specify the number of allocation records
  1234. recorded in this space entry.
  1235. .HH "Allocation Records (BP 26-[N_AR\(mu8+25])"
  1236. This field shall contain N_AR short form allocation records.
  1237. The type of allocation record shall be specified by the Flags field.
  1238. .HH "Sector Replacement"
  1239. This standard allows the specification of a sector replacement scheme
  1240. that is independent from any sector replacement performed
  1241. by the media recording subsystem.
  1242. The scheme is based on a sequence of Replacement Sector Records
  1243. which specify zero or more pairs of sector numbers
  1244. (\f2old\fP, \&\f2new\fP) with the meaning that references to sector
  1245. .I old
  1246. are translated into references to sector
  1247. .I new .
  1248. .HH "Replacement Sector Record Format"
  1249. The Replacement Sector Record shall be recorded in the format shown in
  1250. figure 10.
  1251. .xz "!Replacement Sector Record"
  1252. .Fd figReplacementSectorRecord
  1253. .de zz
  1254. .Fg "10" "Replacement Sector Record"
  1255. ..
  1256. .1C
  1257. .KF 
  1258. .SP 1
  1259. .TS
  1260. center;
  1261. l l l.
  1262. _
  1263. BP    Field name    Contents
  1264. _
  1265. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1266. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1267. .C1
  1268. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1269. .C2
  1270. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1271. .C1
  1272. 16-17    Extent Length    \f(CWuint16\fP (1.6.1.3)
  1273. .C2
  1274. 18-19    Number of Sector Addresses (=N_R)    \f(CWuint16\fP (1.6.1.3)
  1275. 20-23    Next Replacement Sector Record Location    \f(CWuint32\fP (1.6.1.5)
  1276. 24-27    Previous Replacement Sector Record Location    \f(CWuint32\fP (1.6.1.5)
  1277. 28-31    Next Replacement Sector Record Extent Location    \f(CWuint32\fP (1.6.1.5)
  1278. 32-35    Previous Replacement Sector Record Extent Location    \f(CWuint32\fP (1.6.1.5)
  1279. 36-[N_R\(mu8+35]    Sector Addresses    N_R 2\(mu\f(CWuint32\fP (1.6.1.5)
  1280. _
  1281. .TE
  1282. .zz
  1283. .KE
  1284. .2C
  1285. .HH "Descriptor Checksum (BP 0-1)"
  1286. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1287. starting at the first byte of the Descriptor Checksum Length field.
  1288. .HH "Descriptor Checksum Length (BP 2-3)"
  1289. This field specifies how many bytes were used
  1290. in calculating the Descriptor Checksum.
  1291. .HH "Descriptor Version (BP 4-7)"
  1292. This field shall specify the version of this Descriptor.
  1293. The value 1 shall indicate the structure of this standard.
  1294. .HH "Descriptor Tag (BP 8-15)"
  1295. This field shall specify (DEADBEEF).
  1296. .HH "Extent Length (BP 16-17)"
  1297. This field shall specify the length, in sectors, of the extent
  1298. this record is recorded in.
  1299. .HH "Number of Sector Addresses (=N_R) (BP 18-19)"
  1300. .C1
  1301. This field shall specify the number of pairs of Sector Addresses in this record.
  1302. .C2
  1303. .HH "Next Replacement Sector Record Location (BP 20-23)"
  1304. .C1
  1305. This field, if nonzero, shall specify the location, in sectors, of the next Replacement Sector Record.
  1306. .C2
  1307. .HH "Previous Replacement Sector Record Location (BP 24-27)"
  1308. .C1
  1309. This field, if nonzero, shall specify the location, in sectors, of the previous Replacement Sector Record.
  1310. .C2
  1311. .HH "Next Replacement Sector Record Extent Location (BP 28-31)"
  1312. .C1
  1313. This field, if nonzero, shall specify the location, in sectors,
  1314. of the next extent of Replacement Sector Records.
  1315. .C2
  1316. .HH "Previous Replacement Sector Record Extent Location (BP 32-35)"
  1317. .C1
  1318. This field, if nonzero, shall specify the location, in sectors,
  1319. of the previous extent of Replacement Sector Records.
  1320. .C2
  1321. .HH "Sector Addresses (BP 36-[N_R\(mu8+35])"
  1322. .EQ
  1323. delim $$
  1324. .EN
  1325. .C1
  1326. This field contains N_R pairs of sector addresses recorded contiguously.
  1327. .C2
  1328. Each pair $(s sub i , s sub { i + 1 } )$ specifies that references to sector
  1329. $s sub i$ be treated as references to sector $s sub { i + 1 }$.
  1330. .EQ
  1331. delim off
  1332. .EN
  1333. .HH "Reading Replacement Sector Records"
  1334. .EQ
  1335. delim $$
  1336. .EN
  1337. This subclause specifies how the Replacement Sector Records are to be read.
  1338. The location of the first extent of Replacement Sector Records shall be specified
  1339. in the Volume Header Record.
  1340. The location of successor extents shall be specified in each Replacement Sector Record.
  1341. A Replacement Sector Record is recorded at the start of a sector.
  1342.  
  1343. Replacement Sector Records shall be read in the following order:
  1344. .RS
  1345. .DL
  1346. The first Replacement Sector Record to be read is that recorded in the first sector of the Replacement Sector Record
  1347. extent specified in the Volume Header Record.
  1348. .DL
  1349. After reading a Replacement Sector Record, it shall specify the location of the next Replacement Sector Record to be read
  1350. in the Next Replacement Sector Record Location field.
  1351. .DL
  1352. If a sector $s$ cannot be read, then the remaining sectors in the extent
  1353. $s+1$, $s+2$ shall be read in that order until a Replacement Sector Record is read.
  1354. If no Replacement Sector Record was read, then if the location of the next extent of Replacement Sector Records is known,
  1355. then scanning for a Replacement Sector Record shall resume at that location.
  1356. In this case, scanning shall cease at the first unrecorded sector
  1357. or recorded sector that is not a Replacement Sector Record.
  1358. .RE
  1359.  
  1360. When the Replacement Sector Records are read in the above order, a translation specification
  1361. for a sector overrides any previous translation.
  1362.  
  1363. All the references to sectors in a Replacement Sector Record 
  1364. shall not be translated according to this subclause.
  1365. .X1
  1366. Neither are any we encountered in determining the governing Volume Header Record.
  1367. Once we have that, then only the address of the Replacement Sector Record extent is untranslated.
  1368. I believe every other address is translated.
  1369. .X2
  1370. .EQ
  1371. delim off
  1372. .EN
  1373. .HH "Partition Data Structures"
  1374. .HH "Partition Descriptors"
  1375. Zero or more partition descriptors shall be recorded on a volume.
  1376. Each partition descriptor shall be numbered consecutively starting from 1.
  1377. This sequence number shall be the assigned sequence
  1378. number of the partition descriptor.
  1379. Each partition descriptor having the same sequence number shall be identical.
  1380. Partition descriptors shall be recorded contiguously in a stream of bytes
  1381. described by a file control block (pointed to by a field in the Volume Header Record).
  1382. .R1
  1383. The sequence number is solely for supporting redundant copies of descriptors.
  1384. .R2
  1385. .HH "Partition Geometry Descriptor"
  1386. The Partition geometry Descriptor shall specify the size and location of
  1387. a partition and shall be recorded in the format shown in
  1388. figure 11.
  1389. It does not imply that space has been allocated from the volume for this partition
  1390. (see the Flags field below).
  1391. .C1
  1392. .X1
  1393. does the descriptor need a timestamp?
  1394. .X2
  1395. .C2
  1396. .R1
  1397. Note that partitions may overlap.
  1398. This allows media to be generated with several predefined partition definitions
  1399. of varying sizes and locations.
  1400. In general,
  1401. it is inadvisable to use file systems on overlapping partitions.
  1402. .R2
  1403. .xz "!Partition Geometry Descriptor"
  1404. .Fd figPartitionGeometryDescriptor
  1405. .de zz
  1406. .Fg "11" "Partition Geometry Descriptor"
  1407. ..
  1408. .1C
  1409. .KF 
  1410. .SP 1
  1411. .TS
  1412. center;
  1413. l l l.
  1414. _
  1415. BP    Field name    Contents
  1416. _
  1417. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1418. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1419. .C1
  1420. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1421. .C2
  1422. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1423. .C1
  1424. 16-19    Flags    \f(CWuint32\fP (1.6.1.5)
  1425. .C2
  1426. 20-23    File System Type    \f(CWuint32\fP (1.6.1.5)
  1427. 24-27    Partition Starting Location    \f(CWuint32\fP (1.6.1.5)
  1428. 28-31    Partition Length    \f(CWuint32\fP (1.6.1.5)
  1429. 32-35    Unallocated Space Table    \f(CWuint32\fP (1.6.1.5)
  1430. 36-39    Access Table    \f(CWuint32\fP (1.6.1.5)
  1431. 40-55    Unallocated Space Management    16 bytes
  1432. 56-57    Partition Sequence Number    \f(CWuint16\fP (1.6.1.3)
  1433. 58-73    Implementation Use    16 bytes
  1434. _
  1435. .TE
  1436. .zz
  1437. .KE
  1438. .2C
  1439. .HH "Descriptor Checksum (BP 0-1)"
  1440. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1441. starting at the first byte of the Descriptor Checksum Length field.
  1442. .HH "Descriptor Checksum Length (BP 2-3)"
  1443. This field specifies how many bytes were used
  1444. in calculating the Descriptor Checksum.
  1445. .HH "Descriptor Version (BP 4-7)"
  1446. This field shall specify the version of this Descriptor.
  1447. The value 1 shall indicate the structure of this standard.
  1448. .HH "Descriptor Tag (BP 8-15)"
  1449. This field shall specify (DEADBEEF).
  1450. .HH "Flags (BP 16-19)"
  1451. This field shall specify certain characteristics of the partition as follows.
  1452. .ne 5v
  1453. Bit 5n
  1454. Interpretation
  1455. 0
  1456. If this bit is ONE,
  1457. it shall specify that space
  1458. has been allocated to this partition.
  1459. If this bit is ZERO,
  1460. it shall specify that space
  1461. has not been allocated to this partition.
  1462. 1
  1463. If this bit is ONE,
  1464. it shall specify that unallocated space on this partition shall be
  1465. specified as described in 2.3.4.
  1466. If this bit is ZERO,
  1467. it shall specify that the method of unallocated space management on this partition
  1468. is not specified by this standard.
  1469. 2
  1470. If this bit is ONE,
  1471. it shall specify that access to this partition shall be specified as
  1472. described in 2.3.5.
  1473. If this bit is ZERO,
  1474. it shall specify that the method of access management for this partition
  1475. is not specified by this standard.
  1476. .br
  1477. .C1
  1478. 3-31
  1479. Reserved for future standardization.
  1480. .C2
  1481. .HH "File System Type (BP 20-23)"
  1482. This field shall specify an identification
  1483. of the file system structure written within the partition.
  1484. .TS
  1485. center;
  1486. c c
  1487. c l.
  1488. _
  1489. Number    Interpretation
  1490. 0    Undefined file system type
  1491. 1    X3B11.1 Write-Once File System
  1492. .C1
  1493. 2    X3B11.1 Rewriteable File system
  1494. .C2
  1495. 3-255    Reserved
  1496. 256-    Registered file system types
  1497. _
  1498. .TE
  1499. .HH "Partition Starting Location (BP 24-27)"
  1500. This field shall specify the sector number at which the partition begins.
  1501. .HH "Partition Length (BP 28-31)"
  1502. This field shall specify the number of sectors which comprise the partition.
  1503. .HH "Unallocated Space Table (BP 32-35)"
  1504. This field shall specify the address of the Unallocated Space Table
  1505. (see 2.3.4) for this partition.
  1506. This field shall be zero unless bit 1 of the Flags field is set to ONE.
  1507. .HH "Access Table (BP 36-39)"
  1508. This field shall specify the address of the Access Table
  1509. (see 2.3.5) for this partition.
  1510. This field shall be zero unless bit 2 of the Flags field is set to ONE.
  1511. .HH "Unallocated Space Management (BP 40-55)"
  1512. This field is available for implementation use
  1513. for managing unallocated space for the partition.
  1514. .X1
  1515. the committee had explicitly requested that the previous two fields be merged
  1516. into this field for the case of an X3B11.1 file system.
  1517. I have split them out again because the space/access management mechanisms
  1518. are generic and this will encourage other file system types to use them.
  1519. .X2
  1520. .HH "Partition Sequence Number (BP 56-57)"
  1521. The field shall specify the sequence number for the partition.
  1522. .HH "Implementation Use (BP 58-73)"
  1523. This field shall be reserved for implementation use.
  1524. Its content is not specified by this standard.
  1525. .HH "Partition Implementation Use Descriptor"
  1526. The Partition Implementation Use Descriptor shall be recorded in the format
  1527. shown in 12
  1528. and shall identify a partition within the
  1529. volume space and an implementation which can recognize and act upon
  1530. the content of field reserved for implementation use in the partition
  1531. descriptor.
  1532. .X1
  1533. This descriptor need not be sector-sized.
  1534. .X2
  1535. .xz "!Partition Implementation Use Descriptor"
  1536. .Fd figPartitionImplementationUseDescriptor
  1537. .de zz
  1538. .Fg "12" "Partition Implementation Use Descriptor"
  1539. ..
  1540. .1C
  1541. .KF 
  1542. .SP 1
  1543. .TS
  1544. center;
  1545. l l l.
  1546. _
  1547. BP    Field name    Contents
  1548. _
  1549. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1550. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1551. .C1
  1552. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1553. .C2
  1554. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1555. 16-47    Descriptor Character Set    \f(CWcharspec\fP (1.6.2)
  1556. 48-49    Partition Sequence Number    \f(CWuint16\fP (1.6.1.3)
  1557. .C1
  1558. 50-51    Reserved    2 (00) bytes
  1559. .C2
  1560. 52-83    Partition Identifier    32 a-characters
  1561. 84-211    Implementation Identifier    128 f-characters
  1562. 212-467    Implementation Use    256 bytes
  1563. _
  1564. .TE
  1565. .zz
  1566. .KE
  1567. .2C
  1568. .HH "Descriptor Checksum (BP 0-1)"
  1569. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1570. starting at the first byte of the Descriptor Checksum Length field.
  1571. .HH "Descriptor Checksum Length (BP 2-3)"
  1572. This field specifies how many bytes were used
  1573. in calculating the Descriptor Checksum.
  1574. .HH "Descriptor Version (BP 4-7)"
  1575. This field shall specify the version of this Descriptor.
  1576. The value 1 shall indicate the structure of this standard.
  1577. .HH "Descriptor Tag (BP 8-15)"
  1578. This field shall specify (DEADBEEF).
  1579. .HH "Descriptor Character Set (BP 16-47)"
  1580. This field shall specify the characters in certain fields of the
  1581. Partition Descriptor.
  1582. .HH "Partition Sequence Number (BP 48-49)"
  1583. This field shall specify the partition sequence number.
  1584. .HH "Reserved (BP 50-51)"
  1585. .HH "Partition Identifier (BP 52-83)"
  1586. This field shall specify an identification of the partition.
  1587. .HH "Implementation Identifier (BP 84-211)"
  1588. This field shall specify an identification of an implementation which
  1589. .C1
  1590. can recognize and act upon the contents of the Implementation Use field.
  1591. .C2
  1592. .HH "Implementation Use (BP 212-467)"
  1593. This field shall be reserved for implementation use.
  1594. Its content is not specified by this standard.
  1595. .X1
  1596. Should we hardcode in a size or set up a scheme to allow a variable length?
  1597. .X2
  1598. .HH "Partition Space Management"
  1599. An implementation may specify (see 2.3.2.5) that the unallocated
  1600. space within a partition
  1601. .C1
  1602. shall be specified by an Unallocated Space Table.
  1603. .C2
  1604. This is a File Control Block consisting of indirect entries and space entries (see 2.2.6.1).
  1605. This is exactly the same mechanism as volume space management.
  1606. .R1
  1607. Managing unallocated space in partitions and in volumes are two isomorphic tasks.
  1608. Thus, we use the same data structure and mechanism.
  1609. .X1
  1610. This might change depending on how we handle the ordering of unallocated space extents.
  1611. .X2
  1612.  
  1613. This subclause, and the partition access subclause following,
  1614. are not explicitly referred to in this clause.
  1615. They are made available for clients, such as file systems,
  1616. to use as standard mechanisms.
  1617. .R2
  1618. .HH "Partition Access Management"
  1619. An implementation may specify (see 2.3.2.5)
  1620. that access to a partition shall be specified
  1621. by a Partition Access Table.
  1622. This is a File Control Block consisting of Indirect Entries and Access Entries described below.
  1623. .R1
  1624. Partition access management entails monitoring write access to a partition
  1625. and recording when the data structures described in this standard have
  1626. been successfully recorded.
  1627. .R2
  1628. .HH "Access Entry Format"
  1629. An Access Entry shall be recorded in the format shown in figure 13.
  1630. .xz "!Access Entry"
  1631. .Fd figAccessEntry
  1632. .de zz
  1633. .Fg "13" "Access Entry"
  1634. ..
  1635. .1C
  1636. .KF 
  1637. .SP 1
  1638. .TS
  1639. center;
  1640. l l l.
  1641. _
  1642. BP    Field name    Contents
  1643. _
  1644. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1645. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1646. .C1
  1647. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1648. .C2
  1649. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1650. 16-19    Recorded Direct Entry Number    \f(CWuint32\fP (1.6.1.5)
  1651. 20    Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  1652. 21    Indirect Entry Number    \f(CWuint8\fP (1.6.1.1)
  1653. 22    Flags    \f(CWuint8\fP (1.6.1.1)
  1654. 23    File Type    \f(CWuint8\fP (1.6.1.1) = 13
  1655. 24    Access Type    \f(CWuint8\fP (1.6.1.1)
  1656. 25-36    Recording Time    \f(CWtimestamp\fP (1.6.3.9)
  1657. 37-511    Implementation Use    475 bytes
  1658. _
  1659. .TE
  1660. .zz
  1661. .KE
  1662. .2C
  1663. .HH "Descriptor Checksum (BP 0-1)"
  1664. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1665. starting at the first byte of the Descriptor Checksum Length field.
  1666. .HH "Descriptor Checksum Length (BP 2-3)"
  1667. This field specifies how many bytes were used
  1668. in calculating the Descriptor Checksum.
  1669. .HH "Descriptor Version (BP 4-7)"
  1670. This field shall specify the version of this Descriptor.
  1671. The value 1 shall indicate the structure of this standard.
  1672. .HH "Descriptor Tag (BP 8-15)"
  1673. This field shall specify (DEADBEEF).
  1674. .HH "Recorded Direct Entry Number (BP 16-19)"
  1675. This field specifies the number of Direct Entries recorded in this File Control Block hierarchy
  1676. prior to this entry.
  1677. .HH "Direct Entry Number (BP 20)"
  1678. This field specifies the number of Direct Entries in this File Control Block.
  1679. .HH "Indirect Entry Number (BP 21)"
  1680. This field specifies the number of Indirect Entries in this File Control Block.
  1681. .HH "Flags (BP 22)"
  1682. .C1
  1683. Reserved for future standardization.
  1684. .C2
  1685. .HH "File Type (BP 23)"
  1686. This field shall be 13, specifying that this a partition access table.
  1687. .HH "Access Type (BP 24)"
  1688. .C1
  1689. This field shall specify the type of Access Entry.
  1690. .C2
  1691. The types are
  1692. .ne 5v
  1693. "Type" 8n
  1694. Interpretation
  1695. 0
  1696. Open: This Access Entry shall be recorded before any data
  1697. is recorded in the partition.
  1698. 1
  1699. Close:
  1700. .C1
  1701. This Access Entry may be recorded only after all 
  1702. user data has been completely recorded and the volume 
  1703. and file data structures recorded on the medium conform to this standard.
  1704. .C2
  1705. 2
  1706. .C1
  1707. Stable:
  1708. This Access Entry may be recorded only after the volume 
  1709. and file data structures recorded on the medium conform to this standard.
  1710. Some user data may not have been recorded.
  1711. .C2
  1712. 3-255
  1713. Reserved for future standardization.
  1714. .HH "Recording Time (BP 25-36)"
  1715. This field shall specify the time of recording of this Access Entry.
  1716. If all eight numbers in this field are zero, it shall mean
  1717. that the date and time are not specified.
  1718. .HH "Implementation Use (BP 37-511)"
  1719. This field shall be reserved for implementation use.
  1720. Its content is not specified by this standard.
  1721. .R1
  1722. The partition access entries provide a standard, portable and convenient way
  1723. for implementations to indicate that write access to a medium has been successfully
  1724. terminated.
  1725. Because of optical media's large size and relatively slow access,
  1726. it is particularly important to avoid unnecessary consistency checks over
  1727. a partition or volume.
  1728.  
  1729. As an example, consider a partition mounted as a file system on a computer.
  1730. When the first write request for that partition is issued,
  1731. an Open Access Entry is recorded prior to performing the write request.
  1732. When the partition is unmounted, a Close Access Entry is recorded after
  1733. any queued write requests have been performed.
  1734. Periodically, Stable Access Entries may be written after bringing up to date
  1735. the data structures specified in this standard.
  1736. Finally, systems, such as file servers, that keep file systems mounted
  1737. for long periods of time and wish to minimize the risk of
  1738. a system failure and the use of lengthy recovery procedures,
  1739. might adopt heuristics such as recording a Close Access
  1740. Entry every 6 hours or after 10 minutes without a write request.
  1741. .R2
  1742. .HH "File Control Block"
  1743. This clause shall specify the recording of data bytes by
  1744. .I "file control blocks"
  1745. grouped together into a file control block hierarchy.
  1746. Each particular instance or version of the recorded data bytes
  1747. shall be specified by a
  1748. .I "direct entry" .
  1749.  
  1750. A file control block shall be a sequence of file control block entries
  1751. recorded over an extent.
  1752. An entry of the sequence shall be one of the following
  1753. .RS
  1754. .DL
  1755. unrecorded, if the entry has not yet been recorded
  1756. .DL
  1757. a direct entry, describing a recorded occurrence of a file or a set of extents
  1758. .DL
  1759. an indirect entry, describing additional file control blocks.
  1760. .RE
  1761.  
  1762. There are several types of direct entry.
  1763. However, all entries, both direct and indirect,
  1764. share several fields recorded identically.
  1765. In particular, each recorded entry contains
  1766. .I nd ,
  1767. the number of direct entries,
  1768. .I ni ,
  1769. the number of indirect entries, and
  1770. .I nrde ,
  1771. the number of recorded direct entries prior to recording this entry.
  1772. .R1
  1773. This standard requires a data structure that describes extents of bytes
  1774. recorded in a volume.
  1775. This can be used to record a user's file, the contents of a directory
  1776. or various system data.
  1777. Some media, such as WORM optical disks, cannot rerecord a sector
  1778. once it has been written, and thus this standard requires a data structure
  1779. that can describe successive versions of regions of bytes recorded in a volume.
  1780. .C1
  1781. Note that this structure is efficient on rewritable media by simply setting
  1782. .C2
  1783. .I nd
  1784. to one and
  1785. .I ni
  1786. to zero.
  1787. Alternatively, the same structures allow
  1788. .C1
  1789. rewritable media to support
  1790. a history of all versions of a file.
  1791. .C2
  1792.  
  1793. The file control block described here is not suitable for sequentially recorded media.
  1794. .R2
  1795. .HH "Traversing the File Control Block"
  1796. A file control block shall be recorded over an extent of
  1797. .C1
  1798. sectors or logical blocks.
  1799. The address of a file control block shall be
  1800. the address of the extent.
  1801. The extent shall consist of one or more file control block entries,
  1802. recorded one per sector or logical block, as follows:
  1803. .C2
  1804. .RS
  1805. .DL
  1806. The first Direct Entry Number
  1807. entries shall either be unrecorded or be recorded with direct entries.
  1808. .DL
  1809. The next Indirect Entry Number
  1810. entries shall either be unrecorded or be recorded with indirect entries
  1811. (see 2.4.3).
  1812. .DL
  1813. A direct entry shall not be recorded
  1814. until all lower numbered direct entries have been recorded.
  1815. .DL
  1816. The first indirect entry shall not be recorded until all of the
  1817. .C1
  1818. direct entries in this file control block have been recorded.
  1819. .C2
  1820. .DL
  1821. An indirect entry shall not be recorded
  1822. until the file control blocks specified by all lower numbered indirect entries
  1823. have been recorded.
  1824. .RE
  1825. .HH "Common File Control Block Entry Format"
  1826. All the entries in a File Control Block shall be recorded in a format of two parts.
  1827. The first part, shown in figure 14, shall be
  1828. the same for all types of entries.
  1829. The second part is unique to each entry and is described in the definition
  1830. of that entry.
  1831. .xz "!Common File Control Block Entry"
  1832. .Fd figCommonFileControlBlockEntry
  1833. .de zz
  1834. .Fg "14" "Common File Control Block Entry"
  1835. ..
  1836. .1C
  1837. .KF 
  1838. .SP 1
  1839. .TS
  1840. center;
  1841. l l l.
  1842. _
  1843. BP    Field name    Contents
  1844. _
  1845. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1846. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1847. .C1
  1848. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1849. .C2
  1850. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1851. .C1
  1852. 16-19    Recorded Direct Entry Number    \f(CWuint32\fP (1.6.1.5)
  1853. .C2
  1854. 20    Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  1855. 21    Indirect Entry Number    \f(CWuint8\fP (1.6.1.1)
  1856. 22    Flags    \f(CWuint8\fP (1.6.1.1)
  1857. 23    File Type    \f(CWuint8\fP (1.6.1.1)
  1858. _
  1859. .TE
  1860. .zz
  1861. .KE
  1862. .2C
  1863. .HH "Descriptor Checksum (BP 0-1)"
  1864. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1865. starting at the first byte of the Descriptor Checksum Length field.
  1866. .HH "Descriptor Checksum Length (BP 2-3)"
  1867. This field specifies how many bytes were used
  1868. in calculating the Descriptor Checksum.
  1869. .HH "Descriptor Version (BP 4-7)"
  1870. This field shall specify the version of this Descriptor.
  1871. The value 1 shall indicate the structure of this standard.
  1872. .HH "Descriptor Tag (BP 8-15)"
  1873. This field is different for each type of descriptor.
  1874. .HH "Recorded Direct Entry Number (BP 16-19)"
  1875. This field specifies the number of Direct Entries recorded in this File Control Block hierarchy
  1876. prior to this entry.
  1877. .HH "Direct Entry Number (BP 20)"
  1878. This field specifies the number of Direct Entries in this File Control Block.
  1879. .HH "Indirect Entry Number (BP 21)"
  1880. This field specifies the number of Indirect Entries in this File Control Block.
  1881. .HH "Flags (BP 22)"
  1882. This field shall specify recording
  1883. information about the file.
  1884. .ne 5v
  1885. Bit 8n
  1886. Interpretation
  1887. 0
  1888. if set to ZERO, it shall mean that Short Form Allocation Records are used;
  1889. if set to ONE, it shall mean that Long Form Allocation Records are used
  1890. 1
  1891. if set to ONE and the file is a directory,
  1892. the directory's entries are sorted according to 3.5.4.
  1893. If set to ZERO, the meaning is undefined.
  1894. 2-7
  1895. Reserved for future standardization.
  1896. .HH "File Type (BP 23)"
  1897. This field shall specify the type of the file.
  1898. .ne 5v
  1899. Number 8n
  1900. Interpretation
  1901. 0
  1902. shall mean that the type of the file is not specified by this field
  1903. 1
  1904. shall mean that the file is a directory
  1905. 2
  1906. shall mean that the file is regular file
  1907. 3
  1908. shall mean that the information in the file is a set
  1909. of volume descriptors
  1910. 4
  1911. shall mean that the information in the file is
  1912. .C1
  1913. a set of partition descriptors
  1914. .C2
  1915. 5
  1916. .C1
  1917. shall mean that this is a Space Entry
  1918. .C2
  1919. 6
  1920. .C1
  1921. .X1
  1922. no longer used
  1923. .X2
  1924. .C2
  1925. 7
  1926. shall
  1927. mean that the file is an Extended Attribute file
  1928. 8
  1929. shall mean that the
  1930. file is an Implementation Use file
  1931. 9
  1932. shall mean that the file is an
  1933. Application Use file
  1934. 10
  1935. shall mean that the file is a block special
  1936. device file
  1937. 11
  1938. shall mean that the file is a character special device file
  1939. 12
  1940. shall mean that this is an Indirect Entry
  1941. 13
  1942. .C1
  1943. shall mean that this is an Access Entry
  1944. .C2
  1945. 14-255
  1946. reserved for future standardization
  1947. .HH "Indirect Entry"
  1948. An Indirect Entry shall be recorded in the format
  1949. shown in figure 15.
  1950. .xz "!Indirect Entry"
  1951. .Fd figIndirectEntry
  1952. .de zz
  1953. .Fg "15" "Indirect Entry"
  1954. ..
  1955. .1C
  1956. .KF 
  1957. .SP 1
  1958. .TS
  1959. center;
  1960. l l l.
  1961. _
  1962. BP    Field name    Contents
  1963. _
  1964. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  1965. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  1966. .C1
  1967. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  1968. .C2
  1969. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  1970. 16    Recorded Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  1971. 17    Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  1972. 18    Indirect Entry Number    \f(CWuint8\fP (1.6.1.1)
  1973. 19    Flags    \f(CWuint8\fP (1.6.1.1)
  1974. 20    File Type    \f(CWuint8\fP (1.6.1.1) = 12
  1975. 21-26    Indirect Entry Location    \f(CWaddress\fP (3.2.2)
  1976. _
  1977. .TE
  1978. .zz
  1979. .KE
  1980. .2C
  1981. .HH "Descriptor Checksum (BP 0-1)"
  1982. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  1983. starting at the first byte of the Descriptor Checksum Length field.
  1984. .HH "Descriptor Checksum Length (BP 2-3)"
  1985. This field specifies how many bytes were used
  1986. in calculating the Descriptor Checksum.
  1987. .HH "Descriptor Version (BP 4-7)"
  1988. This field shall specify the version of this Descriptor.
  1989. The value 1 shall indicate the structure of this standard.
  1990. .HH "Descriptor Tag (BP 8-15)"
  1991. This field shall specify (DEADBEEF).
  1992. .HH "Recorded Direct Entry Number (BP 16)"
  1993. This field specifies the number of Direct Entries recorded in this File Control Block hierarchy
  1994. prior to this entry.
  1995. .HH "Direct Entry Number (BP 17)"
  1996. This field specifies the number of Direct Entries in this File Control Block.
  1997. .HH "Indirect Entry Number (BP 18)"
  1998. This field specifies the number of Indirect Entries in this File Control Block.
  1999. .HH "Flags (BP 19)"
  2000. This field shall specify recording information as specified in 2.4.2.8.
  2001. .HH "File Type (BP 20)"
  2002. This field shall contain 12.
  2003. .HH "Indirect Entry Location (BP 21-26)"
  2004. The field shall specify the location of an indirect File Control Block.
  2005. .HH "Direct Entry"
  2006. A direct entry shall be recorded as either a direct entry (see 3.6.1),
  2007. an access entry (see 2.3.5.1)
  2008. or a space entry (see 2.2.6.1).
  2009.  
  2010. .X1
  2011. This is confusing because we are using a file control block to describe
  2012. things which aren't files (like space tables and partition access).
  2013. I would propose a terminology change to help things out:
  2014. what is being controlled is data regions, so lets rename the file control block to
  2015. .I "data control block" .
  2016. Then what is now a direct entry can be split into three:
  2017. a file entry (which describes file-like things)
  2018. a space entry (which describes space-like things)
  2019. and an access entry (which describes partition access things).
  2020. The advantage is that the latter two don't need all those fields that the former
  2021. needs, and so can omit them and have more allocation records within the entry.
  2022. .X2
  2023. .HH "Volume Set"
  2024. A volume set shall consist of one or more volumes having common volume
  2025. set identification and identifying the same coded graphic character
  2026. sets for use within selected descriptor fields (see 1.6.2.5).
  2027. .C1
  2028. .X1
  2029. Which fields, exactly?
  2030. I suspect any that depend on the character set, namely [afc]-characters.
  2031. And referring to 1.6.2.5 seems weird.
  2032. .X2
  2033. .C2
  2034. All volumes in a volume set shall be numbered consecutively starting from 1.
  2035. This number shall be the assigned volume sequence number of the
  2036. volume.
  2037.  
  2038. The logical block size shall be the same for
  2039. all volumes of a volume set.
  2040. .C1
  2041. .X1
  2042. why do we talk of logical blocks here?
  2043. .X2
  2044. .C2
  2045. .BP
  2046. .HH "File System"
  2047. This clause describes how to record sets of files and directories.
  2048. It relies on a volume and partition labeling scheme, such as
  2049. clause 2 or other standards, for specifying
  2050. the location of recorded data.
  2051.  
  2052. This clause records data in partitions,
  2053. although it manages the partition sectors in larger units called logical blocks.
  2054. All directories, files and the content of files are recorded within partitions.
  2055. A set of files and directories, or file set, is described by a File Set Descriptor
  2056. .C1
  2057. which, among other things, specifies the root of a directory hierarchy.
  2058. .C2
  2059. Multiple file sets may be recorded in the same partition.
  2060. Finally, one or more file sets shall be combined together to form a logical volume.
  2061. .R1
  2062. This may seem harder or more difficult to understand than it needs to be.
  2063. Unfortunately, while there is considerable experience in file systems
  2064. spanning multiple volumes, there is little agreement in the 
  2065. terminology used nor semantics provided.
  2066.  
  2067. The basic building block is a file set.
  2068. It specifies administrative details (including the default character set)
  2069. and the root of a directory hierarchy.
  2070. The descriptors for files (and their contents) and directories (and their members)
  2071. use an addressing scheme which contains a partition number.
  2072. Thus, file sets (and files and directories) can span multiple partitions
  2073. and therefore, can span multiple volumes.
  2074.  
  2075. It is intended that the file system described here could use any volume/partition
  2076. labeling scheme; the main needs are a consistent means for identifying
  2077. partitions, such as (volume v, partition p), and a way of accessing
  2078. groups of sectors in partitions as logical blocks.
  2079. .R2
  2080. .HH "Interface to the Underlying Volume and Partition Labeling Scheme"
  2081. This clause shall specify the recording of directory hierarchies, files
  2082. and their contents.
  2083. .C1
  2084. This recording is done within partitions.
  2085. However, there are three accesses to data outside the partition:
  2086. .C2
  2087. "1) Space Management" 5n
  2088. .br
  2089. This shall be specified in a partition descriptor.
  2090. For the volume and partition scheme of clause 2,
  2091. this standard specifies that the Partition Geometry Descriptor
  2092. .C1
  2093. shall specify that the partition space management scheme of
  2094. 2.3.4 be used (see 2.3.2.5).
  2095. .C2
  2096. "2) Access Management"
  2097. .br
  2098. This shall be specified in a partition descriptor.
  2099. For the volume and partition scheme of clause 2,
  2100. this standard specifies that the Partition Geometry Descriptor
  2101. .C1
  2102. shall specify that the partition access scheme of 2.3.5
  2103. be used (see 2.3.2.5).
  2104. .C2
  2105. "3) File Set"
  2106. .br
  2107. This descriptor, described below, shall be recorded as a volume descriptor.
  2108. For the volume and partition scheme of clause 2,
  2109. the File Set Descriptor shall be recorded as an Implementation Use
  2110. Volume Descriptor with a particular Implementation Identifier as specified in
  2111. 3.4.1.
  2112. .R1
  2113. This subclause tries to describe exactly the hooks the file system needs
  2114. outside of the partitions where the data and control structures are recorded.
  2115. The mechanism of using a funny implementation identifier to distinguish
  2116. a File Set descriptor is not very good.
  2117. .R2
  2118. .HH "Basic Types"
  2119. .HH "Pathname"
  2120. A pathname is used to specify a file or directory by name.
  2121. It shall consist of an optional beginning SEPARATOR-1,
  2122. followed by zero or more identifiers separated by SEPARATOR-1.
  2123.  
  2124. A pathname shall be interpreted in the following way.
  2125. Each identifier shall be located in the directory specified by its predecessor.
  2126. For example, in the pathname
  2127. .C1
  2128. .CW x\f1SEPARATOR-1\fPy ,
  2129. .C2
  2130. file
  2131. .CW y
  2132. is located in directory
  2133. .CW x .
  2134. If the pathname begins with a SEPARATOR-1, the predecessor is taken to be the
  2135. root directory.
  2136. If the pathname does not begin with a SEPARATOR-1,
  2137. the predecessor is taken to be the current directory.
  2138. The reserved identifier SEPARATOR-2 specifies the current directory.
  2139. The reserved identifier SEPARATOR-3 specifies the parent of the current directory.
  2140. All but the last identifier in a pathname must be a directory identifier.
  2141. If it exists, the last identifier may be either
  2142. a directory identifier or a file identifier.
  2143.  
  2144. A file identifier is a sequence of one or more f-characters,
  2145. optionally followed by version specifier.
  2146. A version specifier is a SEPARATOR-4 optionally followed
  2147. by one or more digits from f-characters representing a number in the range 1 to 32767.
  2148. .X1
  2149. This is subtly different from the last draft which seemed to allow
  2150. the separator-4  to be missing but have a version number.
  2151. .X2
  2152. A directory identifier is one or more f-characters.
  2153.  
  2154. .C1
  2155. The separators used above shall be recorded as the following byte values:
  2156. .TS
  2157. center;
  2158. c c.
  2159. SEPARATOR-1    (1C)
  2160. SEPARATOR-2    (1D)
  2161. SEPARATOR-3    (1E)
  2162. SEPARATOR-4    (1F)
  2163. .TE
  2164. .C2
  2165. .R1
  2166. This section is new and replaces the definitions of file identifier, directory identifier, path identifier and file specification.
  2167. It is adapted from ISO 9945-1.
  2168. .R2
  2169. .HH "Recorded Address"
  2170. A logical block address shall be specified by an
  2171. .CW address
  2172. recorded in the format shown in figure 16.
  2173. .xz "!\f(CWaddress\fP"
  2174. .Fd figaddress
  2175. .de zz
  2176. .Fg "16" "\f(CWaddress\fP"
  2177. ..
  2178. .1C
  2179. .KF 
  2180. .SP 1
  2181. .TS
  2182. center;
  2183. l l l.
  2184. _
  2185. BP    Field name    Contents
  2186. _
  2187. 0-1    Partition Number    \f(CWuint16\fP (1.6.1.3)
  2188. 2-5    Block or Segment Number    \f(CWuint32\fP (1.6.1.5)
  2189. _
  2190. .TE
  2191. .zz
  2192. .KE
  2193. .2C
  2194. .HH "Partition Number (BP 0-1)"
  2195. This field shall specify the partition sequence number.
  2196. .X1
  2197. We have not yet resolved the issue of how partition numbers are managed.
  2198. .X2
  2199. .HH "Block or Segment Number (BP 2-5)"
  2200. Local within the partition.
  2201. .HH "Allocation Records"
  2202. Extents representing recorded data or space yet to be allocated shall
  2203. be described by allocation records.
  2204. .HH "Long Allocation Record"
  2205. The Long Allocation Record, or
  2206. .CW long_ar ,
  2207. shall be recorded in the format shown in figure 17.
  2208. .xz "!Long Allocation Record"
  2209. .Fd figLongAllocationRecord
  2210. .de zz
  2211. .Fg "17" "Long Allocation Record"
  2212. ..
  2213. .1C
  2214. .KF 
  2215. .SP 1
  2216. .TS
  2217. center;
  2218. l l l.
  2219. _
  2220. BP    Field name    Contents
  2221. _
  2222. 0-5    Extent Location    \f(CWaddress\fP (3.2.2)
  2223. 6-9    Data Length    \f(CWuint32\fP (1.6.1.5)
  2224. 10-15    Implementation Use    6 bytes
  2225. _
  2226. .TE
  2227. .zz
  2228. .KE
  2229. .2C
  2230. .HH "Extent Location (BP 0-5)"
  2231. This field shall specify the location of the start of the extent,
  2232. if any information has been recorded in the
  2233. extent, or may be zero if no information has been recorded in the
  2234. extent.
  2235. .HH "Data Length (BP 6-9)"
  2236. The contents of this field is defined as that
  2237. of the same field in 1.6.5.1.2.
  2238. .HH "Implementation Use (BP 10-15)"
  2239. This field shall be reserved for implementation use.
  2240. Its content is not specified by this standard.
  2241. .HH "Logical Volume"
  2242. A logical volume shall be the set of partitions on which a set of
  2243. files is recorded.
  2244.  
  2245. A logical volume shall consist of one or more file sets having common
  2246. logical volume identification.
  2247. All file sets in a logical volume shall be numbered consecutively
  2248. starting from 1; this number shall be the logical volume sequence number.
  2249. .C1
  2250. .X1
  2251. Be wary of this numbering stuff.
  2252. it is file sets that are being numbered, not partitions
  2253. (despite what the field names and descriptions imply).
  2254. .X2
  2255. .C2
  2256.  
  2257. The file set that has the highest logical volume sequence number of
  2258. the logical volume shall contain a description of all the directories
  2259. and regular files that make up the logical volume.
  2260. .X1
  2261. This subclause is in a state of flux;
  2262. this reflects the committee's thinking.
  2263. The previous draft talked about partitions; this has been changed to file sets.
  2264. .X2
  2265. .HH "File Set"
  2266. .HH "File Set Descriptor"
  2267. The File Set Descriptor shall describe a set of files and directories and
  2268. shall be recorded in the format shown in 18.
  2269. .X1
  2270. I am unsure of the types of the various Identifiers.
  2271. .C1
  2272. We may also want an advisory maximum volume sequence number.
  2273. .C2
  2274. .X2
  2275. .xz "!File Set Descriptor"
  2276. .Fd figFileSetDescriptor
  2277. .de zz
  2278. .Fg "18" "File Set Descriptor"
  2279. ..
  2280. .1C
  2281. .KF 
  2282. .SP 1
  2283. .TS
  2284. center;
  2285. l l l.
  2286. _
  2287. BP    Field name    Contents
  2288. _
  2289. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  2290. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  2291. .C1
  2292. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  2293. .C2
  2294. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  2295. 16-47    Implementation Identifier    32 a-characters
  2296. 48-79    Descriptor Character Set    \f(CWcharspec\fP (1.6.2)
  2297. 80-83    Logical Block Size    \f(CWuint32\fP (1.6.1.5)
  2298. 84-89    Root Directory File Control Block Location    \f(CWaddress\fP (3.2.2)
  2299. 90-91    Logical Volume Sequence Number    \f(CWuint16\fP (1.6.1.3)
  2300. 92-219    Logical Volume Identifier    128 f-characters
  2301. 220-251    File Set Character Set    \f(CWcharspec\fP (1.6.2)
  2302. 252-283    Application Identifier    32 a-characters
  2303. 284-315    Copyright File Identifier    32 a-characters
  2304. 316-347    Abstract File Identifier    32 a-characters
  2305. 348-511    Reserved    164 (00) bytes
  2306. _
  2307. .TE
  2308. .zz
  2309. .KE
  2310. .2C
  2311. .HH "Descriptor Checksum (BP 0-1)"
  2312. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  2313. starting at the first byte of the Descriptor Checksum Length field.
  2314. .HH "Descriptor Checksum Length (BP 2-3)"
  2315. This field specifies how many bytes were used
  2316. in calculating the Descriptor Checksum.
  2317. .HH "Descriptor Version (BP 4-7)"
  2318. This field shall specify the version of this Descriptor.
  2319. The value 1 shall indicate the structure of this standard.
  2320. .HH "Descriptor Tag (BP 8-15)"
  2321. This field shall specify (DEADBEEF).
  2322. .HH "Implementation Identifier (BP 16-47)"
  2323. This field shall specify the string ``\f(CWX3B11.1 File System\fP''. 
  2324. .HH "Descriptor Character Set (BP 48-79)"
  2325. This field shall specify the characters in certain fields of this descriptor.
  2326. .HH "Logical Block Size (BP 80-83)"
  2327. This field shall specify the size, in bytes, of a logical block.
  2328. .X1
  2329. This currently has to be the same for all volumes in a logical volume.
  2330. Given the demarcation into labeling and file structure, I don't think this
  2331. restriction need apply (but if it changes, we have to think carefully
  2332. about allocation records).
  2333. .X2
  2334. .HH "Root Directory File Control Block Location (BP 84-89)"
  2335. The field shall specify the location of the file control block describing the root
  2336. directory associated with the File Set Descriptor.
  2337. If this number is zero, it shall mean that the file control block is
  2338. not recorded.
  2339. .HH "Logical Volume Sequence Number (BP 90-91)"
  2340. This field shall specify the ordinal
  2341. number of the partition in the logical volume of which the partition
  2342. is a member.
  2343. .HH "Logical Volume Identifier (BP 92-219)"
  2344. This field shall specify an identification of the logical volume of
  2345. which the partition is a member.
  2346. If all bytes of this field are set to (00), it shall mean that the
  2347. partition is not a member of a logical volume.
  2348. .HH "File Set Character Set (BP 220-251)"
  2349. This field shall specify the characters in certain fields of file
  2350. descriptors and directory descriptors that are associated with the
  2351. directory hierarchy associated with this descriptor.
  2352. .C1
  2353. .X1
  2354. We need to make this specific; which fields exactly?
  2355. .X2
  2356. .C2
  2357. .HH "Application Identifier (BP 252-283)"
  2358. This field shall specify an identification of the specification of how
  2359. the data are recorded on those partitions of the logical volume which
  2360. have a sequence number less than or equal to the assigned logical
  2361. volume sequence number of the partition.
  2362. .X1
  2363. I don't understand what this means.
  2364. .X2
  2365.  
  2366. If all bytes of this field are set to (00), it shall mean that no such
  2367. application is identified.
  2368. .HH "Copyright File Identifier (BP 284-315)"
  2369. .C1
  2370. This field shall specify a pathname for a file containing
  2371. a copyright statement for those
  2372. .C2
  2373. volumes of the volume set which have a sequence number less than or
  2374. equal to the assigned volume sequence number of the volume.
  2375.  
  2376. If all bytes of this field are set to (00), it shall mean that no such
  2377. file is identified.
  2378. .HH "Abstract File Identifier (BP 316-347)"
  2379. .C1
  2380. This field shall specify a pathname for a file
  2381. containing an abstract for those
  2382. .C2
  2383. volumes of the volume set which have a sequence number less than or
  2384. equal to the assigned volume sequence number of the volume.
  2385.  
  2386. If all bytes of this field are set to (00), it shall mean that no such
  2387. file is identified.
  2388. .HH "Reserved (BP 348-511)"
  2389. This field shall be reserved for future standardization.
  2390. .X1
  2391. how much do we need here?
  2392. The descriptor need not be 512 bytes long but it might be better if it is.
  2393. .X2
  2394. .HH Directories
  2395. A directory contains zero or more files and subdirectories.
  2396. A directory hierarchy shall be a set of directories
  2397. descended from a single root directory.
  2398.  
  2399. A directory identifying another directory shall be called the parent
  2400. directory of the identified directory.
  2401. The identified directory shall
  2402. be called a subdirectory of the parent directory.
  2403. Different
  2404. directories may have the same parent directory.
  2405. The parent directory of the
  2406. root directory shall be the root directory.
  2407.  
  2408. A directory shall be a set of directory descriptors.
  2409. A directory descriptor is one of
  2410. .RS
  2411. .DL
  2412. Directory Identifier Record (see 3.5.1)
  2413. specifying certain attributes of the directory.
  2414. .DL
  2415. File Identifier Record (see 3.5.2)
  2416. specifying a component file or subdirectory of the directory.
  2417. .DL
  2418. Alias Record (see 3.5.3) specifying an alternative identification for a
  2419. component file or subdirectory of the directory.
  2420. .RE
  2421.  
  2422. A directory shall be recorded as a file containing a
  2423. contiguous catenation of directory descriptors subject to
  2424. .RS
  2425. .DL
  2426. The first descriptor of the directory shall be a Directory Identifier Record.
  2427. .DL
  2428. The descriptors in a directory shall be ordered according to 2.4.2.8
  2429. and 3.5.4.
  2430. .RE
  2431. .HH "Directory Identifier Record"
  2432. A Directory Identifier Record shall be recorded in the format
  2433. shown in figure 19.
  2434. .xz "!Directory Identifier Record"
  2435. .Fd figDirectoryIdentifierRecord
  2436. .de zz
  2437. .Fg "19" "Directory Identifier Record"
  2438. ..
  2439. .1C
  2440. .KF 
  2441. .SP 1
  2442. .TS
  2443. center;
  2444. l l l.
  2445. _
  2446. BP    Field name    Contents
  2447. _
  2448. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  2449. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  2450. .C1
  2451. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  2452. .C2
  2453. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  2454. 16-47    Descriptor Character Set    \f(CWcharspec\fP (1.6.2)
  2455. _
  2456. .TE
  2457. .zz
  2458. .KE
  2459. .2C
  2460. .HH "Descriptor Checksum (BP 0-1)"
  2461. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  2462. starting at the first byte of the Descriptor Checksum Length field.
  2463. .HH "Descriptor Checksum Length (BP 2-3)"
  2464. This field specifies how many bytes were used
  2465. in calculating the Descriptor Checksum.
  2466. .HH "Descriptor Version (BP 4-7)"
  2467. This field shall specify the version of this Descriptor.
  2468. The value 1 shall indicate the structure of this standard.
  2469. .HH "Descriptor Tag (BP 8-15)"
  2470. This field shall specify (DEADBEEF).
  2471. .HH "Descriptor Character Set (BP 16-47)"
  2472. This field shall specify the characters in the File Identifier Records.
  2473. .HH "File Identifier Record"
  2474. A File Identifier Record shall be recorded in the format
  2475. shown in figure 20.
  2476. .xz "!File Identifier Record"
  2477. .Fd figFileIdentifierRecord
  2478. .de zz
  2479. .Fg "20" "File Identifier Record"
  2480. ..
  2481. .1C
  2482. .KF 
  2483. .SP 1
  2484. .TS
  2485. center;
  2486. l l l.
  2487. _
  2488. BP    Field name    Contents
  2489. _
  2490. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  2491. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  2492. .C1
  2493. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  2494. .C2
  2495. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  2496. 16-21    File Control Block Location    \f(CWaddress\fP (3.2.2)
  2497. 22    Length of File Identifier (=L_FI)    \f(CWuint8\fP (1.6.1.1)
  2498. 23    File Characteristics    \f(CWuint8\fP (1.6.1.1)
  2499. 24-[L_FI+23]    File Identifier    L_FI f-characters
  2500. [L_FI+24]    Padding Field    1 (00) byte
  2501. _
  2502. .TE
  2503. .zz
  2504. .KE
  2505. .2C
  2506. .HH "Descriptor Checksum (BP 0-1)"
  2507. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  2508. starting at the first byte of the Descriptor Checksum Length field.
  2509. .HH "Descriptor Checksum Length (BP 2-3)"
  2510. This field specifies how many bytes were used
  2511. in calculating the Descriptor Checksum.
  2512. .HH "Descriptor Version (BP 4-7)"
  2513. This field shall specify the version of this Descriptor.
  2514. The value 1 shall indicate the structure of this standard.
  2515. .HH "Descriptor Tag (BP 8-15)"
  2516. This field shall specify (DEADBEEF).
  2517. .HH "File Control Block Location (BP 16-21)"
  2518. The field shall specify the address of the file control block describing the file.
  2519. .HH "Length of File Identifier (=L_FI) (BP 22)"
  2520. This field shall specify the length, in
  2521. bytes, of the File Identifier field.
  2522. .HH "File Characteristics (BP 23)"
  2523. This field shall specify certain characteristics of the file as
  2524. follows.
  2525. .ne 5v
  2526. Bit 5n
  2527. Interpretation
  2528. 0
  2529. Existence: if set to ZERO, shall mean that the existence of the file
  2530. shall be made known to the user; if set to ONE, shall mean that the
  2531. existence of the file need not be made known to the user.
  2532. 1
  2533. Link: if set to ZERO, shall mean that the File Identifier field of
  2534. the File Identifier Record specifies the primary identification
  2535. for the file described by the file control block identified by the
  2536. .C1
  2537. File Control Block Location field of the File Identifier Record.
  2538. .C2
  2539. if set to ONE,
  2540. shall mean that the File Identifier field of the File Identifier
  2541. Record specifies an alternative identification for the file described
  2542. .C1
  2543. by the File Control Block Location field of the File
  2544. Identifier Record.
  2545. .X1
  2546. This bit needs a rationale (I can't think of any).
  2547. .X2
  2548. .C2
  2549. 2
  2550. Directory: if set to ZERO, shall mean that the file is not a
  2551. directory; if set to ONE, shall mean that the file is a directory.
  2552. .C1
  2553. 3
  2554. Used: if set to ZERO, it means this File Identifier Record does not refer to a file
  2555. and that only the length of File Identifier field is valid.
  2556. If set to ONE, all fields are valid.
  2557. .R1
  2558. This allows a file to be deleted from a directory and only rewriting
  2559. the logical block(s) containing the File Identifier Record.
  2560. .X1
  2561. Except that there is a bug here; the sorting rules need to say something
  2562. about such lurking File Identifier Records.
  2563. .X2
  2564. 4-7
  2565. Reserved for future standardization.
  2566. .C2
  2567. .HH "File Identifier (BP 24-[L_FI+23])"
  2568. The field shall specify an identification for the file.
  2569. .C1
  2570. .X1
  2571. does this include the terminating nul?
  2572. .X2
  2573. .C2
  2574. .HH "Padding Field (BP [L_FI+24])"
  2575. This field shall be present only if necessary to cause the File
  2576. Identifier Record to comprise an even number of bytes.
  2577. .HH "Alias Record"
  2578. An Alias Record shall be recorded in the format
  2579. shown in figure 21.
  2580. .xz "!Alias Record"
  2581. .Fd figAliasRecord
  2582. .de zz
  2583. .Fg "21" "Alias Record"
  2584. ..
  2585. .1C
  2586. .KF 
  2587. .SP 1
  2588. .TS
  2589. center;
  2590. l l l.
  2591. _
  2592. BP    Field name    Contents
  2593. _
  2594. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  2595. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  2596. .C1
  2597. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  2598. .C2
  2599. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  2600. 16    Length of File Identifier (=L_FI)    \f(CWuint8\fP (1.6.1.1)
  2601. 17    Length of File Value (=L_FV)    \f(CWuint8\fP (1.6.1.1)
  2602. 18    File Characteristics    \f(CWuint8\fP (1.6.1.1)
  2603. .C1
  2604. 19    Reserved    1 (00) byte
  2605. .C2
  2606. 20-[L_FI+19]    File Identifier    L_FI f-characters
  2607. [L_FI+20]-[L_FV+L_FI+19]    File Value    L_FV f-characters
  2608. [L_FV+L_FI+20]    Padding Field    1 (00) byte
  2609. _
  2610. .TE
  2611. .zz
  2612. .KE
  2613. .2C
  2614. .HH "Descriptor Checksum (BP 0-1)"
  2615. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  2616. starting at the first byte of the Descriptor Checksum Length field.
  2617. .HH "Descriptor Checksum Length (BP 2-3)"
  2618. This field specifies how many bytes were used
  2619. in calculating the Descriptor Checksum.
  2620. .HH "Descriptor Version (BP 4-7)"
  2621. This field shall specify the version of this Descriptor.
  2622. The value 1 shall indicate the structure of this standard.
  2623. .HH "Descriptor Tag (BP 8-15)"
  2624. This field shall specify (DEADBEEF).
  2625. .HH "Length of File Identifier (=L_FI) (BP 16)"
  2626. This field shall specify the length, in
  2627. bytes, of the File Identifier field.
  2628. .HH "Length of File Value (=L_FV) (BP 17)"
  2629. This field shall specify the length, in
  2630. bytes, of the File Value field.
  2631. .HH "File Characteristics (BP 18)"
  2632. This field shall specify certain characteristics of the file as
  2633. defined in 3.5.2.7.
  2634. .HH "Reserved (BP 19)"
  2635. Reserved for future standardization.
  2636. .HH "File Identifier (BP 20-[L_FI+19])"
  2637. The field shall specify an identification for the file.
  2638. .HH "File Value (BP [L_FI+20]-[L_FV+L_FI+19])"
  2639. The field shall specify an identification for the file referred to
  2640. by the File Identifier.
  2641. .HH "Padding Field (BP [L_FV+L_FI+20])"
  2642. This field shall be present only if necessary to cause the File
  2643. Identifier Record to comprise an even number of bytes.
  2644. .HH "Order of Directory Entries"
  2645. The File Identifier Records and Alias Records
  2646. of a directory shall be ordered according to the relative value of
  2647. the File Identifier field by the following criteria in descending
  2648. order of significance:
  2649. 1)
  2650. in ascending order according to the relative value of File Identifier,
  2651. where File Identifiers shall be valued as follows:
  2652. .RS
  2653. .DL
  2654. If two File Identifiers have the same content in all byte
  2655. positions, then these two File Identifiers are said to be equal in value.
  2656. .DL
  2657. If two File Identifiers do not contain the same number of byte
  2658. positions, the shorter File Identifier shall be treated as if it were padded
  2659. on the right with all padding bytes set to (00) and as if both File
  2660. Identifiers contained the identical number of byte positions.
  2661.  
  2662. After any padding necessary to treat the File Identifiers as if they
  2663. were of equal length, the characters in the corresponding byte
  2664. positions, starting with the first position, of the File Identifiers are
  2665. compared until a byte position is found that does not contain the same
  2666. character in both File Identifiers.  The greater File Identifier is the one that
  2667. contains the character with the higher byte value in the coded graphic
  2668. character sets used to interpret the File Identifier field of the
  2669. directory descriptor.
  2670. .RE
  2671. 2)
  2672. in ascending order according to the relative value of File Version
  2673. Number, where File Version Numbers shall be valued as follows:
  2674. .RS
  2675. .DL
  2676. If two File Version Numbers have the same content in all
  2677. byte positions, then these two File Version Numbers are said to be
  2678. equal in value.
  2679. .DL
  2680. If two File Version Numbers do not contain the same number
  2681. of byte positions, the shorter File Version Number shall be treated as
  2682. if it were padded on the left with all padding bytes set to (00) and
  2683. as if both File Version Numbers contained the identical number of byte
  2684. positions.
  2685.  
  2686. After any padding necessary to treat the File Version Numbers
  2687. as if they were of equal length, the characters in the corresponding
  2688. byte positions, starting with the first position, of the File Version
  2689. Numbers are compared until a byte position is found that does not
  2690. contain the same character in both File Version Numbers.  The greater
  2691. File Version Number is the one that contains the character with the
  2692. higher code position value in the coded graphic character sets used to
  2693. interpret the File Identifier field of the directory descriptor.
  2694. .RE
  2695. .C1
  2696.  
  2697. .X1
  2698. The above stuff is somewhat dated.
  2699. I believe that as part of the discussion of how to specify file identifiers,
  2700. a significant motivation for the current scheme of using a byte stream
  2701. was to simplify handling by systems that do not ostensibly support versions.
  2702. If so, then the ordering should just be the obvious byte-wise ordering
  2703. of the entire file identifier string.
  2704. And in this case, it is nontrivial to get at the highest numbered version.
  2705. If access to the highest numbered version needs to be efficient, then the
  2706. above definition is wrong and 2) needs to compare version numbers after
  2707. converting to a number.
  2708. .X2
  2709. .C2
  2710. .HH "Directory Hierarchy Size Restrictions"
  2711. .EQ
  2712. delim $$
  2713. .EN
  2714. The length of the pathname for any file or directory in a directory hierarchy
  2715. shall not exceed 1023.
  2716. .X1
  2717. This is sort of right but not rigorous; it assumes a unique pathname for
  2718. a file or directory.
  2719. .X2
  2720.  
  2721. The sum of the number of directories and the number of files
  2722. described by the directories of the directory hierarchy shall not exceed
  2723. $2 sup 32 - 1$.
  2724. .EQ
  2725. delim off
  2726. .EN
  2727. .HH Files
  2728. A file shall be specified by a File Control Block.
  2729. The File Control Block specifies the attributes of a file and the location
  2730. of the recorded data of a file.
  2731. Some of the attributes are contained in the File Control Block itself;
  2732. the remainder shall be recorded as Extended Attributes.
  2733.  
  2734. The data of a file shall be specified as an ordered sequence of extents
  2735. (see \f(CWshort_ar\fP (1.6.5.1) and 3.2.3.1).
  2736. The extents may be unrecorded.
  2737. The extents may be located on different partitions and on different volumes.
  2738.  
  2739. Except where specified in this standard,
  2740. neither the interpretation of the information in a file
  2741. nor the structure of the information in a file is specified by this standard.
  2742. .R1
  2743. The main motivation for this scheme is efficient access to file data.
  2744. With current technology trends, this almost mandates extent-based schemes.
  2745. This scheme also allows reserving a contiguous extent for file data
  2746. and then recording it with an arbitrary sequence of I/O requests.
  2747. .R2
  2748. .HH "Direct Entry"
  2749. The Direct Entry shall be recorded in the format shown in figure 22.
  2750. .xz "!Direct Entry"
  2751. .Fd figDirectEntry
  2752. .de zz
  2753. .Fg "22" "Direct Entry"
  2754. ..
  2755. .1C
  2756. .KF 
  2757. .SP 1
  2758. .TS
  2759. center;
  2760. l l l.
  2761. _
  2762. BP    Field name    Contents
  2763. _
  2764. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  2765. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  2766. .C1
  2767. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  2768. .C2
  2769. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  2770. 16-19    Recorded Direct Entry Number    \f(CWuint32\fP (1.6.1.5)
  2771. 20    Direct Entry Number    \f(CWuint8\fP (1.6.1.1)
  2772. 21    Indirect Entry Number    \f(CWuint8\fP (1.6.1.1)
  2773. 22    Flags    \f(CWuint8\fP (1.6.1.1)
  2774. 23    File Type    \f(CWuint8\fP (1.6.1.1)
  2775. .C1
  2776. 24-27    Uid    \f(CWuint32\fP (1.6.1.5)
  2777. .C2
  2778. .C1
  2779. 28-31    Gid    \f(CWuint32\fP (1.6.1.5)
  2780. .C2
  2781. 32-33    File Link Count    \f(CWuint16\fP (1.6.1.3)
  2782. 34    Record Format    \f(CWuint8\fP (1.6.1.1)
  2783. 35    Record Attributes    \f(CWuint8\fP (1.6.1.1)
  2784. 36-37    Record Length    \f(CWuint16\fP (1.6.1.3)
  2785. 38-45    Data Length    \f(CWuint64\fP (1.6.1.6)
  2786. 46-53    Logical Blocks Recorded    \f(CWuint64\fP (1.6.1.6)
  2787. 54-65    Access Time    \f(CWtimestamp\fP (1.6.3.9)
  2788. 66-77    Modification Time    \f(CWtimestamp\fP (1.6.3.9)
  2789. 78-89    Change Time    \f(CWtimestamp\fP (1.6.3.9)
  2790. 90-91    Permissions    \f(CWuint16\fP (1.6.1.3)
  2791. 92-97    Extended Attribute File Control Block Location    \f(CWaddress\fP (3.2.2)
  2792. 98-129    Application Identifier    32 a-characters
  2793. 130-135    Application Use File Control Block Location    \f(CWaddress\fP (3.2.2)
  2794. 136-139    Generation    \f(CWuint32\fP (1.6.1.5)
  2795. 140-171    Implementation Identifier    32 a-characters
  2796. 172-177    Implementation Use File Control Block Location    \f(CWaddress\fP (3.2.2)
  2797. 178    Length of Implementation Use (=N_IU)    \f(CWuint8\fP (1.6.1.1)
  2798. 179-210    Escape Sequences    32 bytes
  2799. 211-212    Number of Allocation Records (=N_AR)    \f(CWuint16\fP (1.6.1.3)
  2800. 213-[N_AR\(mu16+212]    Allocation Records    N_AR 3.2.3.1
  2801. [N_AR\(mu16+213]-[N_IU+N_AR\(mu16+212]    Implementation Use    N_IU bytes
  2802. _
  2803. .TE
  2804. .zz
  2805. .KE
  2806. .2C
  2807. .HH "Descriptor Checksum (BP 0-1)"
  2808. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  2809. starting at the first byte of the Descriptor Checksum Length field.
  2810. .HH "Descriptor Checksum Length (BP 2-3)"
  2811. This field specifies how many bytes were used
  2812. in calculating the Descriptor Checksum.
  2813. .HH "Descriptor Version (BP 4-7)"
  2814. This field shall specify the version of this Descriptor.
  2815. The value 1 shall indicate the structure of this standard.
  2816. .HH "Descriptor Tag (BP 8-15)"
  2817. This field shall specify (DEADBEEF).
  2818. .HH "Recorded Direct Entry Number (BP 16-19)"
  2819. This field specifies the number of Direct Entries recorded in this File Control Block hierarchy
  2820. prior to this entry.
  2821. .HH "Direct Entry Number (BP 20)"
  2822. This field specifies the number of Direct Entries in this File Control Block.
  2823. .HH "Indirect Entry Number (BP 21)"
  2824. This field specifies the number of Indirect Entries in this File Control Block.
  2825. .HH "Flags (BP 22)"
  2826. This field shall specify recording information as specified in 2.4.2.8.
  2827. .HH "File Type (BP 23)"
  2828. This field shall specify the file type as specified in 2.4.2.9.
  2829. .HH "Uid (BP 24-27)"
  2830. .C1
  2831. This field shall specify the User ID of the file's owner.
  2832. .C2
  2833. .HH "Gid (BP 28-31)"
  2834. .C1
  2835. This field shall specify the Group ID of the file's owner.
  2836. .C2
  2837. .HH "File Link Count (BP 32-33)"
  2838. This field shall specify the
  2839. number of File Identifier Records identifying this file control block.
  2840. .X1
  2841. Not sure if I believe this.
  2842. What if I copy a subtree of files to WORM to send to someone
  2843. and don't get all the links?
  2844. does that mean the link count changes for the files i send?
  2845. .X2
  2846. .HH "Record Format (BP 34)"
  2847. This field shall specify the format of the information in the file.
  2848. .ne 5v
  2849. Number 8n
  2850. Interpretation
  2851. 0
  2852. shall mean that the structure of the information recorded in the
  2853. file is not specified by this field
  2854. 1
  2855. shall mean that the information in the file is a
  2856. sequence of fixed-length records (see 3.6.2.1)
  2857. 2
  2858. shall mean that the information in the file is a
  2859. sequence of variable-length records (see 3.6.2.2)
  2860. 3
  2861. shall mean that the information in the file is a
  2862. sequence of variable-length records (see 3.6.2.2)
  2863. 4
  2864. shall mean that the information in the file is a
  2865. sequence of stream-print records (see 3.6.2.3)
  2866. 5
  2867. shall mean that the information in the file is
  2868. a sequence of stream-LF records (see 3.6.2.4)
  2869. 6
  2870. shall mean that the information in the file is
  2871. a sequence of stream-CR records (see 3.6.2.5)
  2872. 7-255
  2873. reserved for future standardization
  2874.  
  2875. If the file is not a regular file, the Record Format field shall contain zero.
  2876. .HH "Record Attributes (BP 35)"
  2877. This field shall specify the
  2878. processing of the records in a file when they are displayed on a
  2879. character-imaging device.
  2880. .C1
  2881. If the Record Format field contains zero then the contents of the Record Attribute
  2882. field shall be undefined.
  2883. .C2
  2884. .ne 5v
  2885. Number 8n
  2886. Interpretation
  2887. 0
  2888. shall mean that each record shall be preceded by a LINE FEED
  2889. character and followed by a CARRIAGE RETURN character
  2890. 1
  2891. shall mean that the first byte of a record shall be interpreted
  2892. as specified in ISO 1539 for vertical spacing
  2893. 2
  2894. shall mean that the record contains the necessary control information
  2895. for the imaging device
  2896. 3-255
  2897. reserved for future standardization.
  2898. .HH "Record Length (BP 36-37)"
  2899. If the Record Format field contains the number 0, the Record Length
  2900. field shall contain zero.
  2901.  
  2902. If the Record Format field contains the number 1, the Record Length
  2903. field shall specify the length, in bytes, of each record in the file.
  2904.  
  2905. If the Record Format field contains the number 2, 3, 4, 5 or 6, the
  2906. Record Length field shall specify the maximum length, in bytes, of a
  2907. record in the file.
  2908. .HH "Data Length (BP 38-45)"
  2909. The file size in bytes.
  2910. .HH "Logical Blocks Recorded (BP 46-53)"
  2911. .C1
  2912. The number of logical blocks that have been recorded.
  2913. .C2
  2914. .HH "Access Time (BP 54-65)"
  2915. This field shall specify the most recent time of access to this file
  2916. at the time this Direct Entry was recorded.
  2917. If all eight numbers in this field are zero, it shall mean
  2918. that the date and time are not specified.
  2919. .R1
  2920. This departs from ISO 9945-1 semantics a little in order to prevent
  2921. unnecessary updates (for WORM) on read accesses.
  2922. .R2
  2923. .HH "Modification Time (BP 66-77)"
  2924. This field shall specify the most recent time data was recorded for this file.
  2925. If all eight numbers in this field are zero, it shall mean
  2926. that the date and time are not specified.
  2927. .HH "Change Time (BP 78-89)"
  2928. This field shall specify the most recent time data was recorded for this file
  2929. or fields in this Direct Entry were changed.
  2930. If all eight numbers in this field are zero, it shall mean
  2931. that the date and time are not specified.
  2932. .HH "Permissions (BP 90-91)"
  2933. .C1
  2934. This field shall specify access permissions for certain classes of
  2935. users as follows:
  2936. .RS
  2937. .DL
  2938. If the user's User ID is the same as the Uid field, then bits 6\-8 shall apply.
  2939. .DL
  2940. Otherwise,
  2941. if the user's Group ID is ithe same as the Gid field, then bits 3\-5 shall apply.
  2942. .DL
  2943. Otherwise, bits 0\-2 shall apply.
  2944. .RE
  2945. .ne 5v
  2946. Bit 7n
  2947. Interpretation
  2948. 0
  2949. Other: If set to ZERO, shall mean that the user may not execute the file;
  2950. If set to ONE; shall mean that the user may execute the file.
  2951. 1
  2952. Other: If set to ZERO, shall mean that the user may not write the file;
  2953. If set to ONE; shall mean that the user may write the file.
  2954. 2
  2955. Other: If set to ZERO, shall mean that the user may not read the file;
  2956. If set to ONE; shall mean that the user may read the file.
  2957. 3
  2958. Group: If set to ZERO, shall mean that the user may not execute the file;
  2959. If set to ONE; shall mean that the user may execute the file.
  2960. 4
  2961. Group: If set to ZERO, shall mean that the user may not write the file;
  2962. If set to ONE; shall mean that the user may write the file.
  2963. 5
  2964. Group: If set to ZERO, shall mean that the user may not read the file;
  2965. If set to ONE; shall mean that the user may read the file.
  2966. 6
  2967. Owner: If set to ZERO, shall mean that the user may not execute the file;
  2968. If set to ONE; shall mean that the user may execute the file.
  2969. 7
  2970. Owner: If set to ZERO, shall mean that the user may not write the file;
  2971. If set to ONE; shall mean that the user may write the file.
  2972. 8
  2973. Owner: If set to ZERO, shall mean that the user may not read the file;
  2974. If set to ONE; shall mean that the user may read the file.
  2975. 9
  2976. System: If set to ZERO, shall mean that the file is not a system file;
  2977. If set to ONE; shall mean that the file is a system file.
  2978. 10
  2979. Archive: MS-DOS archive bit (20).
  2980. .X1
  2981. I don't know what the semantics are.
  2982. .X2
  2983. 11\-15
  2984. Reserved: Shall be set to ZERO.
  2985. .R1
  2986. MS-DOS actually requires 4 bits: readonly, hidden, system and archive.
  2987. System and archive are supported directly;
  2988. hidden is in the File Identifier Record
  2989. and readonly can be deduced by the absence of write permissions
  2990. but we need to clarify that.
  2991. .R2
  2992. .C2
  2993. .HH "Extended Attribute File Control Block Location (BP 92-97)"
  2994. .C1
  2995. The field shall specify the address of the file control block describing the extended
  2996. attribute file.
  2997. .C2
  2998. .HH "Application Identifier (BP 98-129)"
  2999. This field shall specify an identification of the specification of how
  3000. the data are recorded in the file.
  3001. .C1
  3002. .X1
  3003. I would reword this if i knew what it meant.
  3004. .X2
  3005. .C2
  3006.  
  3007. If all bytes of this field are set to (00), it shall mean that no such
  3008. application is identified.
  3009. .HH "Application Use File Control Block Location (BP 130-135)"
  3010. .C1
  3011. The field shall specify the address where the file control block describing the
  3012. .C2
  3013. application use file is recorded.
  3014. .HH "Generation (BP 136-139)"
  3015. .C1
  3016. This number shall be one for the first revision of a file and incremented by
  3017. one when the user so specifies.
  3018. .R1
  3019. This field allows the user to label sequences of revisions of a file
  3020. with a (monotonic increasing) numeric tag.
  3021. It has almost the same semantics as the version part of the file name
  3022. but has very different syntax.
  3023. .R2
  3024. .C2
  3025. .HH "Implementation Identifier (BP 140-171)"
  3026. This field shall specify an identification of an implementation which
  3027. can recognize and act upon the content of the Implementation Use field
  3028. .C1
  3029. and the extent identified by the Implementation Use File Control Block Location
  3030. field.
  3031. .C2
  3032. If all bytes of this field are set to (00), it shall mean that no such
  3033. implementation is identified.
  3034. .HH "Implementation Use File Control Block Location (BP 172-177)"
  3035. The field shall specify the location where the file control block describing the
  3036. implementation use file is recorded.
  3037. .HH "Length of Implementation Use (=N_IU) (BP 178)"
  3038. This field shall specify the length, in
  3039. bytes, of the Implementation Use field.
  3040. .HH "Escape Sequences (BP 179-210)"
  3041. This field shall specify one or more escape sequences according to ISO
  3042. 2022 that designate and implicitly invoke the coded character sets to
  3043. be used in an 8-bit environment according to ISO 2022 to interpret the
  3044. content of the file (see 1.6.2.5).
  3045. .HH "Number of Allocation Records (=N_AR) (BP 211-212)"
  3046. This field shall specify the number (N_AR) of allocation records
  3047. recorded in this Direct Entry.
  3048. .HH "Allocation Records (BP 213-[N_AR\(mu16+212])"
  3049. .C1
  3050. This field shall be N_AR allocation records.
  3051. The type of allocation record shall be specified by the Flags field.
  3052. .X1
  3053. The size calculation uses long allocation records; this is sort of wrong
  3054. but I am unsure how to present the right answer.
  3055. .X2
  3056. .C2
  3057. .HH "Implementation Use (BP [N_AR\(mu16+213]-[N_IU+N_AR\(mu16+212])"
  3058. This field shall be reserved for implementation use.
  3059. Its content is not specified by this standard.
  3060. .HH "Record Structure"
  3061. The information in a file may be organized as a set of records
  3062. according to this clause.
  3063.  
  3064. A record shall be a sequence of bytes treated as a unit of information.
  3065. The length of a record shall be the number of bytes in the record.
  3066. A record shall be one of the following types:
  3067. .RS
  3068. .DL
  3069. fixed-length
  3070. .DL
  3071. variable-length
  3072. .DL
  3073. stream-print
  3074. .DL
  3075. stream-LF
  3076. .DL
  3077. stream-CR
  3078. .RE
  3079.  
  3080. All records in a file shall be of the same type.
  3081. Each record is recorded in a Measured Data Unit (MDU).
  3082. The file's contents are a contiguous catenation of one or more MDUs.
  3083. .HH "Fixed-Length Records"
  3084. All the records in a file containing fixed-length records must be of equal length.
  3085. The MDU containing a fixed-length record shall consist of the record,
  3086. immediately followed by a (00) byte if necessary to give the MDU an even length.
  3087. .HH "Variable-Length Records"
  3088. An MDU containing a variable-length record shall consist of either
  3089. .RS
  3090. .DL
  3091. A Record Control Word (RCW) immediately followed by the
  3092. variable-length record, immediately followed by a (00) byte if
  3093. necessary to give the MDU an even length.
  3094. .DL
  3095. An RCW.
  3096. .C1
  3097. .X1
  3098. Why do we need this case?
  3099. .X2
  3100. .C2
  3101. .RE
  3102. An RCW shall specify a \f(CWint16\fP (1.6.1.4) as follows:
  3103. .ne 5v
  3104. Number 12n
  3105. Interpretation
  3106. \-1
  3107. shall mean that the RCW is the final RCW of the logical block in
  3108. which the RCW is recorded
  3109. 0\-32767
  3110. shall mean that the RCW specifies the length of the record
  3111. "any other"
  3112. reserved for future standardization value
  3113.  
  3114. .X1
  3115. The meaning of \-1 is baffling to me; how can anyone care about this?
  3116. This is probably a dreg.
  3117. .X2
  3118. The RCW shall be recorded as an
  3119. \f(CWint16\fP (1.6.1.4), if the value in the Record Format field of the Direct Entry
  3120. associated with the file is 2, or
  3121. \f(CWint16MSB\fP (1.6.1.4.1), if the value in the Record Format field of the
  3122. Direct Entry associated with the file is 3.
  3123.  
  3124. A maximum record length in the range 1 to 32767 shall be assigned for a file.
  3125. The length of any record in the file shall not exceed this value.
  3126. The minimum length of a variable-length record shall be 0.
  3127. .X1
  3128. The last draft had wording which implied that maybe you could mix
  3129. any of the four variable-length record types together in the same file.
  3130. I have followed the strict wording that says ``one type, one file''.
  3131. .X2
  3132. .HH "Stream-print Records"
  3133. An MDU containing a stream-print record shall be a sequence of
  3134. zero or more (00) bytes immediately followed by one of the following
  3135. sequences:
  3136. .RS
  3137. .DL
  3138. the stream-print record immediately followed by the two bytes (13) (10)
  3139. .DL
  3140. the stream-print record with a (10) byte as the final byte of the
  3141. stream-print record
  3142. .DL
  3143. the stream-print record with a (11) byte as the final byte of the
  3144. stream-print record
  3145. .DL
  3146. the stream-print record with a (12) byte as the final byte of the
  3147. stream-print record.
  3148. .RE
  3149.  
  3150. A maximum record length in the range 1 to 32767 shall be assigned for a file.
  3151. The length of any record in the file shall not exceed this value.
  3152. The first byte of a stream-print record shall not be a (00) byte.
  3153. .HH "Stream-LF Records"
  3154. An MDU containing a stream-LF record shall consist
  3155. of the stream-LF record, immediately followed by a (10) byte.
  3156.  
  3157. A maximum record length in the range 1 to 32767 shall be assigned for a file.
  3158. The length of any record in the file shall not exceed this value.
  3159. The minimum length of a stream-LF record shall be 0.
  3160. .HH "Stream-CR Records"
  3161. An MDU containing a stream-CR record shall consist
  3162. of the stream-CR record, immediately followed by a (13) byte.
  3163.  
  3164. A maximum record length in the range 1 to 32767 shall be assigned for a file.
  3165. The length of any record in the file shall not exceed this value.
  3166. The minimum length of a stream-CR record shall be 0.
  3167. .HH "Extended Attributes"
  3168. Extended attributes shall be stored as a file.
  3169. The file consists of an Extended Attribute Header Descriptor
  3170. followed by zero or more Extended Attributes.
  3171.  
  3172. The extended attributes are divided into three classes:
  3173. those for System use, those for Implementation use, and those for Application use.
  3174. The System class starts with the first extended attribute and is terminated
  3175. by the start of the Implementation class.
  3176. The Implementation class is terminated by the start of the Application class.
  3177. The Application class is terminated by the end of the file.
  3178. The start of the Implementation and Application classes shall be specified
  3179. in the Extended Attribute Header Descriptor.
  3180.  
  3181. Attribute types 1-22 are defined below.
  3182. Attribute types 23-999 are reserved for future standardization.
  3183. Attribute types 1000 and above may be registered.
  3184. .HH "Extended Attribute Header Descriptor"
  3185. The Extended Attribute Header Descriptor shall be recorded in the format shown
  3186. in figure 23.
  3187. .X1
  3188. This could be done with lengths rather than locations
  3189. .X2
  3190. .xz "!Extended Attribute Header Descriptor"
  3191. .Fd figExtendedAttributeHeaderDescriptor
  3192. .de zz
  3193. .Fg "23" "Extended Attribute Header Descriptor"
  3194. ..
  3195. .1C
  3196. .KF 
  3197. .SP 1
  3198. .TS
  3199. center;
  3200. l l l.
  3201. _
  3202. BP    Field name    Contents
  3203. _
  3204. 0-3    Implementation Attributes Location    \f(CWuint32\fP (1.6.1.5)
  3205. 4-7    Application Attributes Location    \f(CWuint32\fP (1.6.1.5)
  3206. _
  3207. .TE
  3208. .zz
  3209. .KE
  3210. .2C
  3211. .HH "Implementation Attributes Location (BP 0-3)"
  3212. This field shall specify the start of the Implementation extended attributes
  3213. relative to the end of the Extended Attribute Header Descriptor.
  3214. .HH "Application Attributes Location (BP 4-7)"
  3215. This field shall specify the start of the Application extended attributes
  3216. relative to the end of the Extended Attribute Header Descriptor.
  3217. .HH "Extended Attribute Format"
  3218. An Extended Attribute shall be recorded in the format shown in figure
  3219. 24.
  3220. .xz "!Extended Attribute"
  3221. .Fd figExtendedAttribute
  3222. .de zz
  3223. .Fg "24" "Extended Attribute"
  3224. ..
  3225. .1C
  3226. .KF 
  3227. .SP 1
  3228. .TS
  3229. center;
  3230. l l l.
  3231. _
  3232. BP    Field name    Contents
  3233. _
  3234. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3235. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3236. .C1
  3237. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3238. .C2
  3239. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3240. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5)
  3241. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3)
  3242. 22-25    Data Length (=D_L)    \f(CWuint32\fP (1.6.1.5)
  3243. 26-[D_L+25]    Attribute Data    D_L bytes
  3244. [D_L+26]    Padding    1 (00) byte
  3245. _
  3246. .TE
  3247. .zz
  3248. .KE
  3249. .2C
  3250. .HH "Descriptor Checksum (BP 0-1)"
  3251. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3252. starting at the first byte of the Descriptor Checksum Length field.
  3253. .HH "Descriptor Checksum Length (BP 2-3)"
  3254. .HH "Descriptor Version (BP 4-7)"
  3255. This field shall specify the version of this Descriptor.
  3256. The value 1 shall indicate the structure of this standard.
  3257. This field specifies how many bytes were used
  3258. in calculating the Descriptor Checksum.
  3259. .HH "Descriptor Tag (BP 8-15)"
  3260. This field shall specify (DEADBEEF).
  3261. .HH "Attribute Type (BP 16-19)"
  3262. This field shall specify the type of the extended attribute.
  3263. .HH "Attribute Subtype (BP 20-21)"
  3264. This field shall specify the subtype of the extended attribute.
  3265. .C1
  3266. .X1
  3267. we might want to make this 32 bits for alignment reasons
  3268. .X2
  3269. .C2
  3270. .HH "Data Length (=D_L) (BP 22-25)"
  3271. This field shall specify the length of attribute data.
  3272. .HH "Attribute Data (BP 26-[D_L+25])"
  3273. The interpretation of this field shall be dependent on the Attribute Type field.
  3274. .HH "Padding (BP [D_L+26])"
  3275. An extended attribute shall be extended by a (00) byte if necessary
  3276. to make the total length even.
  3277. .X1
  3278. why do we pad to even lengths?
  3279. it seems padding to a multiple of 4 would not hurt and would suit
  3280. all the 32 bit RISC machines.
  3281. The 64 bit machines, like the Cray, need padding to a multiple of 8.
  3282. .X2
  3283. .HH "Date Extended Attributes"
  3284. The date extended attributes have a common format.
  3285. The Attribute Subtype shall be 1.
  3286. The Data Length shall be 10.
  3287. The Attribute Data shall be a \f(CWtimestamp\fP (1.6.3.9) with the following meaning:
  3288. .ne 5v
  3289. Attribute 8n
  3290. Interpretation
  3291. Type
  3292. 1
  3293. Information Creation:
  3294. This field shall specify the date and time at which the entity
  3295. described by the Direct Entry was last created.
  3296. 2
  3297. Information Modification:
  3298. This field shall specify the date and time at which the entity
  3299. described by the Direct Entry was last modified.
  3300. 3
  3301. Information Expiration:
  3302. This field shall specify the date and time at which the entity
  3303. described by the Direct Entry may no longer be used.
  3304. 4
  3305. Information Effective:
  3306. This field shall specify the date and time at which the entity
  3307. described by the Direct Entry may be used.
  3308. 5
  3309. File Creation:
  3310. This field shall specify the date and time at which the entity
  3311. described by the Direct Entry was last created.
  3312. 6
  3313. File Modification:
  3314. This field shall specify the date and time at which the entity
  3315. described by the Direct Entry was last modified.
  3316. 7
  3317. File Expiration:
  3318. This field shall specify the date and time at which the entity
  3319. described by the Direct Entry may no longer be used.
  3320. 8
  3321. File Effective:
  3322. This field shall specify the date and time at which the entity
  3323. described by the Direct Entry may be used.
  3324. 9
  3325. File Access:
  3326. This field shall specify the date and time at which the entity
  3327. described by the Direct Entry was last accessed.
  3328. 10
  3329. File Backup:
  3330. This field shall specify the date and time at which the entity
  3331. described by the Direct Entry was last backed up.
  3332. 11
  3333. File Attribute:
  3334. This field shall specify the date and time at which the attributes of
  3335. the entity described by the Direct Entry were last modified.
  3336. .HH "Associated File"
  3337. An associated file has a relationship not specified by this standard
  3338. .C1
  3339. to the file with which it is associated.
  3340. .C2
  3341. An associated file shall be recorded in the format shown in
  3342. 25.
  3343. .xz "!Associated File Extended Attribute"
  3344. .Fd figAssociatedFileExtendedAttribute
  3345. .de zz
  3346. .Fg "25" "Associated File Extended Attribute"
  3347. ..
  3348. .1C
  3349. .KF 
  3350. .SP 1
  3351. .TS
  3352. center;
  3353. l l l.
  3354. _
  3355. BP    Field name    Contents
  3356. _
  3357. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3358. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3359. .C1
  3360. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3361. .C2
  3362. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3363. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 12
  3364. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3365. 22-25    Data Length    \f(CWuint32\fP (1.6.1.5) = 10
  3366. 26-29    Associated File Type    \f(CWuint32\fP (1.6.1.5)
  3367. 30-35    File Control Block of Associated File    \f(CWaddress\fP (3.2.2)
  3368. _
  3369. .TE
  3370. .zz
  3371. .KE
  3372. .2C
  3373. .HH "Descriptor Checksum (BP 0-1)"
  3374. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3375. starting at the first byte of the Descriptor Checksum Length field.
  3376. .C1
  3377. .HH "Descriptor Checksum Length (BP 2-3)"
  3378. This field specifies how many bytes were used
  3379. in calculating the Descriptor Checksum.
  3380. .C2
  3381. .HH "Descriptor Version (BP 4-7)"
  3382. This field shall specify the version of this Descriptor.
  3383. The value 1 shall indicate the structure of this standard.
  3384. .HH "Descriptor Tag (BP 8-15)"
  3385. This field shall specify (DEADBEEF).
  3386. .HH "Attribute Type (BP 16-19)"
  3387. This field shall specify 12.
  3388. .HH "Attribute Subtype (BP 20-21)"
  3389. This field shall specify 1.
  3390. .HH "Data Length (BP 22-25)"
  3391. This field shall specify 10.
  3392. .HH "Associated File Type (BP 26-29)"
  3393. This field shall specify a registered Associated File Type.
  3394. .HH "File Control Block of Associated File (BP 30-35)"
  3395. This field shall specify the location of the File Control Block for the associated file.
  3396. .HH "Data compression"
  3397. This field shall specify an identification of the specification of the
  3398. data compression algorithm used to record the data in the file.
  3399. A data compression identifier shall be recorded in the format shown in
  3400. 26.
  3401. .X1
  3402. The previous draft supported a file specification.
  3403. There were no obvious semantics for this file so I dropped it.
  3404. .X2
  3405. .xz "!Data Compression Extended Attribute"
  3406. .Fd figDataCompressionExtendedAttribute
  3407. .de zz
  3408. .Fg "26" "Data Compression Extended Attribute"
  3409. ..
  3410. .1C
  3411. .KF 
  3412. .SP 1
  3413. .TS
  3414. center;
  3415. l l l.
  3416. _
  3417. BP    Field name    Contents
  3418. _
  3419. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3420. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3421. .C1
  3422. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3423. .C2
  3424. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3425. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 13
  3426. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3427. 22-25    Compression Identifier Length (=CI_L)    \f(CWuint32\fP (1.6.1.5)
  3428. 26-[CI_L+25]    Compression Identifier    CI_L a-characters
  3429. [CI_L+26]    Padding    1 (00) byte
  3430. _
  3431. .TE
  3432. .zz
  3433. .KE
  3434. .2C
  3435. .HH "Descriptor Checksum (BP 0-1)"
  3436. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3437. starting at the first byte of the Descriptor Checksum Length field.
  3438. .HH "Descriptor Checksum Length (BP 2-3)"
  3439. This field specifies how many bytes were used
  3440. in calculating the Descriptor Checksum.
  3441. .HH "Descriptor Version (BP 4-7)"
  3442. This field shall specify the version of this Descriptor.
  3443. The value 1 shall indicate the structure of this standard.
  3444. .HH "Descriptor Tag (BP 8-15)"
  3445. This field shall specify (DEADBEEF).
  3446. .HH "Attribute Type (BP 16-19)"
  3447. This field shall specify 13.
  3448. .HH "Attribute Subtype (BP 20-21)"
  3449. This field shall specify 1.
  3450. .HH "Compression Identifier Length (=CI_L) (BP 22-25)"
  3451. .C1
  3452. This field shall specify the length of the Compression Identifier.
  3453. .C2
  3454. .HH "Compression Identifier (BP 26-[CI_L+25])"
  3455. This field shall specify an identification of a compression method.
  3456. .X1
  3457. There is putatively a register of such things being setup within ANSI.
  3458. .X2
  3459. .HH "Padding (BP [CI_L+26])"
  3460. An extended attribute shall be extended by a (00) byte if necessary
  3461. to make the total length even.
  3462. .HH "Protection"
  3463. This extended attribute specifies fields that can be used to
  3464. support the file access protection scheme of ISO 9660.
  3465. It shall be recorded in the format shown in figure 27.
  3466. .xz "!Protection Extended Attribute"
  3467. .Fd figProtectionExtendedAttribute
  3468. .de zz
  3469. .Fg "27" "Protection Extended Attribute"
  3470. ..
  3471. .1C
  3472. .KF 
  3473. .SP 1
  3474. .TS
  3475. center;
  3476. l l l.
  3477. _
  3478. BP    Field name    Contents
  3479. _
  3480. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3481. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3482. .C1
  3483. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3484. .C2
  3485. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3486. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 14
  3487. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3488. 22-25    Data Length    \f(CWuint32\fP (1.6.1.5) = 10
  3489. 26-29    Owner Identification    \f(CWuint32\fP (1.6.1.5)
  3490. 30-33    Group Identification    \f(CWuint32\fP (1.6.1.5)
  3491. 34-35    Permission    \f(CWuint16\fP (1.6.1.3)
  3492. _
  3493. .TE
  3494. .zz
  3495. .KE
  3496. .2C
  3497. .HH "Descriptor Checksum (BP 0-1)"
  3498. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3499. starting at the first byte of the Descriptor Checksum Length field.
  3500. .HH "Descriptor Checksum Length (BP 2-3)"
  3501. This field specifies how many bytes were used
  3502. in calculating the Descriptor Checksum.
  3503. .HH "Descriptor Version (BP 4-7)"
  3504. This field shall specify the version of this Descriptor.
  3505. The value 1 shall indicate the structure of this standard.
  3506. .HH "Descriptor Tag (BP 8-15)"
  3507. This field shall specify (DEADBEEF).
  3508. .HH "Attribute Type (BP 16-19)"
  3509. This field shall specify 14.
  3510. .HH "Attribute Subtype (BP 20-21)"
  3511. This field shall specify 1.
  3512. .HH "Data Length (BP 22-25)"
  3513. This field shall specify 10.
  3514. .HH "Owner Identification (BP 26-29)"
  3515. This field shall specify as a 16-bit number an identification of the
  3516. file owner who is a member of the group identified by the Group
  3517. Identification field of the Extended Attribute Record.
  3518. .X1
  3519. I do not know why we need 32 bits for a 16 bit number
  3520. .X2
  3521.  
  3522. If the number in this field is 0, this shall indicate that there is no
  3523. owner identification specified for the file.  In this case, the Group
  3524. Identification field shall contain zero.
  3525. .HH "Group Identification (BP 30-33)"
  3526. This field shall specify as a 16-bit number an identification of the
  3527. group of which the file owner is a member.
  3528. .X1
  3529. I do not know why we need 32 bits for a 16 bit number
  3530. .X2
  3531.  
  3532. Certain values, from 1 to a value subject to agreement
  3533. between the data preparer and receiving system, shall identify the
  3534. group as belonging to the class of user referred to as System.
  3535.  
  3536. If the number in this field is 0, this shall indicate that there is no
  3537. group identification specified for the file.  In this case, the Owner
  3538. Identification field shall contain zero.
  3539. .HH "Permission (BP 34-35)"
  3540. The bits of this field shall be numbered from 0 to 15 starting
  3541. with the least significant bit. 
  3542.  
  3543. Bits 0 to 3 may be ignored in interchange.
  3544. If requested by the owner, bits 4 to 7 may be ignored in interchange.
  3545.  
  3546. This field shall specify access permissions for certain classes of
  3547. users as follows.
  3548. .ne 5v
  3549. Bit 5n
  3550. Interpretation
  3551. 0
  3552. If set to ZERO, shall mean that an owner who is a member of a group
  3553. of the System class of user may read the file;
  3554. If set to ONE; shall mean that an owner who is a member of a
  3555. group of the System class of user may not read the file.
  3556. 1
  3557. Shall be set to ONE
  3558. 2
  3559. If set to ZERO, shall mean that an owner who is a member
  3560. of a group of the System class of user may execute the file;
  3561. If set to ONE, shall mean that an owner who is a member of a
  3562. group of the System class of user may not execute the file.
  3563. 3
  3564. Shall be set to ONE.
  3565. 4
  3566. If set to ZERO, shall mean that the owner may read the file;
  3567. if set to ONE, shall mean that owner may not read the file.
  3568. 5
  3569. Shall be set to ONE
  3570. 6
  3571. if set to ZERO, shall mean that the owner may
  3572. execute the file;
  3573. if set to ONE, shall mean that owner may not execute
  3574. the file.
  3575. 7
  3576. shall be set to ONE.
  3577. 8
  3578. If set to ZERO, shall mean that
  3579. any user who is a member of the group specified by the Group
  3580. identification field may read the file;
  3581. if set to ONE, shall mean that of the users who are member of
  3582. the group specified by the Group Identification field, only the owner
  3583. may read the file.
  3584. 9
  3585. Shall be set to ONE
  3586. 10
  3587. if set to ZERO, shall
  3588. mean that any user who is a member of the group specified by the Group
  3589. Identification field may execute the file.
  3590. if set to ONE, shall mean that of the users who are members of
  3591. the group specified by the Group Identification field, only the owner
  3592. may execute the file.
  3593. 11
  3594. Shall be set to ONE.
  3595. 12
  3596. if set to ZERO, shall
  3597. mean that any user may read the file;
  3598. if set to ONE, shall mean that a user not a member of the
  3599. group specified by the Group Identification field may not read the
  3600. file.
  3601. 13
  3602. Shall be set to ONE.
  3603. 14
  3604. if set to ZERO, shall mean that any
  3605. user may execute the file;
  3606. if set to ONE, shall mean that a user not a member of the
  3607. group specified by the Group Identification field may not execute the
  3608. file.
  3609. 15
  3610. Shall be set to ONE.
  3611.  
  3612. .C1
  3613. .X1
  3614. This may be picky but how I am supposed to interpret bit 0=ONE and bit 4=ZERO
  3615. if I am the owner and in the System class of user.
  3616. This is also a bug in ISO 9660.
  3617. .X2
  3618. .C2
  3619. .HH "Application Area"
  3620. The Application Area Extended Attribute shall be recorded in the format
  3621. shown in figure 28.
  3622. .xz "!Application Area Extended Attribute"
  3623. .Fd figApplicationAreaExtendedAttribute
  3624. .de zz
  3625. .Fg "28" "Application Area Extended Attribute"
  3626. ..
  3627. .1C
  3628. .KF 
  3629. .SP 1
  3630. .TS
  3631. center;
  3632. l l l.
  3633. _
  3634. BP    Field name    Contents
  3635. _
  3636. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3637. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3638. .C1
  3639. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3640. .C2
  3641. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3642. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 15
  3643. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3644. 22-25    Data Length (=D_L)    \f(CWuint32\fP (1.6.1.5)
  3645. 26-29    Application Identifier    \f(CWuint32\fP (1.6.1.5)
  3646. 30-[D_L+29]    Application Data    D_L a-characters
  3647. [D_L+30]    Padding    1 (00) byte
  3648. _
  3649. .TE
  3650. .zz
  3651. .KE
  3652. .2C
  3653. .HH "Descriptor Checksum (BP 0-1)"
  3654. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3655. starting at the first byte of the Descriptor Checksum Length field.
  3656. .HH "Descriptor Checksum Length (BP 2-3)"
  3657. This field specifies how many bytes were used
  3658. in calculating the Descriptor Checksum.
  3659. .HH "Descriptor Version (BP 4-7)"
  3660. This field shall specify the version of this Descriptor.
  3661. The value 1 shall indicate the structure of this standard.
  3662. .HH "Descriptor Tag (BP 8-15)"
  3663. This field shall specify (DEADBEEF).
  3664. .HH "Attribute Type (BP 16-19)"
  3665. This field shall specify 15.
  3666. .HH "Attribute Subtype (BP 20-21)"
  3667. This field shall specify 1.
  3668. .HH "Data Length (=D_L) (BP 22-25)"
  3669. This field shall specify the number of bytes of Application Data plus 4.
  3670. .HH "Application Identifier (BP 26-29)"
  3671. This field shall specify an Application Identifier.
  3672. There shall be a registration authority for Application Identifiers.
  3673. .X1
  3674. I am unsure if we have agreed on the need for a registered identifier
  3675. .X2
  3676. .HH "Application Data (BP 30-[D_L+29])"
  3677. This standard does not specify the contents of this field.
  3678. .HH "Padding (BP [D_L+30])"
  3679. An extended attribute shall be extended by a (00) byte if necessary
  3680. to make the total length even.
  3681. .HH "Implementation Area"
  3682. The Implementation Area Extended Attribute shall be recorded in the format shown in
  3683. 29.
  3684. .xz "!Implementation Area Extended Attribute"
  3685. .Fd figImplementationAreaExtendedAttribute
  3686. .de zz
  3687. .Fg "29" "Implementation Area Extended Attribute"
  3688. ..
  3689. .1C
  3690. .KF 
  3691. .SP 1
  3692. .TS
  3693. center;
  3694. l l l.
  3695. _
  3696. BP    Field name    Contents
  3697. _
  3698. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3699. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3700. .C1
  3701. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3702. .C2
  3703. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3704. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 16
  3705. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3706. 22-25    Data Length (=D_L)    \f(CWuint32\fP (1.6.1.5)
  3707. 26-29    Implementation Identifier    \f(CWuint32\fP (1.6.1.5)
  3708. 30-[D_L+29]    Implementation Data    D_L a-characters
  3709. [D_L+30]    Padding    1 (00) byte
  3710. _
  3711. .TE
  3712. .zz
  3713. .KE
  3714. .2C
  3715. .HH "Descriptor Checksum (BP 0-1)"
  3716. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3717. starting at the first byte of the Descriptor Checksum Length field.
  3718. .HH "Descriptor Checksum Length (BP 2-3)"
  3719. This field specifies how many bytes were used
  3720. in calculating the Descriptor Checksum.
  3721. .HH "Descriptor Version (BP 4-7)"
  3722. This field shall specify the version of this Descriptor.
  3723. The value 1 shall indicate the structure of this standard.
  3724. .HH "Descriptor Tag (BP 8-15)"
  3725. This field shall specify (DEADBEEF).
  3726. .HH "Attribute Type (BP 16-19)"
  3727. This field shall specify 16.
  3728. .HH "Attribute Subtype (BP 20-21)"
  3729. This field shall specify 1.
  3730. .HH "Data Length (=D_L) (BP 22-25)"
  3731. This field shall specify the number of bytes of Implementation Data plus 4.
  3732. .HH "Implementation Identifier (BP 26-29)"
  3733. This field shall specify an Implementation Identifier.
  3734. There shall be a registration authority for Implementation Identifiers.
  3735. .X1
  3736. I am unsure if we have agreed on the need for a registered identifier
  3737. .X2
  3738. .HH "Implementation Data (BP 30-[D_L+29])"
  3739. This field shall be reserved for implementation use.
  3740. Its content is not specified by this standard.
  3741. .HH "Padding (BP [D_L+30])"
  3742. An extended attribute shall be extended by a (00) byte if necessary
  3743. to make the total length even.
  3744. .HH "Escape Sequences Segment"
  3745. The Escape Sequences Segment Extended Attribute shall be recorded in the format
  3746. shown in figure 30.
  3747. .xz "!Escape Sequences Segment Extended Attribute"
  3748. .Fd figEscapeSequencesSegmentExtendedAttribute
  3749. .de zz
  3750. .Fg "30" "Escape Sequences Segment Extended Attribute"
  3751. ..
  3752. .1C
  3753. .KF 
  3754. .SP 1
  3755. .TS
  3756. center;
  3757. l l l.
  3758. _
  3759. BP    Field name    Contents
  3760. _
  3761. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3762. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3763. .C1
  3764. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3765. .C2
  3766. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3767. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 17
  3768. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3769. 22-25    Escape Sequences Length (=ES_L)    \f(CWuint32\fP (1.6.1.5)
  3770. 26-[ES_L+25]    Escape Sequences    ES_L bytes
  3771. [ES_L+26]    Padding    1 (00) byte
  3772. _
  3773. .TE
  3774. .zz
  3775. .KE
  3776. .2C
  3777. .HH "Descriptor Checksum (BP 0-1)"
  3778. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3779. starting at the first byte of the Descriptor Checksum Length field.
  3780. .HH "Descriptor Checksum Length (BP 2-3)"
  3781. This field specifies how many bytes were used
  3782. in calculating the Descriptor Checksum.
  3783. .HH "Descriptor Version (BP 4-7)"
  3784. This field shall specify the version of this Descriptor.
  3785. The value 1 shall indicate the structure of this standard.
  3786. .HH "Descriptor Tag (BP 8-15)"
  3787. This field shall specify (DEADBEEF).
  3788. .HH "Attribute Type (BP 16-19)"
  3789. This field shall specify 17.
  3790. .HH "Attribute Subtype (BP 20-21)"
  3791. This field shall specify 1.
  3792. .HH "Escape Sequences Length (=ES_L) (BP 22-25)"
  3793. This field shall specify the length in bytes of the Escape Sequences field.
  3794. .HH "Escape Sequences (BP 26-[ES_L+25])"
  3795. This field shall specify ISO 1022 style escape sequences.
  3796. .X1
  3797. I am unclear of the use of this attribute or the object to which it applies.
  3798. .X2
  3799. .HH "Padding (BP [ES_L+26])"
  3800. An extended attribute shall be extended by a (00) byte if necessary
  3801. to make the total length even.
  3802. .HH "File Abstract"
  3803. The File Abstract Extended Attribute shall be recorded in the format
  3804. shown in figure 31.
  3805. .xz "!File Abstract Extended Attribute"
  3806. .Fd figFileAbstractExtendedAttribute
  3807. .de zz
  3808. .Fg "31" "File Abstract Extended Attribute"
  3809. ..
  3810. .1C
  3811. .KF 
  3812. .SP 1
  3813. .TS
  3814. center;
  3815. l l l.
  3816. _
  3817. BP    Field name    Contents
  3818. _
  3819. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3820. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3821. .C1
  3822. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3823. .C2
  3824. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3825. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 18
  3826. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3827. 22-25    File Abstract Length (=FA_L)    \f(CWuint32\fP (1.6.1.5)
  3828. 26-[FA_L+25]    File Abstract    FA_L bytes
  3829. [FA_L+26]    Padding    1 (00) byte
  3830. _
  3831. .TE
  3832. .zz
  3833. .KE
  3834. .2C
  3835. .HH "Descriptor Checksum (BP 0-1)"
  3836. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3837. starting at the first byte of the Descriptor Checksum Length field.
  3838. .HH "Descriptor Checksum Length (BP 2-3)"
  3839. This field specifies how many bytes were used
  3840. in calculating the Descriptor Checksum.
  3841. .HH "Descriptor Version (BP 4-7)"
  3842. This field shall specify the version of this Descriptor.
  3843. The value 1 shall indicate the structure of this standard.
  3844. .HH "Descriptor Tag (BP 8-15)"
  3845. This field shall specify (DEADBEEF).
  3846. .HH "Attribute Type (BP 16-19)"
  3847. This field shall specify 18.
  3848. .HH "Attribute Subtype (BP 20-21)"
  3849. This field shall specify 1.
  3850. .HH "File Abstract Length (=FA_L) (BP 22-25)"
  3851. This field shall specify the length of the File Abstract field.
  3852. .HH "File Abstract (BP 26-[FA_L+25])"
  3853. This field shall specify an abstract for this file.
  3854. .X1
  3855. don't know type of file abstract
  3856. .X2
  3857. .HH "Padding (BP [FA_L+26])"
  3858. An extended attribute shall be extended by a (00) byte if necessary
  3859. to make the total length even.
  3860. .HH "Action History"
  3861. The Action History Extended Attribute shall be recorded in the format
  3862. shown in figure 32.
  3863. .xz "!Action History Extended Attribute"
  3864. .Fd figActionHistoryExtendedAttribute
  3865. .de zz
  3866. .Fg "32" "Action History Extended Attribute"
  3867. ..
  3868. .1C
  3869. .KF 
  3870. .SP 1
  3871. .TS
  3872. center;
  3873. l l l.
  3874. _
  3875. BP    Field name    Contents
  3876. _
  3877. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3878. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3879. .C1
  3880. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3881. .C2
  3882. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3883. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 19
  3884. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3885. 22-25    History Data Length (=HFI_L)    \f(CWuint32\fP (1.6.1.5)
  3886. 26-29    History Format Identifier    \f(CWuint32\fP (1.6.1.5)
  3887. 30-[HFI_L+29]    Action History Data    HFI_L bytes
  3888. [HFI_L+30]    Padding    1 (00) byte
  3889. _
  3890. .TE
  3891. .zz
  3892. .KE
  3893. .2C
  3894. .HH "Descriptor Checksum (BP 0-1)"
  3895. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3896. starting at the first byte of the Descriptor Checksum Length field.
  3897. .HH "Descriptor Checksum Length (BP 2-3)"
  3898. This field specifies how many bytes were used
  3899. in calculating the Descriptor Checksum.
  3900. .HH "Descriptor Version (BP 4-7)"
  3901. This field shall specify the version of this Descriptor.
  3902. The value 1 shall indicate the structure of this standard.
  3903. .HH "Descriptor Tag (BP 8-15)"
  3904. This field shall specify (DEADBEEF).
  3905. .HH "Attribute Type (BP 16-19)"
  3906. This field shall specify 19.
  3907. .HH "Attribute Subtype (BP 20-21)"
  3908. This field shall specify 1.
  3909. .HH "History Data Length (=HFI_L) (BP 22-25)"
  3910. This field shall specify the sum of the number of bytes of Action History Data
  3911. and 4.
  3912. .HH "History Format Identifier (BP 26-29)"
  3913. This field shall specify an History Format Identifier.
  3914. There shall be a registration authority for History Format Identifiers.
  3915. .HH "Action History Data (BP 30-[HFI_L+29])"
  3916. This standard does not specify the contents of this field.
  3917. .HH "Padding (BP [HFI_L+30])"
  3918. An extended attribute shall be extended by a (00) byte if necessary
  3919. to make the total length even.
  3920. .HH "Icon"
  3921. The Icon Extended Attribute shall be recorded in the format
  3922. shown in figure 33.
  3923. .xz "!Icon Extended Attribute"
  3924. .Fd figIconExtendedAttribute
  3925. .de zz
  3926. .Fg "33" "Icon Extended Attribute"
  3927. ..
  3928. .1C
  3929. .KF 
  3930. .SP 1
  3931. .TS
  3932. center;
  3933. l l l.
  3934. _
  3935. BP    Field name    Contents
  3936. _
  3937. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3938. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3939. .C1
  3940. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  3941. .C2
  3942. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  3943. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 20
  3944. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  3945. 22-25    Icon Data Length (=ID_L)    \f(CWuint32\fP (1.6.1.5)
  3946. 26-29    Icon Identifier    \f(CWuint32\fP (1.6.1.5)
  3947. 30-[ID_L+29]    Icon Data    ID_L bytes
  3948. [ID_L+30]    Padding    1 (00) byte
  3949. _
  3950. .TE
  3951. .zz
  3952. .KE
  3953. .2C
  3954. .HH "Descriptor Checksum (BP 0-1)"
  3955. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  3956. starting at the first byte of the Descriptor Checksum Length field.
  3957. .HH "Descriptor Checksum Length (BP 2-3)"
  3958. This field specifies how many bytes were used
  3959. in calculating the Descriptor Checksum.
  3960. .HH "Descriptor Version (BP 4-7)"
  3961. This field shall specify the version of this Descriptor.
  3962. The value 1 shall indicate the structure of this standard.
  3963. .HH "Descriptor Tag (BP 8-15)"
  3964. This field shall specify (DEADBEEF).
  3965. .HH "Attribute Type (BP 16-19)"
  3966. This field shall specify 20.
  3967. .HH "Attribute Subtype (BP 20-21)"
  3968. This field shall specify 1.
  3969. .HH "Icon Data Length (=ID_L) (BP 22-25)"
  3970. This field shall specify the number of bytes of Icon Data plus 4.
  3971. .HH "Icon Identifier (BP 26-29)"
  3972. This field shall specify an Icon Identifier.
  3973. There shall be a registration authority for Icon Identifiers.
  3974. .HH "Icon Data (BP 30-[ID_L+29])"
  3975. This standard does not specify the contents of this field.
  3976. .HH "Padding (BP [ID_L+30])"
  3977. An extended attribute shall be extended by a (00) byte if necessary
  3978. to make the total length even.
  3979. .HH "File Type"
  3980. The File Type Extended Attribute shall be recorded in the format
  3981. shown in figure 34.
  3982. .xz "!File Type Extended Attribute"
  3983. .Fd figFileTypeExtendedAttribute
  3984. .de zz
  3985. .Fg "34" "File Type Extended Attribute"
  3986. ..
  3987. .1C
  3988. .KF 
  3989. .SP 1
  3990. .TS
  3991. center;
  3992. l l l.
  3993. _
  3994. BP    Field name    Contents
  3995. _
  3996. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  3997. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  3998. .C1
  3999. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  4000. .C2
  4001. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  4002. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 21
  4003. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  4004. 22-25    Data Length    \f(CWuint32\fP (1.6.1.5) = 4
  4005. 26-29    File Type    \f(CWuint32\fP (1.6.1.5)
  4006. _
  4007. .TE
  4008. .zz
  4009. .KE
  4010. .2C
  4011. .HH "Descriptor Checksum (BP 0-1)"
  4012. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  4013. starting at the first byte of the Descriptor Checksum Length field.
  4014. .HH "Descriptor Checksum Length (BP 2-3)"
  4015. This field specifies how many bytes were used
  4016. in calculating the Descriptor Checksum.
  4017. .HH "Descriptor Version (BP 4-7)"
  4018. This field shall specify the version of this Descriptor.
  4019. The value 1 shall indicate the structure of this standard.
  4020. .HH "Descriptor Tag (BP 8-15)"
  4021. This field shall specify (DEADBEEF).
  4022. .HH "Attribute Type (BP 16-19)"
  4023. This field shall specify 21.
  4024. .HH "Attribute Subtype (BP 20-21)"
  4025. This field shall specify 1.
  4026. .HH "Data Length (BP 22-25)"
  4027. This field shall specify 4.
  4028. .HH "File Type (BP 26-29)"
  4029. This field shall specify a File Type.
  4030. There shall be a registration authority for File Types.
  4031. .HH "Environment Type"
  4032. The Environment Type Extended Attribute shall be recorded in the format
  4033. shown in figure 35.
  4034. .xz "!Environment Type Extended Attribute"
  4035. .Fd figEnvironmentTypeExtendedAttribute
  4036. .de zz
  4037. .Fg "35" "Environment Type Extended Attribute"
  4038. ..
  4039. .1C
  4040. .KF 
  4041. .SP 1
  4042. .TS
  4043. center;
  4044. l l l.
  4045. _
  4046. BP    Field name    Contents
  4047. _
  4048. 0-1    Descriptor Checksum    \f(CWuint16\fP (1.6.1.3)
  4049. 2-3    Descriptor Checksum Length    \f(CWuint16\fP (1.6.1.3)
  4050. .C1
  4051. 4-7    Descriptor Version    \f(CWuint32\fP (1.6.1.5)
  4052. .C2
  4053. 8-15    Descriptor Tag    \f(CWuint64\fP (1.6.1.6)
  4054. 16-19    Attribute Type    \f(CWuint32\fP (1.6.1.5) = 22
  4055. 20-21    Attribute Subtype    \f(CWuint16\fP (1.6.1.3) = 1
  4056. 22-25    Environment Data Length (=ED_L)    \f(CWuint32\fP (1.6.1.5)
  4057. 26-29    Environment Identifier    \f(CWuint32\fP (1.6.1.5)
  4058. 30-[ED_L+29]    Environment Data    ED_L bytes
  4059. [ED_L+30]    Padding    1 (00) byte
  4060. _
  4061. .TE
  4062. .zz
  4063. .KE
  4064. .2C
  4065. .HH "Descriptor Checksum (BP 0-1)"
  4066. This field shall specify the checksum (see 1.6.4) of Descriptor Checksum Length bytes
  4067. starting at the first byte of the Descriptor Checksum Length field.
  4068. .HH "Descriptor Checksum Length (BP 2-3)"
  4069. This field specifies how many bytes were used
  4070. in calculating the Descriptor Checksum.
  4071. .HH "Descriptor Version (BP 4-7)"
  4072. This field shall specify the version of this Descriptor.
  4073. The value 1 shall indicate the structure of this standard.
  4074. .HH "Descriptor Tag (BP 8-15)"
  4075. This field shall specify (DEADBEEF).
  4076. .HH "Attribute Type (BP 16-19)"
  4077. This field shall specify 22.
  4078. .HH "Attribute Subtype (BP 20-21)"
  4079. This field shall specify 1.
  4080. .HH "Environment Data Length (=ED_L) (BP 22-25)"
  4081. This field shall specify the sum of the number of bytes of Environment Data and 4.
  4082. .HH "Environment Identifier (BP 26-29)"
  4083. This field shall specify an Environment Identifier.
  4084. There shall be a registration authority for Environment Identifiers.
  4085. .HH "Environment Data (BP 30-[ED_L+29])"
  4086. This standard does not specify the contents of this field.
  4087. .HH "Padding (BP [ED_L+30])"
  4088. An extended attribute shall be extended by a (00) byte if necessary
  4089. to make the total length even.
  4090. .BP
  4091. .HH Interchange
  4092. .HH "Levels of Medium Interchange"
  4093. This standard specifies six nested levels of medium interchange.
  4094. .HH "Level 1"
  4095. At level 1, the following restrictions shall apply:
  4096. .RS
  4097. .DL 
  4098. .C1
  4099. each file shall be recorded as a single extent;
  4100. .DL
  4101. each \f(CWcharspec\fP (1.6.2) shall have its Character Set Type field set to 0;
  4102. .DL
  4103. a File Identifier shall contain up to and including 8 f-characters
  4104. followed by an optional FULL STOP.
  4105. If a FULL STOP is in the file identifier, it may be followed by no
  4106. more than 3 f-characters.
  4107. .C2
  4108. .DL
  4109. a File Identifier shall not contain more than one FULL STOP;
  4110. .DL
  4111. a File Version Number shall consist of one digit of the
  4112. f-characters, representing a number from 1 to 9;
  4113. .DL
  4114. a Directory Identifier shall not contain more than eight
  4115. f-characters;
  4116. .DL
  4117. a Director Identifier shall not contain any FULL STOP characters;
  4118. .DL
  4119. the file specification length of each regular file shall not exceed
  4120. 255;
  4121. .DL
  4122. the path identifier length of each directory shall not exceed 255.
  4123. .RE
  4124. .HH "Level 2"
  4125. At Level 2, the following restrictions shall apply:
  4126. .RS
  4127. .DL
  4128. all file sections of a file shall be recorded on the same volume;
  4129. .C1
  4130. .DL
  4131. each \f(CWcharspec\fP (1.6.2) shall have its Character Set Type field set to one of 0, 1.
  4132. .C2
  4133. .RE
  4134. .HH "Level 3"
  4135. At level 3, the following restrictions shall apply:
  4136. .RS
  4137. .C1
  4138. .DL
  4139. each \f(CWcharspec\fP (1.6.2) shall have its Character Set Type field set to one of 0, 1, 2.
  4140. .C2
  4141. .RE
  4142. .HH "Level 4"
  4143. At Level 4, the following restrictions shall apply:
  4144. .RS
  4145. .C1
  4146. .DL
  4147. each \f(CWcharspec\fP (1.6.2) shall have its Character Set Type field set to one of 0, 1, 2, 3.
  4148. .C2
  4149. .RE
  4150. .HH "Level 5"
  4151. At Level 5, the following restrictions shall apply:
  4152. .RS
  4153. .C1
  4154. .DL
  4155. each \f(CWcharspec\fP (1.6.2) shall have bit 5 of its Character Set Type field set to 0.
  4156. .C2
  4157. .RE
  4158. .HH "Level 6"
  4159. At Level 6, no restrictions shall apply.
  4160. .HH "Requirements for the Description of Systems"
  4161. This standard specifies that certain information shall be communicated
  4162. between a user and an implementation
  4163. (see 4.3 and 4.4).
  4164.  
  4165. An information processing system that conforms to this standard shall
  4166. be the subject of a description which identifies the means by which
  4167. the user may supply such information, or may obtain it when it is made
  4168. available, as specified in this standard.
  4169. .HH "Requirements for an Originating System"
  4170. .HH "General"
  4171. The implementation shall be capable of recording a set of files, and
  4172. all descriptors as specified in 4.2,
  4173. on a volume set in accordance with
  4174. one of the medium interchange levels specified in this standard.
  4175. The implementation shall be capable of determining the largest addressable sector
  4176. number of the medium.
  4177. .HH "Files"
  4178. The implementation shall obtain from the user the information that
  4179. constitutes the set of files to be recorded.
  4180.  
  4181. If the implementation allows the user to specify that the information
  4182. constituting a file is to be interpreted according to 3.6.2, the
  4183. implementation shall obtain from the user the length of each record in
  4184. the file.
  4185. .de xx
  4186. .br
  4187. \(en
  4188. ..
  4189. .de xy
  4190. .sp .2i
  4191. .in 1n
  4192. ..
  4193. .HH "Descriptors"
  4194. .HH "Mandatory Access By User"
  4195. The implementation shall allow the user to supply the information that
  4196. is to be recorded in each of the descriptor fields listed below, and
  4197. shall supply the information for a field if the user does not supply
  4198. it.
  4199. \&
  4200. .xy
  4201. Volume Header Record
  4202. \&
  4203. .xx
  4204. Volume Descriptor Set File Control Block Location
  4205. .xx
  4206. Partition Descriptor Set File Control Block Location
  4207. .xy
  4208. Volume Header Pointer Record
  4209. \&
  4210. .xx
  4211. Successor Volume Header Sequence Location
  4212. .xy
  4213. Primary Volume Descriptor
  4214. \&
  4215. .xx
  4216. Volume Identifier
  4217. .xx
  4218. Volume Set Identifier
  4219. .xy
  4220. Partition Geometry Descriptor
  4221. \&
  4222. .xx
  4223. Partition Starting Location
  4224. .xx
  4225. Partition Length
  4226. .xx
  4227. Unallocated Space Table
  4228. .xx
  4229. Access Table
  4230. .xy
  4231. Partition Implementation Use Descriptor
  4232. \&
  4233. .xx
  4234. Descriptor Character Set
  4235. .xx
  4236. Partition Identifier
  4237. .xx
  4238. Implementation Identifier
  4239. .xx
  4240. Implementation Use
  4241. .xy
  4242. File Set Descriptor
  4243. \&
  4244. .xx
  4245. Descriptor Character Set
  4246. .xx
  4247. Logical Block Size
  4248. .xx
  4249. Logical Volume Sequence Number
  4250. .xx
  4251. Logical Volume Identifier
  4252. .xx
  4253. File Set Character Set
  4254. .xx
  4255. Application Identifier
  4256. .xx
  4257. Copyright File Identifier
  4258. .xx
  4259. Abstract File Identifier
  4260. .xy
  4261. Directory Identifier Record
  4262. \&
  4263. .xx
  4264. Descriptor Character Set
  4265. .xy
  4266. File Identifier Record
  4267. \&
  4268. .xx
  4269. File Characteristics
  4270. .xx
  4271. File Identifier
  4272. .xy
  4273. Alias Record
  4274. \&
  4275. .xx
  4276. File Characteristics
  4277. .xx
  4278. File Identifier
  4279. .xx
  4280. File Value
  4281. .xy
  4282. Direct Entry
  4283. \&
  4284. .xx
  4285. Uid
  4286. .xx
  4287. Gid
  4288. .xx
  4289. File Link Count
  4290. .xx
  4291. Permissions
  4292. .xx
  4293. Generation
  4294. .xx
  4295. Implementation Identifier
  4296. .xx
  4297. Implementation Use File Control Block Location
  4298. .xx
  4299. Length of Implementation Use
  4300. .xx
  4301. Escape Sequences
  4302. .HH "Maximal Access By User"
  4303. If the implementation permits the user to supply the information that
  4304. is to be recorded in any of the descriptor fields listed below, then
  4305. the implementation shall record such information as supplied by the
  4306. user, and shall supply the information for a field if the user does
  4307. not supply it.
  4308. \&
  4309. .xy
  4310. Volume Header Record
  4311. \&
  4312. .xx
  4313. Predecessor Volume Header Sequence Location
  4314. .xx
  4315. Unallocated Space Table Location
  4316. .xx
  4317. Replacement Sector Record Location
  4318. .xx
  4319. Implementation Use
  4320. .xy
  4321. Primary Volume Descriptor
  4322. \&
  4323. .xx
  4324. Volume Sequence Number
  4325. .xx
  4326. Descriptor Character Set
  4327. .xy
  4328. Implementation Use Volume Descriptor
  4329. \&
  4330. .xx
  4331. Descriptor Character Set
  4332. .xy
  4333. Replacement Sector Record
  4334. \&
  4335. .xx
  4336. Extent Length
  4337. .xx
  4338. Number of Sector Addresses
  4339. .xx
  4340. Next Replacement Sector Record Location
  4341. .xx
  4342. Previous Replacement Sector Record Location
  4343. .xx
  4344. Next Replacement Sector Record Extent Location
  4345. .xx
  4346. Previous Replacement Sector Record Extent Location
  4347. .xx
  4348. Sector Addresses
  4349. .xy
  4350. Partition Geometry Descriptor
  4351. \&
  4352. .xx
  4353. Flags
  4354. .xx
  4355. File System Type
  4356. .xx
  4357. Unallocated Space Management
  4358. .xx
  4359. Partition Sequence Number
  4360. .xy
  4361. Partition Implementation Use Descriptor
  4362. \&
  4363. .xx
  4364. Partition Sequence Number
  4365. .xy
  4366. Access Entry
  4367. \&
  4368. .xx
  4369. Recording Time
  4370. .xy
  4371. File Set Descriptor
  4372. \&
  4373. .xx
  4374. Root Directory File Control Block Location
  4375. .xy
  4376. Direct Entry
  4377. \&
  4378. .xx
  4379. Record Format
  4380. .xx
  4381. Record Attributes
  4382. .xx
  4383. Record Length
  4384. .xx
  4385. Data Length
  4386. .xx
  4387. Logical Blocks Recorded
  4388. .xx
  4389. Access Time
  4390. .xx
  4391. Modification Time
  4392. .xx
  4393. Change Time
  4394. .xx
  4395. Extended Attribute File Control Block Location
  4396. .xx
  4397. Application Identifier
  4398. .xx
  4399. Application Use File Control Block Location
  4400. .xx
  4401. Implementation Use
  4402. .xy
  4403. Extended Attribute Record
  4404. .xx
  4405. attribute type
  4406. .xx
  4407. attribute information
  4408. .HH "Optional Access By User"
  4409. If the implementation is capable of recording the following descriptors
  4410. then the implementation shall allow the user to supply the
  4411. information that is to be recorded in the descriptor fields listed
  4412. below, and shall not be required to record the
  4413. descriptor if the user does not supply the information.
  4414. \&
  4415. .xy
  4416. Implementation Use Volume Descriptor
  4417. \&
  4418. .xx
  4419. Implementation Identifier
  4420. .xx
  4421. Implementation Use
  4422. .xy
  4423. File Set Descriptor
  4424. \&
  4425. .xx
  4426. Implementation Identifier
  4427. .HH "Restrictions"
  4428. .HH "Multivolume Volume Sets"
  4429. .EQ
  4430. delim $$
  4431. .EN
  4432. The implementation shall not be required to record information on the
  4433. volumes of a volume set that have been assigned sequence numbers 1
  4434. through $m-1$, where $m>1$, after any information has been recorded on the
  4435. volume of the volume set that has been assigned sequence number $m$.
  4436.  
  4437. The implementation shall not be required to record information on the
  4438. volume of a volume set that has been assigned sequence number $m+1$ if
  4439. there is sufficient space to record the information on the volume that
  4440. has been assigned sequence number $m$, or on volumes that have been
  4441. assigned sequence numbers 1 through $m$.
  4442. .EQ
  4443. delim off
  4444. .EN
  4445. .HH "Record Length"
  4446. The implementation may impose a limit on the length of a record that
  4447. may be recorded in a file.  The implementation is not required to
  4448. record any byte beyond the first
  4449. .I m
  4450. bytes of a record, where
  4451. .I m
  4452. is the value of the imposed limit.
  4453. .EQ
  4454. delim off
  4455. .EN
  4456. .HH "Requirements for a Receiving System"
  4457. .HH "General"
  4458. The implementation shall be capable of reading the files, and the
  4459. recorded descriptors as specified in 4.4, from a volume set that has
  4460. been recorded in accordance with one of the medium interchange levels
  4461. specified in this standard.
  4462. The implementation shall be capable of determining the largest addressable sector
  4463. number of the medium.
  4464. .HH "Files"
  4465. The implementation shall make available to the user the information
  4466. that constitutes the recorded files.
  4467.  
  4468. If the implementation allows the user to specify that the information
  4469. constituting a file is to be interpreted according to 3.6.2, the
  4470. implementation shall make available to the user the length of each
  4471. record in the file.
  4472. .HH "Descriptors"
  4473. The implementation shall allow the user to supply information
  4474. sufficient to enable the implementation to locate the files required
  4475. by the user, and to locate the volumes on which these files are
  4476. recorded.
  4477. .HH "Restrictions"
  4478. .HH "Record Length"
  4479. The implementation may impose a limit on the length of a record to be
  4480. made available to the user.  The implementation is not required to
  4481. make available to the user any byte beyond the first
  4482. .I m
  4483. bytes of a record, where
  4484. .I m
  4485. is the value of the imposed limit.
  4486. .HH "Requirements for Registration Authorities"
  4487. The following fields require a registration authority:
  4488. .RS
  4489. .de xx
  4490. .DL
  4491. \\$2 (\\$1)
  4492. ..
  4493. .ns
  4494. \&
  4495. .xx "Partition Geometry Descriptor" "File System Type"
  4496. .xx "Extended Attribute" "Attribute Type"
  4497. .xx "Associated File Extended Attribute" "Associated File Type"
  4498. .xx "Data Compression Extended Attribute" "Compression Identifier"
  4499. .xx "Application Area Extended Attribute" "Application Identifier"
  4500. .xx "Implementation Area Extended Attribute" "Implementation Identifier"
  4501. .RE
  4502. .br
  4503. .1C
  4504. .BP
  4505. .HH "Annex 1: CRC Calculation"
  4506. The following C program may be used to calculate the CRC-CCITT checksum
  4507. as described in 1.6.4.
  4508. .P1
  4509. /*
  4510.  *    CRC 010041
  4511.  */
  4512. static unsigned short crc_table[256] = {
  4513.     0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, 
  4514.     0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, 
  4515.     0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, 
  4516.     0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, 
  4517.     0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, 
  4518.     0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, 
  4519.     0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, 
  4520.     0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, 
  4521.     0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, 
  4522.     0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, 
  4523.     0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, 
  4524.     0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, 
  4525.     0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, 
  4526.     0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, 
  4527.     0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, 
  4528.     0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, 
  4529.     0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, 
  4530.     0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, 
  4531.     0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, 
  4532.     0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, 
  4533.     0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, 
  4534.     0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 
  4535.     0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, 
  4536.     0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, 
  4537.     0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, 
  4538.     0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, 
  4539.     0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, 
  4540.     0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, 
  4541.     0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, 
  4542.     0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, 
  4543.     0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, 
  4544.     0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 
  4545. };
  4546.  
  4547. unsigned short
  4548. cksum(s, n)
  4549.     register unsigned char *s;
  4550.     register int n;
  4551. {
  4552.     register unsigned int crc=0;
  4553.  
  4554.     while (n-- > 0)
  4555.        crc = crc_table[(crc ^ *s++) & 0xff] ^ (crc>>8);
  4556.  
  4557.     return crc;
  4558. }
  4559.  
  4560. #ifdef    MAIN
  4561. unsigned char bytes[] = { 0x70, 0x6A, 0x77 };
  4562.  
  4563. main()
  4564. {
  4565.     unsigned short x;
  4566.  
  4567.     x = cksum(bytes, sizeof bytes);
  4568.     printf("checksum: calculated=%4.4x, correct=%4.4x\en", x, 0x168E);
  4569.     exit(0);
  4570. }
  4571. #endif
  4572. .P2
  4573. The table was generated by the following program:
  4574. .P1
  4575. #include    <stdio.h>
  4576.  
  4577. /*
  4578.  *    a.out 010041 for CRC-CCITT
  4579.  *    a.out 0100005 for CRC-16
  4580.  */
  4581.  
  4582. main(argc, argv)
  4583.     int argc; char *argv[];
  4584. {
  4585.     unsigned long crc, poly;
  4586.     int n, i;
  4587.  
  4588.     sscanf(argv[1], "%lo", &poly);
  4589.     if(poly & 0xffff0000){
  4590.         fprintf(stderr, "polynomial is too large\en");
  4591.         exit(1);
  4592.     }
  4593.  
  4594.     printf("/*\en *    CRC 0%o\en */\en", poly);
  4595.     printf("static unsigned short crc_table[256] = {\en");
  4596.     for(n = 0; n < 256; n++){
  4597.         if(n % 8 == 0)
  4598.             printf("    ");
  4599.         crc = n << 8;
  4600.         for(i = 0; i < 8; i++){
  4601.             if(crc & 0x8000)
  4602.                 crc = (crc << 1) ^ poly;
  4603.             else
  4604.                 crc <<= 1;
  4605.             crc &= 0xFFFF;
  4606.         }
  4607.         if(n == 255)
  4608.             printf("0x%04X ", crc);
  4609.         else
  4610.             printf("0x%04X, ", crc);
  4611.         if(n % 8 == 7)
  4612.             printf("\en");
  4613.     }
  4614.     printf("};\en");
  4615.     exit(0);
  4616. }
  4617. .P2
  4618. .nm
  4619. .BP
  4620. .1C
  4621. .ce
  4622. \f3Index\fP
  4623.  
  4624. .FC
  4625. .Hh Index
  4626. .2C
  4627.  
  4628. If a term has been formally defined,
  4629. the page number of that definition is given in \f3bold\fP.
  4630. .X1
  4631. Please send suggested terms to be indexed to the editor.
  4632. .X2
  4633. .ad l
  4634. .sp 2
  4635. .de xx
  4636. .if \\n(.$=1 \\$1
  4637. .if \\n(.$=2 \\$1 \\$2
  4638. .if \\n(.$=3 \\$1 \\$2 \\$3
  4639. .if \\n(.$=4 \\$1 \\$2 \\$3 \\$4
  4640. .if \\n(.$=5 \\$1 \\$2 \\$3 \\$4 \\$5
  4641. .if \\n(.$=6 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
  4642. .if \\n(.$=7 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7
  4643. .if \\n(.$=8 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
  4644. .if \\n(.$=9 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  4645. ..
  4646. .in .75i
  4647. .fi
  4648. .br
  4649.