unzip: use printable_string() for printing filenames
function old new delta unzip_main 2726 2792 +66 printable_string2 - 57 +57 identify 4329 4336 +7 expmeta 659 663 +4 add_interface 99 103 +4 beep_main 286 289 +3 changepath 192 194 +2 builtin_type 115 117 +2 devmem_main 469 470 +1 input_tab 1076 1074 -2 create_J 1821 1819 -2 poplocalvars 314 311 -3 doCommands 2222 2214 -8 do_load 918 902 -16 printable_string 57 9 -48 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 8/6 up/down: 146/-79) Total: 67 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
14454b3071
commit
349d72c19c
@ -456,7 +456,9 @@ static int get_lstat_mode(const char *dst_fn)
|
|||||||
struct stat stat_buf;
|
struct stat stat_buf;
|
||||||
if (lstat(dst_fn, &stat_buf) == -1) {
|
if (lstat(dst_fn, &stat_buf) == -1) {
|
||||||
if (errno != ENOENT) {
|
if (errno != ENOENT) {
|
||||||
bb_perror_msg_and_die("can't stat '%s'", dst_fn);
|
bb_perror_msg_and_die("can't stat '%s'",
|
||||||
|
dst_fn
|
||||||
|
);
|
||||||
}
|
}
|
||||||
/* File does not exist */
|
/* File does not exist */
|
||||||
return -1;
|
return -1;
|
||||||
@ -634,7 +636,9 @@ int unzip_main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
if (++i > 2) {
|
if (++i > 2) {
|
||||||
*ext = '\0';
|
*ext = '\0';
|
||||||
bb_error_msg_and_die("can't open %s[.zip]", src_fn);
|
bb_error_msg_and_die("can't open %s[.zip]",
|
||||||
|
src_fn
|
||||||
|
);
|
||||||
}
|
}
|
||||||
strcpy(ext, extn[i - 1]);
|
strcpy(ext, extn[i - 1]);
|
||||||
}
|
}
|
||||||
@ -646,8 +650,11 @@ int unzip_main(int argc, char **argv)
|
|||||||
xchdir(base_dir);
|
xchdir(base_dir);
|
||||||
|
|
||||||
if (quiet <= 1) { /* not -qq */
|
if (quiet <= 1) { /* not -qq */
|
||||||
if (quiet == 0)
|
if (quiet == 0) {
|
||||||
printf("Archive: %s\n", src_fn);
|
printf("Archive: %s\n",
|
||||||
|
printable_string(src_fn)
|
||||||
|
);
|
||||||
|
}
|
||||||
if (opts & OPT_l) {
|
if (opts & OPT_l) {
|
||||||
puts(verbose ?
|
puts(verbose ?
|
||||||
" Length Method Size Cmpr Date Time CRC-32 Name\n"
|
" Length Method Size Cmpr Date Time CRC-32 Name\n"
|
||||||
@ -831,7 +838,8 @@ int unzip_main(int argc, char **argv)
|
|||||||
printf( "%9u " "%s " "%s\n",
|
printf( "%9u " "%s " "%s\n",
|
||||||
(unsigned)zip.fmt.ucmpsize,
|
(unsigned)zip.fmt.ucmpsize,
|
||||||
dtbuf,
|
dtbuf,
|
||||||
dst_fn);
|
printable_string(dst_fn)
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
char method6[7];
|
char method6[7];
|
||||||
unsigned long percents;
|
unsigned long percents;
|
||||||
@ -860,7 +868,8 @@ int unzip_main(int argc, char **argv)
|
|||||||
(unsigned)percents,
|
(unsigned)percents,
|
||||||
dtbuf,
|
dtbuf,
|
||||||
zip.fmt.crc32,
|
zip.fmt.crc32,
|
||||||
dst_fn);
|
printable_string(dst_fn)
|
||||||
|
);
|
||||||
total_size += zip.fmt.cmpsize;
|
total_size += zip.fmt.cmpsize;
|
||||||
}
|
}
|
||||||
total_usize += zip.fmt.ucmpsize;
|
total_usize += zip.fmt.ucmpsize;
|
||||||
@ -886,7 +895,7 @@ int unzip_main(int argc, char **argv)
|
|||||||
mode = get_lstat_mode(dst_fn);
|
mode = get_lstat_mode(dst_fn);
|
||||||
if (mode == -1) { /* ENOENT */
|
if (mode == -1) { /* ENOENT */
|
||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
printf(" creating: %s\n", dst_fn);
|
printf(" creating: %s\n", printable_string(dst_fn));
|
||||||
}
|
}
|
||||||
unzip_create_leading_dirs(dst_fn);
|
unzip_create_leading_dirs(dst_fn);
|
||||||
if (bb_make_directory(dst_fn, dir_mode, FILEUTILS_IGNORE_CHMOD_ERR)) {
|
if (bb_make_directory(dst_fn, dir_mode, FILEUTILS_IGNORE_CHMOD_ERR)) {
|
||||||
@ -895,7 +904,9 @@ int unzip_main(int argc, char **argv)
|
|||||||
} else {
|
} else {
|
||||||
if (!S_ISDIR(mode)) {
|
if (!S_ISDIR(mode)) {
|
||||||
bb_error_msg_and_die("'%s' exists but is not a %s",
|
bb_error_msg_and_die("'%s' exists but is not a %s",
|
||||||
dst_fn, "directory");
|
printable_string(dst_fn),
|
||||||
|
"directory"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
goto skip_cmpsize;
|
goto skip_cmpsize;
|
||||||
@ -914,12 +925,16 @@ int unzip_main(int argc, char **argv)
|
|||||||
if (!S_ISREG(mode)) {
|
if (!S_ISREG(mode)) {
|
||||||
fishy:
|
fishy:
|
||||||
bb_error_msg_and_die("'%s' exists but is not a %s",
|
bb_error_msg_and_die("'%s' exists but is not a %s",
|
||||||
dst_fn, "regular file");
|
printable_string(dst_fn),
|
||||||
|
"regular file"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (overwrite == O_ALWAYS) {
|
if (overwrite == O_ALWAYS) {
|
||||||
goto do_open_and_extract;
|
goto do_open_and_extract;
|
||||||
}
|
}
|
||||||
printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn);
|
printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ",
|
||||||
|
printable_string(dst_fn)
|
||||||
|
);
|
||||||
my_fgets80(key_buf);
|
my_fgets80(key_buf);
|
||||||
/* User input could take a long time. Is it still a regular file? */
|
/* User input could take a long time. Is it still a regular file? */
|
||||||
mode = get_lstat_mode(dst_fn);
|
mode = get_lstat_mode(dst_fn);
|
||||||
@ -949,7 +964,9 @@ int unzip_main(int argc, char **argv)
|
|||||||
if (!quiet) {
|
if (!quiet) {
|
||||||
printf(/* zip.fmt.method == 0
|
printf(/* zip.fmt.method == 0
|
||||||
? " extracting: %s\n"
|
? " extracting: %s\n"
|
||||||
: */ " inflating: %s\n", dst_fn);
|
: */ " inflating: %s\n",
|
||||||
|
printable_string(dst_fn)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
#if ENABLE_FEATURE_UNZIP_CDF
|
#if ENABLE_FEATURE_UNZIP_CDF
|
||||||
if (S_ISLNK(file_mode)) {
|
if (S_ISLNK(file_mode)) {
|
||||||
|
@ -421,7 +421,7 @@ static unsigned calc_name_len(const char *name)
|
|||||||
uni_stat_t uni_stat;
|
uni_stat_t uni_stat;
|
||||||
|
|
||||||
// TODO: quote tab as \t, etc, if -Q
|
// TODO: quote tab as \t, etc, if -Q
|
||||||
name = printable_string(&uni_stat, name);
|
name = printable_string2(&uni_stat, name);
|
||||||
|
|
||||||
if (!(option_mask32 & OPT_Q)) {
|
if (!(option_mask32 & OPT_Q)) {
|
||||||
return uni_stat.unicode_width;
|
return uni_stat.unicode_width;
|
||||||
@ -450,7 +450,7 @@ static unsigned print_name(const char *name)
|
|||||||
uni_stat_t uni_stat;
|
uni_stat_t uni_stat;
|
||||||
|
|
||||||
// TODO: quote tab as \t, etc, if -Q
|
// TODO: quote tab as \t, etc, if -Q
|
||||||
name = printable_string(&uni_stat, name);
|
name = printable_string2(&uni_stat, name);
|
||||||
|
|
||||||
if (!(option_mask32 & OPT_Q)) {
|
if (!(option_mask32 & OPT_Q)) {
|
||||||
fputs(name, stdout);
|
fputs(name, stdout);
|
||||||
|
@ -833,7 +833,8 @@ typedef struct uni_stat_t {
|
|||||||
} uni_stat_t;
|
} uni_stat_t;
|
||||||
/* Returns a string with unprintable chars replaced by '?' or
|
/* Returns a string with unprintable chars replaced by '?' or
|
||||||
* SUBST_WCHAR. This function is unicode-aware. */
|
* SUBST_WCHAR. This function is unicode-aware. */
|
||||||
const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str);
|
const char* FAST_FUNC printable_string(const char *str);
|
||||||
|
const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str);
|
||||||
/* Prints unprintable char ch as ^C or M-c to file
|
/* Prints unprintable char ch as ^C or M-c to file
|
||||||
* (M-c is used only if ch is ORed with PRINTABLE_META),
|
* (M-c is used only if ch is ORed with PRINTABLE_META),
|
||||||
* else it is printed as-is (except for ch = 0x9b) */
|
* else it is printed as-is (except for ch = 0x9b) */
|
||||||
|
@ -1086,7 +1086,7 @@ static void showfiles(void)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (ENABLE_UNICODE_SUPPORT)
|
if (ENABLE_UNICODE_SUPPORT)
|
||||||
puts(printable_string(NULL, matches[n]));
|
puts(printable_string(matches[n]));
|
||||||
else
|
else
|
||||||
puts(matches[n]);
|
puts(matches[n]);
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
#include "unicode.h"
|
#include "unicode.h"
|
||||||
|
|
||||||
const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str)
|
const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str)
|
||||||
{
|
{
|
||||||
char *dst;
|
char *dst;
|
||||||
const char *s;
|
const char *s;
|
||||||
@ -55,3 +55,8 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str)
|
|||||||
#endif
|
#endif
|
||||||
return auto_string(dst);
|
return auto_string(dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* FAST_FUNC printable_string(const char *str)
|
||||||
|
{
|
||||||
|
return printable_string2(NULL, str);
|
||||||
|
}
|
||||||
|
@ -996,7 +996,7 @@ size_t FAST_FUNC unicode_strlen(const char *string)
|
|||||||
size_t FAST_FUNC unicode_strwidth(const char *string)
|
size_t FAST_FUNC unicode_strwidth(const char *string)
|
||||||
{
|
{
|
||||||
uni_stat_t uni_stat;
|
uni_stat_t uni_stat;
|
||||||
printable_string(&uni_stat, string);
|
printable_string2(&uni_stat, string);
|
||||||
return uni_stat.unicode_width;
|
return uni_stat.unicode_width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ gpt_print_wide36(uint16_t *s)
|
|||||||
}
|
}
|
||||||
wc[i] = 0;
|
wc[i] = 0;
|
||||||
if (wcstombs(buf, wc, sizeof(buf)) <= sizeof(buf)-1)
|
if (wcstombs(buf, wc, sizeof(buf)) <= sizeof(buf)-1)
|
||||||
fputs(printable_string(NULL, buf), stdout);
|
fputs(printable_string(buf), stdout);
|
||||||
#else
|
#else
|
||||||
char buf[37];
|
char buf[37];
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user