summaryrefslogtreecommitdiff
path: root/dpkg-split
diff options
context:
space:
mode:
authorGuillem Jover <guillem@debian.org>2011-04-15 07:09:14 +0200
committerGuillem Jover <guillem@debian.org>2011-04-15 23:59:18 +0200
commit438e5813caa759a1c6dbfa282e68ab451b425e75 (patch)
tree4145423555a3c38a9ab9d0c09cafcc051a928698 /dpkg-split
parent99380668590b3734fc105504ef2569d026c63209 (diff)
downloaddpkg-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.c10
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);