summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2018-09-30 16:56:56 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2018-09-30 16:56:56 +0200
commit349d72c19ced4fae64e8fdd5792b37e78ac2f616 (patch)
treec7f228ac570984a552242e64fe815d212876c0dc
parent14454b3071c7a5c053fde8eed416ab3b2f8475fb (diff)
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>
-rw-r--r--archival/unzip.c57
-rw-r--r--coreutils/ls.c4
-rw-r--r--include/libbb.h3
-rw-r--r--libbb/lineedit.c2
-rw-r--r--libbb/printable_string.c7
-rw-r--r--libbb/unicode.c2
-rw-r--r--util-linux/fdisk_gpt.c2
7 files changed, 50 insertions, 27 deletions
diff --git a/archival/unzip.c b/archival/unzip.c
index 96b7ab69b..c406d53c4 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -153,15 +153,15 @@ typedef union {
#define FIX_ENDIANNESS_CDF(cdf) \
do { if (BB_BIG_ENDIAN) { \
(cdf).fmt.version_made_by = SWAP_LE16((cdf).fmt.version_made_by); \
- (cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed); \
- (cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \
- (cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \
- (cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \
- (cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \
- (cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \
- (cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \
- (cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len); \
- (cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \
+ (cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed ); \
+ (cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \
+ (cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \
+ (cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \
+ (cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \
+ (cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \
+ (cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \
+ (cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len ); \
+ (cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \
(cdf).fmt.file_comment_length = SWAP_LE16((cdf).fmt.file_comment_length); \
(cdf).fmt.external_attributes = SWAP_LE32((cdf).fmt.external_attributes); \
}} while (0)
@@ -456,7 +456,9 @@ static int get_lstat_mode(const char *dst_fn)
struct stat stat_buf;
if (lstat(dst_fn, &stat_buf) == -1) {
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 */
return -1;
@@ -634,7 +636,9 @@ int unzip_main(int argc, char **argv)
break;
if (++i > 2) {
*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]);
}
@@ -646,8 +650,11 @@ int unzip_main(int argc, char **argv)
xchdir(base_dir);
if (quiet <= 1) { /* not -qq */
- if (quiet == 0)
- printf("Archive: %s\n", src_fn);
+ if (quiet == 0) {
+ printf("Archive: %s\n",
+ printable_string(src_fn)
+ );
+ }
if (opts & OPT_l) {
puts(verbose ?
" 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",
(unsigned)zip.fmt.ucmpsize,
dtbuf,
- dst_fn);
+ printable_string(dst_fn)
+ );
} else {
char method6[7];
unsigned long percents;
@@ -860,7 +868,8 @@ int unzip_main(int argc, char **argv)
(unsigned)percents,
dtbuf,
zip.fmt.crc32,
- dst_fn);
+ printable_string(dst_fn)
+ );
total_size += zip.fmt.cmpsize;
}
total_usize += zip.fmt.ucmpsize;
@@ -886,7 +895,7 @@ int unzip_main(int argc, char **argv)
mode = get_lstat_mode(dst_fn);
if (mode == -1) { /* ENOENT */
if (!quiet) {
- printf(" creating: %s\n", dst_fn);
+ printf(" creating: %s\n", printable_string(dst_fn));
}
unzip_create_leading_dirs(dst_fn);
if (bb_make_directory(dst_fn, dir_mode, FILEUTILS_IGNORE_CHMOD_ERR)) {
@@ -895,7 +904,9 @@ int unzip_main(int argc, char **argv)
} else {
if (!S_ISDIR(mode)) {
bb_error_msg_and_die("'%s' exists but is not a %s",
- dst_fn, "directory");
+ printable_string(dst_fn),
+ "directory"
+ );
}
}
goto skip_cmpsize;
@@ -914,12 +925,16 @@ int unzip_main(int argc, char **argv)
if (!S_ISREG(mode)) {
fishy:
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) {
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);
/* User input could take a long time. Is it still a regular file? */
mode = get_lstat_mode(dst_fn);
@@ -949,7 +964,9 @@ int unzip_main(int argc, char **argv)
if (!quiet) {
printf(/* zip.fmt.method == 0
? " extracting: %s\n"
- : */ " inflating: %s\n", dst_fn);
+ : */ " inflating: %s\n",
+ printable_string(dst_fn)
+ );
}
#if ENABLE_FEATURE_UNZIP_CDF
if (S_ISLNK(file_mode)) {
diff --git a/coreutils/ls.c b/coreutils/ls.c
index b1c306809..db3ddb944 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -421,7 +421,7 @@ static unsigned calc_name_len(const char *name)
uni_stat_t uni_stat;
// 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)) {
return uni_stat.unicode_width;
@@ -450,7 +450,7 @@ static unsigned print_name(const char *name)
uni_stat_t uni_stat;
// 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)) {
fputs(name, stdout);
diff --git a/include/libbb.h b/include/libbb.h
index 61fa1e03e..140404ff5 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -833,7 +833,8 @@ typedef struct uni_stat_t {
} uni_stat_t;
/* Returns a string with unprintable chars replaced by '?' or
* 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
* (M-c is used only if ch is ORed with PRINTABLE_META),
* else it is printed as-is (except for ch = 0x9b) */
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index d5e92e84c..b1e971f88 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -1086,7 +1086,7 @@ static void showfiles(void)
);
}
if (ENABLE_UNICODE_SUPPORT)
- puts(printable_string(NULL, matches[n]));
+ puts(printable_string(matches[n]));
else
puts(matches[n]);
}
diff --git a/libbb/printable_string.c b/libbb/printable_string.c
index 077d58d32..a814fd03c 100644
--- a/libbb/printable_string.c
+++ b/libbb/printable_string.c
@@ -9,7 +9,7 @@
#include "libbb.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;
const char *s;
@@ -55,3 +55,8 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str)
#endif
return auto_string(dst);
}
+
+const char* FAST_FUNC printable_string(const char *str)
+{
+ return printable_string2(NULL, str);
+}
diff --git a/libbb/unicode.c b/libbb/unicode.c
index d378175a4..89d42179b 100644
--- a/libbb/unicode.c
+++ b/libbb/unicode.c
@@ -996,7 +996,7 @@ size_t FAST_FUNC unicode_strlen(const char *string)
size_t FAST_FUNC unicode_strwidth(const char *string)
{
uni_stat_t uni_stat;
- printable_string(&uni_stat, string);
+ printable_string2(&uni_stat, string);
return uni_stat.unicode_width;
}
diff --git a/util-linux/fdisk_gpt.c b/util-linux/fdisk_gpt.c
index cdb90627d..dbe889f7c 100644
--- a/util-linux/fdisk_gpt.c
+++ b/util-linux/fdisk_gpt.c
@@ -87,7 +87,7 @@ gpt_print_wide36(uint16_t *s)
}
wc[i] = 0;
if (wcstombs(buf, wc, sizeof(buf)) <= sizeof(buf)-1)
- fputs(printable_string(NULL, buf), stdout);
+ fputs(printable_string(buf), stdout);
#else
char buf[37];
int i = 0;