diff options
Diffstat (limited to 'src/package.c')
-rw-r--r-- | src/package.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/package.c b/src/package.c index 63ca432..558b1be 100644 --- a/src/package.c +++ b/src/package.c @@ -397,6 +397,7 @@ static int read_item(struct package *p) { if (p->read_fd < 0) return 0; + name[PACKAGE_ITEMNAMELEN] = 0; if ((r = package_read(p, name, PACKAGE_ITEMNAMELEN)) != PACKAGE_ITEMNAMELEN) { if (r == 0) { close_read_fd(p); @@ -482,7 +483,7 @@ static int write_item(struct package *p, struct package_item *i) { strncpy(name, i->name, PACKAGE_ITEMNAMELEN); if (args.verbose_flag) - fprintf(stderr, "Writing %s (%llu bytes) to package.\n", name, l); + fprintf(stderr, "Writing %s (%llu bytes) to package.\n", i->name, l); if ((r = package_write(p, name, PACKAGE_ITEMNAMELEN)) != PACKAGE_ITEMNAMELEN) { if (r >= 0) @@ -613,8 +614,15 @@ static int load_complete(struct package *p) { if (p->read_fd < 0) return 0; - while ((r = read_item(p)) > 0) + while ((r = read_item(p)) > 0) { rotdash(); + + if (interrupted) { + rotdash_hide(); + fprintf(stderr, "Canceled.\n"); + return -1; + } + } rotdash_hide(); @@ -679,6 +687,11 @@ int package_save(struct package *p, const char *fn) { goto finish; rotdash(); + + if (interrupted) { + fprintf(stderr, "Canceled.\n"); + goto finish; + } } r = 0; |