diff options
| author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-09-14 13:19:57 +1000 |
|---|---|---|
| committer | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2010-09-14 13:19:57 +1000 |
| commit | ec71cb6575290eb6ad716e4f620db445d8e1bcd3 (patch) | |
| tree | 219a5dba000e0ad98ff563bc6f7d45d274d3a178 /libbb | |
| parent | b5139d7cd8982d9b683cb1babf0bd759076aaab0 (diff) | |
| parent | 6814cbc9288601840aedb372e2bd84dab76ffa43 (diff) | |
| download | busybox-w32-ec71cb6575290eb6ad716e4f620db445d8e1bcd3.tar.gz busybox-w32-ec71cb6575290eb6ad716e4f620db445d8e1bcd3.tar.bz2 busybox-w32-ec71cb6575290eb6ad716e4f620db445d8e1bcd3.zip | |
Merge branch 'origin/master' (early part)
Diffstat (limited to 'libbb')
| -rw-r--r-- | libbb/Config.src | 3 | ||||
| -rw-r--r-- | libbb/README | 1 | ||||
| -rw-r--r-- | libbb/lineedit.c | 52 | ||||
| -rw-r--r-- | libbb/make_directory.c | 2 | ||||
| -rw-r--r-- | libbb/selinux_common.c | 1 | ||||
| -rw-r--r-- | libbb/xfuncs_printf.c | 4 |
6 files changed, 33 insertions, 30 deletions
diff --git a/libbb/Config.src b/libbb/Config.src index 80b1e0d21..9b01757c6 100644 --- a/libbb/Config.src +++ b/libbb/Config.src | |||
| @@ -98,7 +98,7 @@ config FEATURE_USERNAME_COMPLETION | |||
| 98 | 98 | ||
| 99 | config FEATURE_EDITING_FANCY_PROMPT | 99 | config FEATURE_EDITING_FANCY_PROMPT |
| 100 | bool "Fancy shell prompts" | 100 | bool "Fancy shell prompts" |
| 101 | default n | 101 | default y |
| 102 | depends on FEATURE_EDITING | 102 | depends on FEATURE_EDITING |
| 103 | help | 103 | help |
| 104 | Setting this option allows for prompts to use things like \w and | 104 | Setting this option allows for prompts to use things like \w and |
| @@ -153,6 +153,7 @@ config FEATURE_COPYBUF_KB | |||
| 153 | config MONOTONIC_SYSCALL | 153 | config MONOTONIC_SYSCALL |
| 154 | bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" | 154 | bool "Use clock_gettime(CLOCK_MONOTONIC) syscall" |
| 155 | default n | 155 | default n |
| 156 | depends on PLATFORM_LINUX | ||
| 156 | help | 157 | help |
| 157 | Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring | 158 | Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring |
| 158 | time intervals (time, ping, traceroute etc need this). | 159 | time intervals (time, ping, traceroute etc need this). |
diff --git a/libbb/README b/libbb/README index 4f28f7e34..6e63dc5f2 100644 --- a/libbb/README +++ b/libbb/README | |||
| @@ -8,4 +8,3 @@ that you wrote that is mis-attributed, do let me know so we can fix that up. | |||
| 8 | 8 | ||
| 9 | Erik Andersen | 9 | Erik Andersen |
| 10 | <andersen@codepoet.org> | 10 | <andersen@codepoet.org> |
| 11 | |||
diff --git a/libbb/lineedit.c b/libbb/lineedit.c index ab418c0ab..866f9230d 100644 --- a/libbb/lineedit.c +++ b/libbb/lineedit.c | |||
| @@ -53,19 +53,15 @@ | |||
| 53 | #if ENABLE_FEATURE_EDITING | 53 | #if ENABLE_FEATURE_EDITING |
| 54 | 54 | ||
| 55 | 55 | ||
| 56 | #define ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR \ | 56 | #define ENABLE_USERNAME_OR_HOMEDIR \ |
| 57 | (ENABLE_FEATURE_USERNAME_COMPLETION || ENABLE_FEATURE_EDITING_FANCY_PROMPT) | 57 | (ENABLE_FEATURE_USERNAME_COMPLETION || ENABLE_FEATURE_EDITING_FANCY_PROMPT) |
| 58 | #define IF_FEATURE_GETUSERNAME_AND_HOMEDIR(...) | 58 | #define IF_USERNAME_OR_HOMEDIR(...) |
| 59 | #if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 59 | #if ENABLE_USERNAME_OR_HOMEDIR |
| 60 | #undef IF_FEATURE_GETUSERNAME_AND_HOMEDIR | 60 | # undef IF_USERNAME_OR_HOMEDIR |
| 61 | #define IF_FEATURE_GETUSERNAME_AND_HOMEDIR(...) __VA_ARGS__ | 61 | # define IF_USERNAME_OR_HOMEDIR(...) __VA_ARGS__ |
| 62 | #endif | 62 | #endif |
| 63 | 63 | ||
| 64 | 64 | ||
| 65 | #define SEQ_CLEAR_TILL_END_OF_SCREEN "\033[J" | ||
| 66 | //#define SEQ_CLEAR_TILL_END_OF_LINE "\033[K" | ||
| 67 | |||
| 68 | |||
| 69 | #undef CHAR_T | 65 | #undef CHAR_T |
| 70 | #if ENABLE_UNICODE_SUPPORT | 66 | #if ENABLE_UNICODE_SUPPORT |
| 71 | # define BB_NUL ((wchar_t)0) | 67 | # define BB_NUL ((wchar_t)0) |
| @@ -90,14 +86,16 @@ static bool BB_ispunct(CHAR_T c) { return ((unsigned)c < 256 && ispunct(c)); } | |||
| 90 | # define BB_isalnum(c) isalnum(c) | 86 | # define BB_isalnum(c) isalnum(c) |
| 91 | # define BB_ispunct(c) ispunct(c) | 87 | # define BB_ispunct(c) ispunct(c) |
| 92 | #endif | 88 | #endif |
| 89 | #if ENABLE_UNICODE_PRESERVE_BROKEN | ||
| 90 | # define unicode_mark_raw_byte(wc) ((wc) | 0x20000000) | ||
| 91 | # define unicode_is_raw_byte(wc) ((wc) & 0x20000000) | ||
| 92 | #else | ||
| 93 | # define unicode_is_raw_byte(wc) 0 | ||
| 94 | #endif | ||
| 93 | 95 | ||
| 94 | 96 | ||
| 95 | # if ENABLE_UNICODE_PRESERVE_BROKEN | 97 | #define SEQ_CLEAR_TILL_END_OF_SCREEN "\033[J" |
| 96 | # define unicode_mark_raw_byte(wc) ((wc) | 0x20000000) | 98 | //#define SEQ_CLEAR_TILL_END_OF_LINE "\033[K" |
| 97 | # define unicode_is_raw_byte(wc) ((wc) & 0x20000000) | ||
| 98 | # else | ||
| 99 | # define unicode_is_raw_byte(wc) 0 | ||
| 100 | # endif | ||
| 101 | 99 | ||
| 102 | 100 | ||
| 103 | enum { | 101 | enum { |
| @@ -107,7 +105,7 @@ enum { | |||
| 107 | : 0x7ff0 | 105 | : 0x7ff0 |
| 108 | }; | 106 | }; |
| 109 | 107 | ||
| 110 | #if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 108 | #if ENABLE_USERNAME_OR_HOMEDIR |
| 111 | static const char null_str[] ALIGN1 = ""; | 109 | static const char null_str[] ALIGN1 = ""; |
| 112 | #endif | 110 | #endif |
| 113 | 111 | ||
| @@ -134,7 +132,7 @@ struct lineedit_statics { | |||
| 134 | int num_ok_lines; /* = 1; */ | 132 | int num_ok_lines; /* = 1; */ |
| 135 | #endif | 133 | #endif |
| 136 | 134 | ||
| 137 | #if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 135 | #if ENABLE_USERNAME_OR_HOMEDIR |
| 138 | char *user_buf; | 136 | char *user_buf; |
| 139 | char *home_pwd_buf; /* = (char*)null_str; */ | 137 | char *home_pwd_buf; /* = (char*)null_str; */ |
| 140 | #endif | 138 | #endif |
| @@ -145,7 +143,7 @@ struct lineedit_statics { | |||
| 145 | #endif | 143 | #endif |
| 146 | 144 | ||
| 147 | #if ENABLE_FEATURE_EDITING_VI | 145 | #if ENABLE_FEATURE_EDITING_VI |
| 148 | #define DELBUFSIZ 128 | 146 | # define DELBUFSIZ 128 |
| 149 | CHAR_T *delptr; | 147 | CHAR_T *delptr; |
| 150 | smallint newdelflag; /* whether delbuf should be reused yet */ | 148 | smallint newdelflag; /* whether delbuf should be reused yet */ |
| 151 | CHAR_T delbuf[DELBUFSIZ]; /* a place to store deleted characters */ | 149 | CHAR_T delbuf[DELBUFSIZ]; /* a place to store deleted characters */ |
| @@ -191,7 +189,7 @@ extern struct lineedit_statics *const lineedit_ptr_to_statics; | |||
| 191 | barrier(); \ | 189 | barrier(); \ |
| 192 | cmdedit_termw = 80; \ | 190 | cmdedit_termw = 80; \ |
| 193 | IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines = 1;) \ | 191 | IF_FEATURE_EDITING_FANCY_PROMPT(num_ok_lines = 1;) \ |
| 194 | IF_FEATURE_GETUSERNAME_AND_HOMEDIR(home_pwd_buf = (char*)null_str;) \ | 192 | IF_USERNAME_OR_HOMEDIR(home_pwd_buf = (char*)null_str;) \ |
| 195 | } while (0) | 193 | } while (0) |
| 196 | static void deinit_S(void) | 194 | static void deinit_S(void) |
| 197 | { | 195 | { |
| @@ -200,7 +198,7 @@ static void deinit_S(void) | |||
| 200 | * (otherwise it points to verbatim prompt (NOT malloced) */ | 198 | * (otherwise it points to verbatim prompt (NOT malloced) */ |
| 201 | free((char*)cmdedit_prompt); | 199 | free((char*)cmdedit_prompt); |
| 202 | #endif | 200 | #endif |
| 203 | #if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 201 | #if ENABLE_USERNAME_OR_HOMEDIR |
| 204 | free(user_buf); | 202 | free(user_buf); |
| 205 | if (home_pwd_buf != null_str) | 203 | if (home_pwd_buf != null_str) |
| 206 | free(home_pwd_buf); | 204 | free(home_pwd_buf); |
| @@ -1677,7 +1675,7 @@ static void parse_and_put_prompt(const char *prmt_ptr) | |||
| 1677 | c = *prmt_ptr++; | 1675 | c = *prmt_ptr++; |
| 1678 | 1676 | ||
| 1679 | switch (c) { | 1677 | switch (c) { |
| 1680 | # if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 1678 | # if ENABLE_USERNAME_OR_HOMEDIR |
| 1681 | case 'u': | 1679 | case 'u': |
| 1682 | pbuf = user_buf ? user_buf : (char*)""; | 1680 | pbuf = user_buf ? user_buf : (char*)""; |
| 1683 | break; | 1681 | break; |
| @@ -1689,7 +1687,7 @@ static void parse_and_put_prompt(const char *prmt_ptr) | |||
| 1689 | case '$': | 1687 | case '$': |
| 1690 | c = (geteuid() == 0 ? '#' : '$'); | 1688 | c = (geteuid() == 0 ? '#' : '$'); |
| 1691 | break; | 1689 | break; |
| 1692 | # if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 1690 | # if ENABLE_USERNAME_OR_HOMEDIR |
| 1693 | case 'w': | 1691 | case 'w': |
| 1694 | /* /home/user[/something] -> ~[/something] */ | 1692 | /* /home/user[/something] -> ~[/something] */ |
| 1695 | pbuf = cwd_buf; | 1693 | pbuf = cwd_buf; |
| @@ -1773,11 +1771,13 @@ static void cmdedit_setwidth(unsigned w, int redraw_flg) | |||
| 1773 | 1771 | ||
| 1774 | static void win_changed(int nsig) | 1772 | static void win_changed(int nsig) |
| 1775 | { | 1773 | { |
| 1774 | int sv_errno = errno; | ||
| 1776 | unsigned width; | 1775 | unsigned width; |
| 1777 | get_terminal_width_height(0, &width, NULL); | 1776 | get_terminal_width_height(0, &width, NULL); |
| 1778 | cmdedit_setwidth(width, nsig /* - just a yes/no flag */); | 1777 | cmdedit_setwidth(width, nsig /* - just a yes/no flag */); |
| 1779 | if (nsig == SIGWINCH) | 1778 | if (nsig == SIGWINCH) |
| 1780 | signal(SIGWINCH, win_changed); /* rearm ourself */ | 1779 | signal(SIGWINCH, win_changed); /* rearm ourself */ |
| 1780 | errno = sv_errno; | ||
| 1781 | } | 1781 | } |
| 1782 | 1782 | ||
| 1783 | static int lineedit_read_key(char *read_key_buffer) | 1783 | static int lineedit_read_key(char *read_key_buffer) |
| @@ -1967,7 +1967,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li | |||
| 1967 | /* Now initialize things */ | 1967 | /* Now initialize things */ |
| 1968 | previous_SIGWINCH_handler = signal(SIGWINCH, win_changed); | 1968 | previous_SIGWINCH_handler = signal(SIGWINCH, win_changed); |
| 1969 | win_changed(0); /* do initial resizing */ | 1969 | win_changed(0); /* do initial resizing */ |
| 1970 | #if ENABLE_FEATURE_GETUSERNAME_AND_HOMEDIR | 1970 | #if ENABLE_USERNAME_OR_HOMEDIR |
| 1971 | { | 1971 | { |
| 1972 | struct passwd *entry; | 1972 | struct passwd *entry; |
| 1973 | 1973 | ||
| @@ -2389,7 +2389,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li | |||
| 2389 | } | 2389 | } |
| 2390 | #endif | 2390 | #endif |
| 2391 | 2391 | ||
| 2392 | /* Stop bug catching using "command_must_not_be_used" trick */ | 2392 | /* End of bug-catching "command_must_not_be_used" trick */ |
| 2393 | #undef command | 2393 | #undef command |
| 2394 | 2394 | ||
| 2395 | #if ENABLE_UNICODE_SUPPORT | 2395 | #if ENABLE_UNICODE_SUPPORT |
| @@ -2423,7 +2423,7 @@ int FAST_FUNC read_line_input(const char *prompt, char *command, int maxsize, li | |||
| 2423 | return len; /* can't return command_len, DEINIT_S() destroys it */ | 2423 | return len; /* can't return command_len, DEINIT_S() destroys it */ |
| 2424 | } | 2424 | } |
| 2425 | 2425 | ||
| 2426 | #else | 2426 | #else /* !FEATURE_EDITING */ |
| 2427 | 2427 | ||
| 2428 | #undef read_line_input | 2428 | #undef read_line_input |
| 2429 | int FAST_FUNC read_line_input(const char* prompt, char* command, int maxsize) | 2429 | int FAST_FUNC read_line_input(const char* prompt, char* command, int maxsize) |
| @@ -2434,7 +2434,7 @@ int FAST_FUNC read_line_input(const char* prompt, char* command, int maxsize) | |||
| 2434 | return strlen(command); | 2434 | return strlen(command); |
| 2435 | } | 2435 | } |
| 2436 | 2436 | ||
| 2437 | #endif /* FEATURE_EDITING */ | 2437 | #endif /* !FEATURE_EDITING */ |
| 2438 | 2438 | ||
| 2439 | 2439 | ||
| 2440 | /* | 2440 | /* |
diff --git a/libbb/make_directory.c b/libbb/make_directory.c index 1eb8a8a49..4bb79bdf6 100644 --- a/libbb/make_directory.c +++ b/libbb/make_directory.c | |||
| @@ -93,7 +93,7 @@ int FAST_FUNC bb_make_directory(char *path, long mode, int flags) | |||
| 93 | if (mkdir(path, 0777) < 0) { | 93 | if (mkdir(path, 0777) < 0) { |
| 94 | /* If we failed for any other reason than the directory | 94 | /* If we failed for any other reason than the directory |
| 95 | * already exists, output a diagnostic and return -1 */ | 95 | * already exists, output a diagnostic and return -1 */ |
| 96 | if (errno != EEXIST | 96 | if ((errno != EEXIST && errno != EISDIR) |
| 97 | || !(flags & FILEUTILS_RECUR) | 97 | || !(flags & FILEUTILS_RECUR) |
| 98 | || ((stat(path, &st) < 0) || !S_ISDIR(st.st_mode)) | 98 | || ((stat(path, &st) < 0) || !S_ISDIR(st.st_mode)) |
| 99 | ) { | 99 | ) { |
diff --git a/libbb/selinux_common.c b/libbb/selinux_common.c index 7b5696754..2acb50e96 100644 --- a/libbb/selinux_common.c +++ b/libbb/selinux_common.c | |||
| @@ -53,4 +53,3 @@ void FAST_FUNC selinux_preserve_fcontext(int fdesc) | |||
| 53 | setfscreatecon_or_die(context); | 53 | setfscreatecon_or_die(context); |
| 54 | freecon(context); | 54 | freecon(context); |
| 55 | } | 55 | } |
| 56 | |||
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 3e189c2d1..31a6d8e3c 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c | |||
| @@ -401,8 +401,12 @@ int FAST_FUNC xsocket(int domain, int type, int protocol) | |||
| 401 | /* Hijack vaguely related config option */ | 401 | /* Hijack vaguely related config option */ |
| 402 | #if ENABLE_VERBOSE_RESOLUTION_ERRORS | 402 | #if ENABLE_VERBOSE_RESOLUTION_ERRORS |
| 403 | const char *s = "INET"; | 403 | const char *s = "INET"; |
| 404 | # ifdef AF_PACKET | ||
| 404 | if (domain == AF_PACKET) s = "PACKET"; | 405 | if (domain == AF_PACKET) s = "PACKET"; |
| 406 | # endif | ||
| 407 | # ifdef AF_NETLINK | ||
| 405 | if (domain == AF_NETLINK) s = "NETLINK"; | 408 | if (domain == AF_NETLINK) s = "NETLINK"; |
| 409 | # endif | ||
| 406 | IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";) | 410 | IF_FEATURE_IPV6(if (domain == AF_INET6) s = "INET6";) |
| 407 | bb_perror_msg_and_die("socket(AF_%s,%d,%d)", s, type, protocol); | 411 | bb_perror_msg_and_die("socket(AF_%s,%d,%d)", s, type, protocol); |
| 408 | #else | 412 | #else |
