diff options
| author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-09-30 16:56:56 +0200 |
|---|---|---|
| committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-09-30 16:56:56 +0200 |
| commit | 349d72c19ced4fae64e8fdd5792b37e78ac2f616 (patch) | |
| tree | c7f228ac570984a552242e64fe815d212876c0dc | |
| parent | 14454b3071c7a5c053fde8eed416ab3b2f8475fb (diff) | |
| download | busybox-w32-349d72c19ced4fae64e8fdd5792b37e78ac2f616.tar.gz busybox-w32-349d72c19ced4fae64e8fdd5792b37e78ac2f616.tar.bz2 busybox-w32-349d72c19ced4fae64e8fdd5792b37e78ac2f616.zip | |
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.c | 57 | ||||
| -rw-r--r-- | coreutils/ls.c | 4 | ||||
| -rw-r--r-- | include/libbb.h | 3 | ||||
| -rw-r--r-- | libbb/lineedit.c | 2 | ||||
| -rw-r--r-- | libbb/printable_string.c | 7 | ||||
| -rw-r--r-- | libbb/unicode.c | 2 | ||||
| -rw-r--r-- | util-linux/fdisk_gpt.c | 2 |
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 { | |||
| 153 | #define FIX_ENDIANNESS_CDF(cdf) \ | 153 | #define FIX_ENDIANNESS_CDF(cdf) \ |
| 154 | do { if (BB_BIG_ENDIAN) { \ | 154 | do { if (BB_BIG_ENDIAN) { \ |
| 155 | (cdf).fmt.version_made_by = SWAP_LE16((cdf).fmt.version_made_by); \ | 155 | (cdf).fmt.version_made_by = SWAP_LE16((cdf).fmt.version_made_by); \ |
| 156 | (cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed); \ | 156 | (cdf).fmt.version_needed = SWAP_LE16((cdf).fmt.version_needed ); \ |
| 157 | (cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \ | 157 | (cdf).fmt.method = SWAP_LE16((cdf).fmt.method ); \ |
| 158 | (cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \ | 158 | (cdf).fmt.modtime = SWAP_LE16((cdf).fmt.modtime ); \ |
| 159 | (cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \ | 159 | (cdf).fmt.moddate = SWAP_LE16((cdf).fmt.moddate ); \ |
| 160 | (cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \ | 160 | (cdf).fmt.crc32 = SWAP_LE32((cdf).fmt.crc32 ); \ |
| 161 | (cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \ | 161 | (cdf).fmt.cmpsize = SWAP_LE32((cdf).fmt.cmpsize ); \ |
| 162 | (cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \ | 162 | (cdf).fmt.ucmpsize = SWAP_LE32((cdf).fmt.ucmpsize ); \ |
| 163 | (cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len); \ | 163 | (cdf).fmt.filename_len = SWAP_LE16((cdf).fmt.filename_len ); \ |
| 164 | (cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \ | 164 | (cdf).fmt.extra_len = SWAP_LE16((cdf).fmt.extra_len ); \ |
| 165 | (cdf).fmt.file_comment_length = SWAP_LE16((cdf).fmt.file_comment_length); \ | 165 | (cdf).fmt.file_comment_length = SWAP_LE16((cdf).fmt.file_comment_length); \ |
| 166 | (cdf).fmt.external_attributes = SWAP_LE32((cdf).fmt.external_attributes); \ | 166 | (cdf).fmt.external_attributes = SWAP_LE32((cdf).fmt.external_attributes); \ |
| 167 | }} while (0) | 167 | }} while (0) |
| @@ -456,7 +456,9 @@ static int get_lstat_mode(const char *dst_fn) | |||
| 456 | struct stat stat_buf; | 456 | struct stat stat_buf; |
| 457 | if (lstat(dst_fn, &stat_buf) == -1) { | 457 | if (lstat(dst_fn, &stat_buf) == -1) { |
| 458 | if (errno != ENOENT) { | 458 | if (errno != ENOENT) { |
| 459 | bb_perror_msg_and_die("can't stat '%s'", dst_fn); | 459 | bb_perror_msg_and_die("can't stat '%s'", |
| 460 | dst_fn | ||
| 461 | ); | ||
| 460 | } | 462 | } |
| 461 | /* File does not exist */ | 463 | /* File does not exist */ |
| 462 | return -1; | 464 | return -1; |
| @@ -634,7 +636,9 @@ int unzip_main(int argc, char **argv) | |||
| 634 | break; | 636 | break; |
| 635 | if (++i > 2) { | 637 | if (++i > 2) { |
| 636 | *ext = '\0'; | 638 | *ext = '\0'; |
| 637 | bb_error_msg_and_die("can't open %s[.zip]", src_fn); | 639 | bb_error_msg_and_die("can't open %s[.zip]", |
| 640 | src_fn | ||
| 641 | ); | ||
| 638 | } | 642 | } |
| 639 | strcpy(ext, extn[i - 1]); | 643 | strcpy(ext, extn[i - 1]); |
| 640 | } | 644 | } |
| @@ -646,8 +650,11 @@ int unzip_main(int argc, char **argv) | |||
| 646 | xchdir(base_dir); | 650 | xchdir(base_dir); |
| 647 | 651 | ||
| 648 | if (quiet <= 1) { /* not -qq */ | 652 | if (quiet <= 1) { /* not -qq */ |
| 649 | if (quiet == 0) | 653 | if (quiet == 0) { |
| 650 | printf("Archive: %s\n", src_fn); | 654 | printf("Archive: %s\n", |
| 655 | printable_string(src_fn) | ||
| 656 | ); | ||
| 657 | } | ||
| 651 | if (opts & OPT_l) { | 658 | if (opts & OPT_l) { |
| 652 | puts(verbose ? | 659 | puts(verbose ? |
| 653 | " Length Method Size Cmpr Date Time CRC-32 Name\n" | 660 | " Length Method Size Cmpr Date Time CRC-32 Name\n" |
| @@ -831,7 +838,8 @@ int unzip_main(int argc, char **argv) | |||
| 831 | printf( "%9u " "%s " "%s\n", | 838 | printf( "%9u " "%s " "%s\n", |
| 832 | (unsigned)zip.fmt.ucmpsize, | 839 | (unsigned)zip.fmt.ucmpsize, |
| 833 | dtbuf, | 840 | dtbuf, |
| 834 | dst_fn); | 841 | printable_string(dst_fn) |
| 842 | ); | ||
| 835 | } else { | 843 | } else { |
| 836 | char method6[7]; | 844 | char method6[7]; |
| 837 | unsigned long percents; | 845 | unsigned long percents; |
| @@ -860,7 +868,8 @@ int unzip_main(int argc, char **argv) | |||
| 860 | (unsigned)percents, | 868 | (unsigned)percents, |
| 861 | dtbuf, | 869 | dtbuf, |
| 862 | zip.fmt.crc32, | 870 | zip.fmt.crc32, |
| 863 | dst_fn); | 871 | printable_string(dst_fn) |
| 872 | ); | ||
| 864 | total_size += zip.fmt.cmpsize; | 873 | total_size += zip.fmt.cmpsize; |
| 865 | } | 874 | } |
| 866 | total_usize += zip.fmt.ucmpsize; | 875 | total_usize += zip.fmt.ucmpsize; |
| @@ -886,7 +895,7 @@ int unzip_main(int argc, char **argv) | |||
| 886 | mode = get_lstat_mode(dst_fn); | 895 | mode = get_lstat_mode(dst_fn); |
| 887 | if (mode == -1) { /* ENOENT */ | 896 | if (mode == -1) { /* ENOENT */ |
| 888 | if (!quiet) { | 897 | if (!quiet) { |
| 889 | printf(" creating: %s\n", dst_fn); | 898 | printf(" creating: %s\n", printable_string(dst_fn)); |
| 890 | } | 899 | } |
| 891 | unzip_create_leading_dirs(dst_fn); | 900 | unzip_create_leading_dirs(dst_fn); |
| 892 | if (bb_make_directory(dst_fn, dir_mode, FILEUTILS_IGNORE_CHMOD_ERR)) { | 901 | if (bb_make_directory(dst_fn, dir_mode, FILEUTILS_IGNORE_CHMOD_ERR)) { |
| @@ -895,7 +904,9 @@ int unzip_main(int argc, char **argv) | |||
| 895 | } else { | 904 | } else { |
| 896 | if (!S_ISDIR(mode)) { | 905 | if (!S_ISDIR(mode)) { |
| 897 | bb_error_msg_and_die("'%s' exists but is not a %s", | 906 | bb_error_msg_and_die("'%s' exists but is not a %s", |
| 898 | dst_fn, "directory"); | 907 | printable_string(dst_fn), |
| 908 | "directory" | ||
| 909 | ); | ||
| 899 | } | 910 | } |
| 900 | } | 911 | } |
| 901 | goto skip_cmpsize; | 912 | goto skip_cmpsize; |
| @@ -914,12 +925,16 @@ int unzip_main(int argc, char **argv) | |||
| 914 | if (!S_ISREG(mode)) { | 925 | if (!S_ISREG(mode)) { |
| 915 | fishy: | 926 | fishy: |
| 916 | bb_error_msg_and_die("'%s' exists but is not a %s", | 927 | bb_error_msg_and_die("'%s' exists but is not a %s", |
| 917 | dst_fn, "regular file"); | 928 | printable_string(dst_fn), |
| 929 | "regular file" | ||
| 930 | ); | ||
| 918 | } | 931 | } |
| 919 | if (overwrite == O_ALWAYS) { | 932 | if (overwrite == O_ALWAYS) { |
| 920 | goto do_open_and_extract; | 933 | goto do_open_and_extract; |
| 921 | } | 934 | } |
| 922 | printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", dst_fn); | 935 | printf("replace %s? [y]es, [n]o, [A]ll, [N]one, [r]ename: ", |
| 936 | printable_string(dst_fn) | ||
| 937 | ); | ||
| 923 | my_fgets80(key_buf); | 938 | my_fgets80(key_buf); |
| 924 | /* User input could take a long time. Is it still a regular file? */ | 939 | /* User input could take a long time. Is it still a regular file? */ |
| 925 | mode = get_lstat_mode(dst_fn); | 940 | mode = get_lstat_mode(dst_fn); |
| @@ -949,7 +964,9 @@ int unzip_main(int argc, char **argv) | |||
| 949 | if (!quiet) { | 964 | if (!quiet) { |
| 950 | printf(/* zip.fmt.method == 0 | 965 | printf(/* zip.fmt.method == 0 |
| 951 | ? " extracting: %s\n" | 966 | ? " extracting: %s\n" |
| 952 | : */ " inflating: %s\n", dst_fn); | 967 | : */ " inflating: %s\n", |
| 968 | printable_string(dst_fn) | ||
| 969 | ); | ||
| 953 | } | 970 | } |
| 954 | #if ENABLE_FEATURE_UNZIP_CDF | 971 | #if ENABLE_FEATURE_UNZIP_CDF |
| 955 | if (S_ISLNK(file_mode)) { | 972 | 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) | |||
| 421 | uni_stat_t uni_stat; | 421 | uni_stat_t uni_stat; |
| 422 | 422 | ||
| 423 | // TODO: quote tab as \t, etc, if -Q | 423 | // TODO: quote tab as \t, etc, if -Q |
| 424 | name = printable_string(&uni_stat, name); | 424 | name = printable_string2(&uni_stat, name); |
| 425 | 425 | ||
| 426 | if (!(option_mask32 & OPT_Q)) { | 426 | if (!(option_mask32 & OPT_Q)) { |
| 427 | return uni_stat.unicode_width; | 427 | return uni_stat.unicode_width; |
| @@ -450,7 +450,7 @@ static unsigned print_name(const char *name) | |||
| 450 | uni_stat_t uni_stat; | 450 | uni_stat_t uni_stat; |
| 451 | 451 | ||
| 452 | // TODO: quote tab as \t, etc, if -Q | 452 | // TODO: quote tab as \t, etc, if -Q |
| 453 | name = printable_string(&uni_stat, name); | 453 | name = printable_string2(&uni_stat, name); |
| 454 | 454 | ||
| 455 | if (!(option_mask32 & OPT_Q)) { | 455 | if (!(option_mask32 & OPT_Q)) { |
| 456 | fputs(name, stdout); | 456 | 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 { | |||
| 833 | } uni_stat_t; | 833 | } uni_stat_t; |
| 834 | /* Returns a string with unprintable chars replaced by '?' or | 834 | /* Returns a string with unprintable chars replaced by '?' or |
| 835 | * SUBST_WCHAR. This function is unicode-aware. */ | 835 | * SUBST_WCHAR. This function is unicode-aware. */ |
| 836 | const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str); | 836 | const char* FAST_FUNC printable_string(const char *str); |
| 837 | const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str); | ||
| 837 | /* Prints unprintable char ch as ^C or M-c to file | 838 | /* Prints unprintable char ch as ^C or M-c to file |
| 838 | * (M-c is used only if ch is ORed with PRINTABLE_META), | 839 | * (M-c is used only if ch is ORed with PRINTABLE_META), |
| 839 | * else it is printed as-is (except for ch = 0x9b) */ | 840 | * 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) | |||
| 1086 | ); | 1086 | ); |
| 1087 | } | 1087 | } |
| 1088 | if (ENABLE_UNICODE_SUPPORT) | 1088 | if (ENABLE_UNICODE_SUPPORT) |
| 1089 | puts(printable_string(NULL, matches[n])); | 1089 | puts(printable_string(matches[n])); |
| 1090 | else | 1090 | else |
| 1091 | puts(matches[n]); | 1091 | puts(matches[n]); |
| 1092 | } | 1092 | } |
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 @@ | |||
| 9 | #include "libbb.h" | 9 | #include "libbb.h" |
| 10 | #include "unicode.h" | 10 | #include "unicode.h" |
| 11 | 11 | ||
| 12 | const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str) | 12 | const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str) |
| 13 | { | 13 | { |
| 14 | char *dst; | 14 | char *dst; |
| 15 | const char *s; | 15 | const char *s; |
| @@ -55,3 +55,8 @@ const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str) | |||
| 55 | #endif | 55 | #endif |
| 56 | return auto_string(dst); | 56 | return auto_string(dst); |
| 57 | } | 57 | } |
| 58 | |||
| 59 | const char* FAST_FUNC printable_string(const char *str) | ||
| 60 | { | ||
| 61 | return printable_string2(NULL, str); | ||
| 62 | } | ||
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) | |||
| 996 | size_t FAST_FUNC unicode_strwidth(const char *string) | 996 | size_t FAST_FUNC unicode_strwidth(const char *string) |
| 997 | { | 997 | { |
| 998 | uni_stat_t uni_stat; | 998 | uni_stat_t uni_stat; |
| 999 | printable_string(&uni_stat, string); | 999 | printable_string2(&uni_stat, string); |
| 1000 | return uni_stat.unicode_width; | 1000 | return uni_stat.unicode_width; |
| 1001 | } | 1001 | } |
| 1002 | 1002 | ||
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) | |||
| 87 | } | 87 | } |
| 88 | wc[i] = 0; | 88 | wc[i] = 0; |
| 89 | if (wcstombs(buf, wc, sizeof(buf)) <= sizeof(buf)-1) | 89 | if (wcstombs(buf, wc, sizeof(buf)) <= sizeof(buf)-1) |
| 90 | fputs(printable_string(NULL, buf), stdout); | 90 | fputs(printable_string(buf), stdout); |
| 91 | #else | 91 | #else |
| 92 | char buf[37]; | 92 | char buf[37]; |
| 93 | int i = 0; | 93 | int i = 0; |
