List of usage examples for org.apache.commons.compress.archivers.cpio CpioArchiveEntry getName
public String getName()
From source file:com.pclinuxos.rpm.util.FileUtils.java
/** * The method extracts a srpm into the default directory used by the program (/home/<user>/RCEB/srpms/tmp) * /* www .ja v a 2s. c o m*/ * @param srpm the srpm to extract * @return 0 if the extraction was successfully, -1 if a IOException occurred, -2 if a InterruptException * occurred. Values > 0 for return codes of the rpm2cpio command. */ public static int extractSrpm(String srpm) { int returnCode = 0; try { Process extractProcess = Runtime.getRuntime() .exec("rpm2cpio " + FileConstants.SRCSRPMS.getAbsolutePath() + "/" + srpm); // 64kb buffer byte[] buffer = new byte[0xFFFF]; InputStream inread = extractProcess.getInputStream(); FileOutputStream out = new FileOutputStream(new File(FileConstants.F4SRPMEX + "archive.cpio")); while (inread.read(buffer) != -1) { out.write(buffer); } returnCode = extractProcess.waitFor(); if (returnCode == 0) { CpioArchiveInputStream cpioIn = new CpioArchiveInputStream( new FileInputStream(FileConstants.F4SRPMEX + "archive.cpio")); CpioArchiveEntry cpEntry; while ((cpEntry = cpioIn.getNextCPIOEntry()) != null) { FileOutputStream fOut = new FileOutputStream(FileConstants.F4SRPMEX + cpEntry.getName()); // Do not make this buffer bigger it breaks the cpio decompression byte[] buffer2 = new byte[1]; ArrayList<Byte> buf = new ArrayList<Byte>(); while (cpioIn.read(buffer2) != -1) { buf.add(buffer2[0]); } byte[] file = new byte[buf.size()]; for (int i = 0; i < buf.size(); i++) { file[i] = buf.get(i); } fOut.write(file); fOut.flush(); fOut.close(); } cpioIn.close(); } } catch (IOException e) { returnCode = -1; } catch (InterruptedException e) { returnCode = -2; } new File(FileConstants.F4SRPMEX + "archive.cpio").delete(); return returnCode; }
From source file:ch.ledcom.assertj.CpioArchiveInputStreamAssert.java
public final void hasSingleEntry(String name) throws IOException { isNotNull();// w w w . ja va 2 s .co m int nbOfEntriesMatching = 0; CpioArchiveEntry cpioEntry; while ((cpioEntry = actual.getNextCPIOEntry()) != null) { if (cpioEntry.getName().equals(name)) { nbOfEntriesMatching++; } } if (nbOfEntriesMatching < 1) { failWithMessage("Expected entry <%s> was not found in archive.", name); } else if (nbOfEntriesMatching > 1) { failWithMessage("Expected entry <%s> was found more than once in archive.", name); } }
From source file:de.dentrassi.rpm.tests.InputStreamTest.java
private void dumpEntry(final CpioArchiveEntry entry) { System.out.format("-----------------------------------%n"); System.out.format(" %s%n", entry.getName()); System.out.format(" Size: %s%n", entry.getSize()); }
From source file:ch.ledcom.jpreseed.InitrdRepacker.java
public final void repack(OutputStream out) throws IOException { // start new archive try (CpioArchiveInputStream cpioIn = new CpioArchiveInputStream(new GZIPInputStream(initrdGz)); CpioArchiveOutputStream cpioOut = new CpioArchiveOutputStream(new GZIPOutputStream(out))) { CpioArchiveEntry cpioEntry; // add files from base archive while ((cpioEntry = cpioIn.getNextCPIOEntry()) != null) { if (!additionalFiles.keySet().contains(cpioEntry.getName())) { logger.info("Repacking [{}]", cpioEntry.getName()); cpioOut.putArchiveEntry(cpioEntry); long bytesCopied = copy(cpioIn, cpioOut); cpioOut.closeArchiveEntry(); logger.debug("Copied [{}] bytes", bytesCopied); }/*from w w w.j a v a2s. com*/ } // additional files for (Map.Entry<String, File> entry : additionalFiles.entrySet()) { logger.info("Packing new file [{}]", entry.getKey()); ArchiveEntry additionalEntry = cpioOut.createArchiveEntry(entry.getValue(), entry.getKey()); cpioOut.putArchiveEntry(additionalEntry); try (InputStream in = new FileInputStream(entry.getValue())) { copy(in, cpioOut); } cpioOut.closeArchiveEntry(); } } }
From source file:de.dentrassi.pm.rpm.internal.RpmExtractor.java
private RpmInformation makeInformation(final RpmInputStream in) throws IOException { final RpmHeader<RpmTag> header = in.getPayloadHeader(); final RpmHeader<RpmSignatureTag> signature = in.getSignatureHeader(); try {//from w w w .jav a 2 s.com final RpmInformation result = new RpmInformation(); result.setHeaderStart(header.getStart()); result.setHeaderEnd(header.getStart() + header.getLength()); result.setName(asString(header.getTag(RpmTag.NAME))); result.setArchitecture(asString(header.getTag(RpmTag.ARCH))); result.setSummary(asString(header.getTag(RpmTag.SUMMARY))); result.setDescription(asString(header.getTag(RpmTag.DESCRIPTION))); result.setPackager(asString(header.getTag(RpmTag.PACKAGER))); result.setUrl(asString(header.getTag(RpmTag.URL))); result.setLicense(asString(header.getTag(RpmTag.LICENSE))); result.setVendor(asString(header.getTag(RpmTag.VENDOR))); result.setGroup(asString(header.getTag(RpmTag.GROUP))); result.setBuildHost(asString(header.getTag(RpmTag.BUILDHOST))); result.setBuildTimestamp(asLong(header.getTag(RpmTag.BUILDTIME))); result.setSourcePackage(asString(header.getTag(RpmTag.SOURCE_PACKAGE))); result.setInstalledSize(asLong(header.getTag(RpmTag.INSTALLED_SIZE))); result.setArchiveSize(asLong(header.getTag(RpmTag.ARCHIVE_SIZE))); if (result.getArchiveSize() == null) { result.setArchiveSize(asLong(signature.getTag(RpmSignatureTag.PAYLOAD_SIZE))); } // version final RpmInformation.Version ver = new RpmInformation.Version(asString(header.getTag(RpmTag.VERSION)), asString(header.getTag(RpmTag.RELEASE)), asString(header.getTag(RpmTag.EPOCH))); result.setVersion(ver); // changelog final Object val = header.getTag(RpmTag.CHANGELOG_TIMESTAMP); if (val instanceof Long[]) { final Long[] ts = (Long[]) val; final String[] authors = (String[]) header.getTag(RpmTag.CHANGELOG_AUTHOR); final String[] texts = (String[]) header.getTag(RpmTag.CHANGELOG_TEXT); final List<RpmInformation.Changelog> changes = new ArrayList<>(ts.length); for (int i = 0; i < ts.length; i++) { changes.add(new RpmInformation.Changelog(ts[i], authors[i], texts[i])); } Collections.sort(changes, (o1, o2) -> Long.compare(o1.getTimestamp(), o2.getTimestamp())); result.setChangelog(changes); } // dependencies result.setProvides( makeDependencies(header, RpmTag.PROVIDE_NAME, RpmTag.PROVIDE_VERSION, RpmTag.PROVIDE_FLAGS)); result.setRequires( makeDependencies(header, RpmTag.REQUIRE_NAME, RpmTag.REQUIRE_VERSION, RpmTag.REQUIRE_FLAGS)); result.setConflicts( makeDependencies(header, RpmTag.CONFLICT_NAME, RpmTag.CONFLICT_VERSION, RpmTag.CONFLICT_FLAGS)); result.setObsoletes( makeDependencies(header, RpmTag.OBSOLETE_NAME, RpmTag.OBSOLETE_VERSION, RpmTag.OBSOLETE_FLAGS)); // files final CpioArchiveInputStream cpio = in.getCpioStream(); CpioArchiveEntry cpioEntry; while ((cpioEntry = cpio.getNextCPIOEntry()) != null) { final String name = normalize(cpioEntry.getName()); if (cpioEntry.isRegularFile()) { result.getFiles().add(name); } else if (cpioEntry.isDirectory()) { result.getDirectories().add(name); } } return result; } catch (final Exception e) { logger.info("Failed to create RPM information", e); return null; } }
From source file:com.espringtran.compressor4j.processor.CpioProcessor.java
/** * Read from compressed file//from w w w . j a va 2 s .co m * * @param srcPath * path of compressed file * @param fileCompressor * FileCompressor object * @throws Exception */ @Override public void read(String srcPath, FileCompressor fileCompressor) throws Exception { long t1 = System.currentTimeMillis(); byte[] data = FileUtil.convertFileToByte(srcPath); ByteArrayInputStream bais = new ByteArrayInputStream(data); CpioArchiveInputStream ais = new CpioArchiveInputStream(bais); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { byte[] buffer = new byte[1024]; int readByte; CpioArchiveEntry entry = ais.getNextCPIOEntry(); while (entry != null && entry.getSize() > 0) { long t2 = System.currentTimeMillis(); baos = new ByteArrayOutputStream(); readByte = ais.read(buffer); while (readByte != -1) { baos.write(buffer, 0, readByte); readByte = ais.read(buffer); } BinaryFile binaryFile = new BinaryFile(entry.getName(), baos.toByteArray()); fileCompressor.addBinaryFile(binaryFile); LogUtil.createAddFileLog(fileCompressor, binaryFile, t2, System.currentTimeMillis()); entry = ais.getNextCPIOEntry(); } } catch (Exception e) { FileCompressor.LOGGER.error("Error on get compressor file", e); } finally { baos.close(); ais.close(); bais.close(); } LogUtil.createReadLog(fileCompressor, srcPath, data.length, t1, System.currentTimeMillis()); }
From source file:org.eclipse.packagedrone.repo.adapter.rpm.internal.RpmExtractor.java
private RpmInformation makeInformation(final RpmInputStream in) throws IOException { final RpmHeader<RpmTag> header = in.getPayloadHeader(); final RpmHeader<RpmSignatureTag> signature = in.getSignatureHeader(); try {/*from w w w .ja va 2s. c om*/ final RpmInformation result = new RpmInformation(); result.setHeaderStart(header.getStart()); result.setHeaderEnd(header.getStart() + header.getLength()); result.setName(asString(header.getTag(RpmTag.NAME))); result.setArchitecture(asString(header.getTag(RpmTag.ARCH))); result.setSummary(asString(header.getTag(RpmTag.SUMMARY))); result.setDescription(asString(header.getTag(RpmTag.DESCRIPTION))); result.setPackager(asString(header.getTag(RpmTag.PACKAGER))); result.setUrl(asString(header.getTag(RpmTag.URL))); result.setLicense(asString(header.getTag(RpmTag.LICENSE))); result.setVendor(asString(header.getTag(RpmTag.VENDOR))); result.setGroup(asString(header.getTag(RpmTag.GROUP))); result.setBuildHost(asString(header.getTag(RpmTag.BUILDHOST))); result.setBuildTimestamp(asLong(header.getTag(RpmTag.BUILDTIME))); result.setSourcePackage(asString(header.getTag(RpmTag.SOURCE_PACKAGE))); result.setInstalledSize(asLong(header.getTag(RpmTag.INSTALLED_SIZE))); result.setArchiveSize(asLong(header.getTag(RpmTag.ARCHIVE_SIZE))); if (result.getArchiveSize() == null) { result.setArchiveSize(asLong(signature.getTag(RpmSignatureTag.PAYLOAD_SIZE))); } // version final RpmInformation.Version ver = new RpmInformation.Version(asString(header.getTag(RpmTag.VERSION)), asString(header.getTag(RpmTag.RELEASE)), asString(header.getTag(RpmTag.EPOCH))); result.setVersion(ver); // changelog final Object val = header.getTag(RpmTag.CHANGELOG_TIMESTAMP); if (val instanceof Long[]) { final Long[] ts = (Long[]) val; final String[] authors = (String[]) header.getTag(RpmTag.CHANGELOG_AUTHOR); final String[] texts = (String[]) header.getTag(RpmTag.CHANGELOG_TEXT); final List<RpmInformation.Changelog> changes = new ArrayList<>(ts.length); for (int i = 0; i < ts.length; i++) { changes.add(new RpmInformation.Changelog(ts[i], authors[i], texts[i])); } Collections.sort(changes, (o1, o2) -> Long.compare(o1.getTimestamp(), o2.getTimestamp())); result.setChangelog(changes); } // dependencies result.setProvides( makeDependencies(header, RpmTag.PROVIDE_NAME, RpmTag.PROVIDE_VERSION, RpmTag.PROVIDE_FLAGS)); result.setRequires( makeDependencies(header, RpmTag.REQUIRE_NAME, RpmTag.REQUIRE_VERSION, RpmTag.REQUIRE_FLAGS)); result.setConflicts( makeDependencies(header, RpmTag.CONFLICT_NAME, RpmTag.CONFLICT_VERSION, RpmTag.CONFLICT_FLAGS)); result.setObsoletes( makeDependencies(header, RpmTag.OBSOLETE_NAME, RpmTag.OBSOLETE_VERSION, RpmTag.OBSOLETE_FLAGS)); // files final CpioArchiveInputStream cpio = in.getCpioStream(); CpioArchiveEntry cpioEntry; while ((cpioEntry = cpio.getNextCPIOEntry()) != null) { final String name = normalize(cpioEntry.getName()); if (cpioEntry.isRegularFile()) { result.getFiles().add(name); } else if (cpioEntry.isDirectory()) { result.getDirectories().add(name); } } cpio.close(); return result; } catch (final Exception e) { logger.info("Failed to create RPM information", e); return null; } }
From source file:org.eclipse.packagedrone.utils.rpm.app.Dumper.java
private static void dumpEntry(final CpioArchiveEntry entry) { System.out.format("-----------------------------------%n"); System.out.format(" %s%n", entry.getName()); System.out.format(" Size: %s, Chksum: %016x, Align: %s, Inode: %016x, Mode: %08o, NoL: %s, Device: %s.%s%n", entry.getSize(), entry.getChksum(), entry.getAlignmentBoundary(), entry.getInode(), entry.getMode(), entry.getNumberOfLinks(), entry.getDeviceMaj(), entry.getDeviceMin()); }
From source file:org.eclipse.packagedrone.utils.rpm.info.RpmInformations.java
public static RpmInformation makeInformation(final RpmInputStream in) throws IOException { final InputHeader<RpmTag> header = in.getPayloadHeader(); final InputHeader<RpmSignatureTag> signature = in.getSignatureHeader(); final RpmInformation result = new RpmInformation(); result.setHeaderStart(header.getStart()); result.setHeaderEnd(header.getStart() + header.getLength()); result.setName(asString(header.getTag(RpmTag.NAME))); result.setArchitecture(asString(header.getTag(RpmTag.ARCH))); result.setSummary(asString(header.getTag(RpmTag.SUMMARY))); result.setDescription(asString(header.getTag(RpmTag.DESCRIPTION))); result.setPackager(asString(header.getTag(RpmTag.PACKAGER))); result.setUrl(asString(header.getTag(RpmTag.URL))); result.setLicense(asString(header.getTag(RpmTag.LICENSE))); result.setVendor(asString(header.getTag(RpmTag.VENDOR))); result.setGroup(asString(header.getTag(RpmTag.GROUP))); result.setBuildHost(asString(header.getTag(RpmTag.BUILDHOST))); result.setBuildTimestamp(asLong(header.getTag(RpmTag.BUILDTIME))); result.setSourcePackage(asString(header.getTag(RpmTag.SOURCE_PACKAGE))); result.setInstalledSize(asLong(header.getTag(RpmTag.SIZE))); result.setArchiveSize(asLong(header.getTag(RpmTag.ARCHIVE_SIZE))); if (result.getArchiveSize() == null) { result.setArchiveSize(asLong(signature.getTag(RpmSignatureTag.PAYLOAD_SIZE))); }//ww w .j ava 2 s. com // version final RpmInformation.Version ver = new RpmInformation.Version(asString(header.getTag(RpmTag.VERSION)), asString(header.getTag(RpmTag.RELEASE)), asString(header.getTag(RpmTag.EPOCH))); result.setVersion(ver); // changelog final Object val = header.getTag(RpmTag.CHANGELOG_TIMESTAMP); if (val instanceof Long[]) { final Long[] ts = (Long[]) val; final String[] authors = (String[]) header.getTag(RpmTag.CHANGELOG_AUTHOR); final String[] texts = (String[]) header.getTag(RpmTag.CHANGELOG_TEXT); final List<RpmInformation.Changelog> changes = new ArrayList<>(ts.length); for (int i = 0; i < ts.length; i++) { changes.add(new RpmInformation.Changelog(ts[i], authors[i], texts[i])); } Collections.sort(changes, (o1, o2) -> Long.compare(o1.getTimestamp(), o2.getTimestamp())); result.setChangelog(changes); } // dependencies result.setProvides( makeDependencies(header, RpmTag.PROVIDE_NAME, RpmTag.PROVIDE_VERSION, RpmTag.PROVIDE_FLAGS)); result.setRequires( makeDependencies(header, RpmTag.REQUIRE_NAME, RpmTag.REQUIRE_VERSION, RpmTag.REQUIRE_FLAGS)); result.setConflicts( makeDependencies(header, RpmTag.CONFLICT_NAME, RpmTag.CONFLICT_VERSION, RpmTag.CONFLICT_FLAGS)); result.setObsoletes( makeDependencies(header, RpmTag.OBSOLETE_NAME, RpmTag.OBSOLETE_VERSION, RpmTag.OBSOLETE_FLAGS)); // files final CpioArchiveInputStream cpio = in.getCpioStream(); CpioArchiveEntry cpioEntry; while ((cpioEntry = cpio.getNextCPIOEntry()) != null) { final String name = normalize(cpioEntry.getName()); if (cpioEntry.isRegularFile()) { result.getFiles().add(name); } else if (cpioEntry.isDirectory()) { result.getDirectories().add(name); } } cpio.close(); return result; }
From source file:org.ysb33r.groovy.vfsplugin.cpio.CpioFileSystem.java
@Override public void init() throws FileSystemException { super.init(); // Build the index try {//from w w w . ja v a 2 s . c o m final List<CpioFileObject> strongRef = new ArrayList<CpioFileObject>(DEFAULT_INDEX_SIZE); CpioArchiveEntry entry; while ((entry = getCpioFile().getNextCPIOEntry()) != null) { final AbstractFileName name = (AbstractFileName) getFileSystemManager().resolveName(getRootName(), UriParser.encode(entry.getName())); // Create the file CpioFileObject fileObj; if (entry.isDirectory() && getFileFromCache(name) != null) { fileObj = (CpioFileObject) getFileFromCache(name); fileObj.setCpioEntry(entry); continue; } fileObj = createCpioFileObject(name, entry); putFileToCache(fileObj); strongRef.add(fileObj); fileObj.holdObject(strongRef); // Make sure all ancestors exist // TODO - create these on demand CpioFileObject parent = null; for (AbstractFileName parentName = (AbstractFileName) name .getParent(); parentName != null; fileObj = parent, parentName = (AbstractFileName) parentName .getParent()) { // Locate the parent parent = (CpioFileObject) getFileFromCache(parentName); if (parent == null) { parent = createCpioFileObject(parentName, null); putFileToCache(parent); strongRef.add(parent); parent.holdObject(strongRef); } // Attach child to parent parent.attachChild(fileObj.getName()); } } } catch (final IOException e) { throw new FileSystemException(e); } finally { closeCommunicationLink(); } }