summaryrefslogtreecommitdiffstats
path: root/src/package.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/package.c')
-rw-r--r--src/package.c17
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;