commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Maier (JIRA)" <j...@apache.org>
Subject [jira] Updated: (COMPRESS-85) cpio archive final entry corrupt
Date Wed, 30 Sep 2009 15:01:24 GMT

     [ https://issues.apache.org/jira/browse/COMPRESS-85?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Bill Maier updated COMPRESS-85:
-------------------------------

    Description: 
The code below is called with an array of 4 file names. The cpio archive archive.cpio is created
with no error messages, but when I then run the Unix command "cpio -ivct <archive.cpio"
it reports the error "Can't read input" on the last file in the archive. If I run "cpio -ivcBmu
<archive.cpio" the last file is incomplete, but the other files are extracted correctly.
Same result in AIX and Linux.

  private void createArchive(String[] outFiles)
  throws FileNotFoundException, IOException, ArchiveException {
    short format = CpioArchiveOutputStream.FORMAT_OLD_ASCII;
    final OutputStream out = new FileOutputStream("archive.cpio");
    ArchiveOutputStream os = new CpioArchiveOutputStream(out, format);

    for (int j = 0; j < outFiles.length; j++) {
      System.out.println("Entry = " + outFiles[j]);
      File f = new File(outFiles[j]);
      CpioArchiveEntry entry = new CpioArchiveEntry(format);
      entry.setName(outFiles[j]);
      entry.setSize(f.length());
      os.putArchiveEntry(entry);
      IOUtils.copy(new FileInputStream(outFiles[j]), os);
      os.closeArchiveEntry();
    }
    os.finish();
    os.close();
  }


  was:
The code below is called with an array of 4 file names. The cpio archive archive.cpio is created
with no error messages, but when I then run the Unix command "cpio -ivct <archive.cpio"
it reports the error "Can't read input" on the last file in the archive. If I run "cpio -ivcBmu
<archive.cpio" the last file is incomplete, but the other files are extracted correctly.
Same result in AIX and Linux.

{{
  private void createArchive(String[] outFiles)
  throws FileNotFoundException, IOException, ArchiveException {
    short format = CpioArchiveOutputStream.FORMAT_OLD_ASCII;
    final OutputStream out = new FileOutputStream("archive.cpio");
    ArchiveOutputStream os = new CpioArchiveOutputStream(out, format);

    for (int j = 0; j < outFiles.length; j++) {
      System.out.println("Entry = " + outFiles[j]);
      File f = new File(outFiles[j]);
      CpioArchiveEntry entry = new CpioArchiveEntry(format);
      entry.setName(outFiles[j]);
      entry.setSize(f.length());
      os.putArchiveEntry(entry);
      IOUtils.copy(new FileInputStream(outFiles[j]), os);
      os.closeArchiveEntry();
    }
    os.finish();
    os.close();
  }
}}



> cpio archive final entry corrupt
> --------------------------------
>
>                 Key: COMPRESS-85
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-85
>             Project: Commons Compress
>          Issue Type: Bug
>    Affects Versions: 1.0
>         Environment: Java 1.4.2 run on AIX and Linux
>            Reporter: Bill Maier
>
> The code below is called with an array of 4 file names. The cpio archive archive.cpio
is created with no error messages, but when I then run the Unix command "cpio -ivct <archive.cpio"
it reports the error "Can't read input" on the last file in the archive. If I run "cpio -ivcBmu
<archive.cpio" the last file is incomplete, but the other files are extracted correctly.
Same result in AIX and Linux.
>   private void createArchive(String[] outFiles)
>   throws FileNotFoundException, IOException, ArchiveException {
>     short format = CpioArchiveOutputStream.FORMAT_OLD_ASCII;
>     final OutputStream out = new FileOutputStream("archive.cpio");
>     ArchiveOutputStream os = new CpioArchiveOutputStream(out, format);
>     for (int j = 0; j < outFiles.length; j++) {
>       System.out.println("Entry = " + outFiles[j]);
>       File f = new File(outFiles[j]);
>       CpioArchiveEntry entry = new CpioArchiveEntry(format);
>       entry.setName(outFiles[j]);
>       entry.setSize(f.length());
>       os.putArchiveEntry(entry);
>       IOUtils.copy(new FileInputStream(outFiles[j]), os);
>       os.closeArchiveEntry();
>     }
>     os.finish();
>     os.close();
>   }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message