miwarin / netbsd-gnats-memo

0 stars 0 forks source link

bin/44711 pax should be able to handle file size greater than 8GB - I am using ustar format #29

Open miwarin opened 9 years ago

miwarin commented 9 years ago

http://gnats.netbsd.org/44711

まだ対応しておらず。

ファイル作成 10GB

$ dd if=/dev/zero of=./hoge bs=1m count=10240

pax

$ pax -w -f ./hoge.tgz ./hoge
pax: File is too long for ustar ./hoge

-x cpio などフォーマット変えても同じ。

$ pax -w -x cpio -f ./hoge.cpio ./hoge
pax: File is too large for cpio format ./hoge
miwarin commented 9 years ago

On-line Manual of "pax"

miwarin commented 9 years ago

FreeBSD の pax も too long と言われる。

miwarin commented 9 years ago

http://nxr.netbsd.org/source/xref/src/bin/pax/tar.c#1165

2箇所のうちのどちらか

他にも u32 などたくさんあるので 32 ビット → 64 ビット対応はかなり大変かと

1165    case PAX_GLF:
1166    case PAX_REG:
1167    case PAX_CTG:
1168    default:
1169        /*
1170         * file data with this type, set the padding
1171         */
1172        if (arcn->type == PAX_GLF) {
1173            hd->typeflag = LONGNAMETYPE;
1174            arcn->pad = TAR_PAD(gnu_hack_len);
1175            if (OFFT_OCT((uint32_t)gnu_hack_len, hd->size,
1176                sizeof(hd->size), 3)) {
1177                tty_warn(1,"File is too long for ustar %s",
1178                    arcn->org_name);
1179                return 1;
1180            }
1181        } else {
1182            if (arcn->type == PAX_CTG)
1183                hd->typeflag = CONTTYPE;
1184            else
1185                hd->typeflag = REGTYPE;
1186            arcn->pad = TAR_PAD(arcn->sb.st_size);
1187            if (OFFT_OCT(arcn->sb.st_size, hd->size,
1188                sizeof(hd->size), 3)) {
1189                tty_warn(1,"File is too long for ustar %s",
1190                    arcn->org_name);
1191                return 1;
1192            }
1193        }
1194        break;
1195    }
miwarin commented 9 years ago

pkgsrc の pax も然り。/usr/pkgsrc/archivers/pax

% nbpax -w -f ./hoge.tgz ./hoge
pax: File is too long for ustar ./hoge

Makefile の MASTER_SITES が empty なんだが、どこの pax なんだこれ。

# $NetBSD: Makefile,v 1.49 2013/09/12 11:18:40 jperkin Exp $

DISTNAME=               pax-20080110
PKGREVISION=            2
CATEGORIES=             archivers
MASTER_SITES=           # empty
DISTFILES=