summaryrefslogtreecommitdiff
path: root/archival/unzip.c
diff options
context:
space:
mode:
authorDenys Vlasenko2011-09-09 17:30:55 +0200
committerDenys Vlasenko2011-09-09 17:30:55 +0200
commit831756bac440ce5f582305a81fd2b842eb255fc3 (patch)
tree00bb1764d6d184a8c821dfb1857b0901e8323e75 /archival/unzip.c
parent12e154f0cf4dba7bc508356649f8d57ec1dbef37 (diff)
downloadbusybox-831756bac440ce5f582305a81fd2b842eb255fc3.zip
busybox-831756bac440ce5f582305a81fd2b842eb255fc3.tar.gz
unzip: fflush stdout before reading interative y/n answer from stdin
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival/unzip.c')
-rw-r--r--archival/unzip.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/archival/unzip.c b/archival/unzip.c
index 4fa7293..4cc98cd 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -235,7 +235,7 @@ static void unzip_create_leading_dirs(const char *fn)
/* Create all leading directories */
char *name = xstrdup(fn);
if (bb_make_directory(dirname(name), 0777, FILEUTILS_RECUR)) {
- bb_error_msg_and_die("exiting"); /* bb_make_directory is noisy */
+ xfunc_die(); /* bb_make_directory is noisy */
}
free(name);
}
@@ -595,7 +595,7 @@ int unzip_main(int argc, char **argv)
}
unzip_create_leading_dirs(dst_fn);
if (bb_make_directory(dst_fn, dir_mode, 0)) {
- bb_error_msg_and_die("exiting");
+ xfunc_die();
}
} else {
if (!S_ISDIR(stat_buf.st_mode)) {
@@ -619,6 +619,7 @@ int unzip_main(int argc, char **argv)
i = 'y';
} else {
printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn);
+ fflush_all();
if (!fgets(key_buf, sizeof(key_buf), stdin)) {
bb_perror_msg_and_die("can't read input");
}