Author: ebourg
Date: Fri Aug 9 09:02:51 2013
New Revision: 1512207
URL: http://svn.apache.org/r1512207
Log:
Improved the exception message when the name/link is too long
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
Modified:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
URL:
http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java?rev=1512207&r1=1512206&r2=1512207&view=diff
==============================================================================
---
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
(original)
+++
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveOutputStream.java
Fri Aug 9 09:02:51 2013
@@ -272,12 +272,12 @@ public class TarArchiveOutputStream exte
Map<String, String> paxHeaders = new HashMap<String, String>();
final String entryName = entry.getName();
boolean paxHeaderContainsPath = handleLongName(entryName, paxHeaders,
"path",
-
TarConstants.LF_GNUTYPE_LONGNAME);
+
TarConstants.LF_GNUTYPE_LONGNAME, "file name");
final String linkName = entry.getLinkName();
boolean paxHeaderContainsLinkPath = linkName != null &&
linkName.length() > 0
&& handleLongName(linkName, paxHeaders, "linkpath",
- TarConstants.LF_GNUTYPE_LONGLINK);
+ TarConstants.LF_GNUTYPE_LONGLINK, "link name");
if (bigNumberMode == BIGNUMBER_POSIX) {
addPaxHeadersForBigNumbers(paxHeaders, entry);
@@ -630,11 +630,12 @@ public class TarArchiveOutputStream exte
* @param paxHeaders current map of pax headers
* @param paxHeaderName name of the pax header to write
* @param linkType type of the GNU entry to write
+ * @param fieldName the name of the field
* @return whether a pax header has been written.
*/
private boolean handleLongName(String name,
Map<String, String> paxHeaders,
- String paxHeaderName, byte linkType)
+ String paxHeaderName, byte linkType, String
fieldName)
throws IOException {
final ByteBuffer encodedName = encoding.encode(name);
final int len = encodedName.limit() - encodedName.position();
@@ -646,8 +647,7 @@ public class TarArchiveOutputStream exte
} else if (longFileMode == LONGFILE_GNU) {
// create a TarEntry for the LongLink, the contents
// of which are the link's name
- TarArchiveEntry longLinkEntry =
- new TarArchiveEntry(TarConstants.GNU_LONGLINK, linkType);
+ TarArchiveEntry longLinkEntry = new
TarArchiveEntry(TarConstants.GNU_LONGLINK, linkType);
longLinkEntry.setSize(len + 1); // +1 for NUL
putArchiveEntry(longLinkEntry);
@@ -655,7 +655,7 @@ public class TarArchiveOutputStream exte
write(0); // NUL terminator
closeArchiveEntry();
} else if (longFileMode != LONGFILE_TRUNCATE) {
- throw new RuntimeException(paxHeaderName + " '" + name
+ throw new RuntimeException(fieldName + " '" + name
+ "' is too long ( > "
+ TarConstants.NAMELEN + " bytes)");
}