Methods Summary |
---|
public static long | computeCheckSum(byte[] buf)Compute the checksum of a tar entry header.
long sum = 0;
for (int i = 0; i < buf.length; ++i) {
sum += 255 & buf[i];
}
return sum;
|
public static int | getCheckSumOctalBytes(long value, byte[] buf, int offset, int length)Parse the checksum octal integer from a header buffer.
getOctalBytes(value, buf, offset, length);
buf[offset + length - 1] = (byte) ' ";
buf[offset + length - 2] = 0;
return offset + length;
|
public static int | getLongOctalBytes(long value, byte[] buf, int offset, int length)Parse an octal long integer from a header buffer.
byte[] temp = new byte[length + 1];
getOctalBytes(value, temp, 0, length + 1);
System.arraycopy(temp, 0, buf, offset, length);
return offset + length;
|
public static int | getNameBytes(java.lang.StringBuffer name, byte[] buf, int offset, int length)Determine the number of bytes in an entry name.
int i;
for (i = 0; i < length && i < name.length(); ++i) {
buf[offset + i] = (byte) name.charAt(i);
}
for (; i < length; ++i) {
buf[offset + i] = 0;
}
return offset + length;
|
public static int | getOctalBytes(long value, byte[] buf, int offset, int length)Parse an octal integer from a header buffer.
int idx = length - 1;
buf[offset + idx] = 0;
--idx;
buf[offset + idx] = (byte) ' ";
--idx;
if (value == 0) {
buf[offset + idx] = (byte) '0";
--idx;
} else {
for (long val = value; idx >= 0 && val > 0; --idx) {
buf[offset + idx] = (byte) ((byte) '0" + (byte) (val & 7));
val = val >> 3;
}
}
for (; idx >= 0; --idx) {
buf[offset + idx] = (byte) ' ";
}
return offset + length;
|
public static java.lang.StringBuffer | parseName(byte[] header, int offset, int length)Parse an entry name from a header buffer.
StringBuffer result = new StringBuffer(length);
int end = offset + length;
for (int i = offset; i < end; ++i) {
if (header[i] == 0) {
break;
}
result.append((char) header[i]);
}
return result;
|
public static long | parseOctal(byte[] header, int offset, int length)Parse an octal string from a header buffer. This is used for the
file permission mode value.
long result = 0;
boolean stillPadding = true;
int end = offset + length;
for (int i = offset; i < end; ++i) {
if (header[i] == 0) {
break;
}
if (header[i] == (byte) ' " || header[i] == '0") {
if (stillPadding) {
continue;
}
if (header[i] == (byte) ' ") {
break;
}
}
stillPadding = false;
result = (result << 3) + (header[i] - '0");
}
return result;
|