home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / std_unix / volume.30 / text0062.txt < prev    next >
Encoding:
Text File  |  1993-03-11  |  2.8 KB  |  68 lines

  1. Submitted-by: karish@pangea.Stanford.EDU (Chuck Karish)
  2.  
  3. In article <1lrvj6INNi5p@ftp.UU.NET> conklin@kaleida.com writes:
  4. >I like cpio's ability to take a list of files on standard input, but
  5. >was suprised when I converted a tar archive of pbmplus executables
  6. >(about 1MB) to a cpio archive (about 20MB).  It turns out that cpio,
  7. >unlike tar, stores the contents of each hard linked file in the
  8. >archive.
  9. >
  10. >I found a cpio "clone", afio, which does not do that.  The first file
  11. >is output as normal, but subsequent instances are output with a zero
  12. >length.  
  13.  
  14. This seems to be an extension that's not spelled out in POSIX.1:
  15. If a file header has the same values for c_dev and c_ino as
  16. another file in the archive, and a size of zero, and an
  17. appropriate link count (greater than the nuymber of links
  18. links that have been made to that file so far), treat it as
  19. another link to the other file.
  20.  
  21. Note that this can break down if inode numbers are big enough
  22. to overflow the c_ino field.  That's one reason why USL started
  23. using a new cpio format (magic number == 070701) so soon after the
  24. POSIX.1 cpio format was standardized.
  25.  
  26. >Archives produced by afio are successfully extracted by every version
  27. >of cpio I've been able to test it with.  Is this behavior acceptable?
  28. >
  29. >I'm asking this because I'd like to add a similar feature to the cpio
  30. >furnished with 386BSD (but only if the archives it would produce are
  31. >still standards complient).
  32.  
  33. POSIX.1 says "c_dev and c_ino shall contain values that
  34. uniquely identify the file within the archive (i.e., no
  35. files shall contain the same pair of c_dev and c_ino values
  36. unless they are links to the same file)".  This clearly
  37. allows the cpio utility to make multiple links to the file.
  38.  
  39. There's no specific requirement that subsequent files in
  40. the archive that are links to a previous file be treated
  41. specially with regard to file size.  This says to me that
  42. the specification would expect the data in a file with
  43. multiple links to be repeated in the archive, but not on
  44. disk after the files are extracted from the archive.
  45.  
  46. I've checked the behavior of cpio on a SVR2 system and a
  47. SVR4 system.  On SVR2 and on SVR4 with the '-H odc'
  48. option selected, cpio saves the data three times in
  49. the archive and extracts three links to the same file.
  50. On SVR4 with the default (070701) format, cpio saves
  51. the data only once.
  52.  
  53. Thus the POSIX.1 specification is faithful to historical
  54. implementations of cpio, and the implementors of cpio have
  55. recognized the limitations of the historical version.
  56.  
  57. You might like to take a look at GNU cpio, which provides
  58. both cpio formats.  This program also allows you to
  59. make tar archives using a list of file names on stdin.
  60.  
  61. --
  62. Chuck Karish          karish@mindcraft.com
  63. (415) 323-9000 x117   karish@pangea.stanford.edu
  64.  
  65.  
  66. Volume-Number: Volume 30, Number 65
  67.  
  68.