import sys.FileInfo;
import sys.FileInfo.{Value, FIFO, CHR, DIR, BLK, REG, LNK, HDLNK, UNK};
+import Implicits.truish;
+
/*----- Main code ---------------------------------------------------------*/
class TarFormatError(msg: String) extends Exception(msg);
/* Then the permissions bits. Ugh, the permissions bits. */
def perm(s: Int, r: Int, w: Int, x: Int, schar: Char, Schar: Char) {
- sb += (if ((mode&r) != 0) 'r' else '-');
- sb += (if ((mode&w) != 0) 'w' else '-');
- sb += (if ((mode&s) != 0)
- if ((mode&x) != 0) schar else Schar;
- else
- if ((mode&x) != 0) 'x' else '-');
+ sb += (if (mode&r) 'r' else '-');
+ sb += (if (mode&w) 'w' else '-');
+ sb += (if (mode&s) { if (mode&x) schar else Schar; }
+ else { if (mode&x) 'x' else '-' });
}
perm(0x800, 0x100, 0x080, 0x040, 's', 'S');
perm(0x400, 0x020, 0x010, 0x008, 's', 'S');
val b = hdr(i);
/* See if we're done now. */
- if (b == ' ' || b == 0) return n;
+ if (!b || b == ' ') return n;
else if (b < '0' || b > '7')
throw new TarFormatError(s"bad octal digit (at ${offset + off + i})");
*/
val name = {
val tail = string(0, 100);
- if (!posixp || hdr(345) == 0) tail
+ if (!posixp || !hdr(345)) tail
else {
val prefix = string(345, 155);
prefix + '/' + tail