.
Last update: 1997-05-20
9945-2-5 Class: No change _____________________________________________________________________________ Topic: dd Relevant Sections: 4.16.2 Defect Report: ----------------------- In Section 4.16.2 - Description {of dd}, the standard states that: (2) If the input block is shorter than the specified input block size and the sync conversion is specified, null bytes shall be appended to the input data up to the specified size. (If either block or unblock is also specified, <space> characters shall be appended instead of null bytes.) The remaining conversions and output shall include the pad characters as if they had been read from the input. [...] (6) The data resulting from input or conversion or both shall be aggregated into output blocks of the specified size. After the end of input is reached, any remaining output shall be written as a block without padding if conv=sync is not specified; thus, the final output block may be shorter than the output block size. [Draft 12 of ISO/IEC 9945-2:1993 (July 1992), p. 257, lines 3063-3068, 3079-3083] In Section 4.16.4 - Operands {of dd}, the various conv= conversions are specified: block Treat the input as a sequence of <newline>-terminated or end-of-file- terminated variable length records independent of the input block boundaries. Each record shall be converted to a record with a fixed length specified by the conversion block size. Any <newline> shall be removed from the input line; <space>s shall be appended to lines that are shorter than their conversion block size to fill the block. Lines that are longer than the conversion block size shall be truncated to the largest number of characters that will fit into that size; the number of truncated lines shall be reported (see Standard Error below). [...] sync Pad every input block to the size of the ibs= buffer, appending null bytes. If either block or unblock is also specified, append <space> characters, rather than null bytes. [Ibid., pp. 259-260, lines 3125-3135, 3164-3166] The standard does not specify what happens to the output if the conv=sync conversion is specified, most notably in the case when conv=block is also specified. Does the output block get padded with <space> characters in this case, or is no output padding done? The definition of the conv=sync conversion does not describe output buffering; the only reference to it is on page 258, cited above. WG15 response for 9945-2:1993 ----------------------------------- The descriptions of conv=sync and conv=block are clear and orthogonal, conv=sync referring to input only and conv=block to output only. Hence, specifying conv=sync has no effect on how output is handled, other than its specific role in modifying input. Rationale for Interpretation: ----------------------------- None. _____________________________________________________________________________