diff options
author | Guillem Jover <guillem@debian.org> | 2011-04-15 07:09:14 +0200 |
---|---|---|
committer | Guillem Jover <guillem@debian.org> | 2011-04-15 23:59:18 +0200 |
commit | 438e5813caa759a1c6dbfa282e68ab451b425e75 (patch) | |
tree | 4145423555a3c38a9ab9d0c09cafcc051a928698 /dpkg-split | |
parent | 99380668590b3734fc105504ef2569d026c63209 (diff) | |
download | dpkg-438e5813caa759a1c6dbfa282e68ab451b425e75.tar.gz |
dpkg-split: Correctly set the last part split size
The partsize for each part should be the same, the code was wrongly
setting the partsize to the real size of the data being written.
Regression introduced in commit 506dd27b56a570e019e90974ea285fe4fd2f8bf8.
Diffstat (limited to 'dpkg-split')
-rw-r--r-- | dpkg-split/split.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/dpkg-split/split.c b/dpkg-split/split.c index 296d1ebf2..655d591e1 100644 --- a/dpkg-split/split.c +++ b/dpkg-split/split.c @@ -119,7 +119,7 @@ mksplit(const char *file_src, const char *prefix, off_t maxpartsize, char *package, *version; int nparts, curpart; off_t partsize; - off_t last_partsize; + off_t cur_partsize, last_partsize; char *prefixdir = NULL, *msdos_prefix = NULL; struct varbuf file_dst = VARBUF_INIT; struct varbuf partmagic = VARBUF_INIT; @@ -186,9 +186,11 @@ mksplit(const char *file_src, const char *prefix, off_t maxpartsize, } if (curpart == nparts) - partsize = last_partsize; + cur_partsize = last_partsize; + else + cur_partsize = partsize; - if (partsize > maxpartsize) { + if (cur_partsize > maxpartsize) { ohshit(_("Header is too long, making part too long. " "Your package name or version\n" "numbers must be extraordinarily long, " @@ -215,7 +217,7 @@ mksplit(const char *file_src, const char *prefix, off_t maxpartsize, /* Write the data part. */ varbuf_printf(&partname, "data.%d", curpart); dpkg_ar_member_put_file(file_dst.buf, fd_dst, partname.buf, - fd_src, partsize); + fd_src, cur_partsize); varbuf_reset(&partname); close(fd_dst); |