aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-03-09 00:12:37 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-03-09 00:12:37 +0000
commit73c571a5fff95d0f50f4fc509c35fedca73122bc (patch)
tree8e3be82bbd3f7307b57f146fa2ef8ea422391137
parent5e4fda0affaa0a80a5ff33dd72c702b8f905be33 (diff)
downloadbusybox-w32-73c571a5fff95d0f50f4fc509c35fedca73122bc.tar.gz
busybox-w32-73c571a5fff95d0f50f4fc509c35fedca73122bc.tar.bz2
busybox-w32-73c571a5fff95d0f50f4fc509c35fedca73122bc.zip
*: move get_sock_lsa and xwrite_str to libbb, use where appropriate
function old new delta get_sock_lsa - 72 +72 buffer_fill_and_print 179 196 +17 parse_expr 824 832 +8 read_base64 343 348 +5 nameval 202 206 +4 fbset_main 1694 1698 +4 expand 1849 1853 +4 udhcp_send_kernel_packet 249 252 +3 udhcp_get_option 223 222 -1 chat_main 1246 1245 -1 pack_gzip 1661 1659 -2 doset 299 297 -2 bb__parsespent 119 117 -2 test_main 260 257 -3 qgravechar 109 106 -3 tcpudpsvd_main 1834 1830 -4 sysctl_display_all 589 580 -9 xopen_xwrite_close 44 33 -11 prs 30 18 -12 find_main 418 406 -12 full_write2_str 25 12 -13 adduser_main 667 654 -13 evaltreenr 817 802 -15 evaltree 817 802 -15 tftpd_main 526 493 -33 ftpd_main 2050 1990 -60 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 7/18 up/down: 117/-211) Total: -94 bytes
-rw-r--r--e2fsprogs/old_e2fsprogs/e2fsck.c2
-rw-r--r--include/libbb.h3
-rw-r--r--libbb/appletlib.c2
-rw-r--r--libbb/write.c5
-rw-r--r--libbb/xconnect.c18
-rw-r--r--libbb/xfuncs_printf.c4
-rw-r--r--loginutils/adduser.c2
-rw-r--r--loginutils/getty.c1
-rw-r--r--modutils/modutils-24.c2
-rw-r--r--networking/ftpd.c22
-rw-r--r--networking/tftp.c15
-rw-r--r--procps/sysctl.c7
-rw-r--r--shell/msh.c8
13 files changed, 35 insertions, 56 deletions
diff --git a/e2fsprogs/old_e2fsprogs/e2fsck.c b/e2fsprogs/old_e2fsprogs/e2fsck.c
index 6ade0db16..d1f8d1ecb 100644
--- a/e2fsprogs/old_e2fsprogs/e2fsck.c
+++ b/e2fsprogs/old_e2fsprogs/e2fsck.c
@@ -12892,7 +12892,7 @@ static int e2fsck_update_progress(e2fsck_t ctx, int pass,
12892 12892
12893 if (ctx->progress_fd) { 12893 if (ctx->progress_fd) {
12894 sprintf(buf, "%d %lu %lu\n", pass, cur, max); 12894 sprintf(buf, "%d %lu %lu\n", pass, cur, max);
12895 write(ctx->progress_fd, buf, strlen(buf)); 12895 xwrite_str(ctx->progress_fd, buf);
12896 } else { 12896 } else {
12897 percent = calc_percent(&e2fsck_tbl, pass, cur, max); 12897 percent = calc_percent(&e2fsck_tbl, pass, cur, max);
12898 e2fsck_simple_progress(ctx, ctx->device_name, 12898 e2fsck_simple_progress(ctx, ctx->device_name,
diff --git a/include/libbb.h b/include/libbb.h
index 3e21cbf90..7d6ea9029 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -489,6 +489,8 @@ int create_and_bind_dgram_or_die(const char *bindaddr, int port) FAST_FUNC;
489int create_and_connect_stream_or_die(const char *peer, int port) FAST_FUNC; 489int create_and_connect_stream_or_die(const char *peer, int port) FAST_FUNC;
490/* Connect to peer identified by lsa */ 490/* Connect to peer identified by lsa */
491int xconnect_stream(const len_and_sockaddr *lsa) FAST_FUNC; 491int xconnect_stream(const len_and_sockaddr *lsa) FAST_FUNC;
492/* Get local address of bound or accepted socket */
493len_and_sockaddr *get_sock_lsa(int fd) FAST_FUNC;
492/* Return malloc'ed len_and_sockaddr with socket address of host:port 494/* Return malloc'ed len_and_sockaddr with socket address of host:port
493 * Currently will return IPv4 or IPv6 sockaddrs only 495 * Currently will return IPv4 or IPv6 sockaddrs only
494 * (depending on host), but in theory nothing prevents e.g. 496 * (depending on host), but in theory nothing prevents e.g.
@@ -607,6 +609,7 @@ extern ssize_t safe_write(int fd, const void *buf, size_t count) FAST_FUNC;
607// if some data was written before error occurred 609// if some data was written before error occurred
608extern ssize_t full_write(int fd, const void *buf, size_t count) FAST_FUNC; 610extern ssize_t full_write(int fd, const void *buf, size_t count) FAST_FUNC;
609extern void xwrite(int fd, const void *buf, size_t count) FAST_FUNC; 611extern void xwrite(int fd, const void *buf, size_t count) FAST_FUNC;
612extern void xwrite_str(int fd, const char *str) FAST_FUNC;
610extern void xopen_xwrite_close(const char* file, const char *str) FAST_FUNC; 613extern void xopen_xwrite_close(const char* file, const char *str) FAST_FUNC;
611 614
612/* Reads and prints to stdout till eof, then closes FILE. Exits on error: */ 615/* Reads and prints to stdout till eof, then closes FILE. Exits on error: */
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index 13cdb819f..80380ae08 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -99,7 +99,7 @@ static const char *unpack_usage_messages(void)
99 99
100static void full_write2_str(const char *str) 100static void full_write2_str(const char *str)
101{ 101{
102 full_write(STDERR_FILENO, str, strlen(str)); 102 xwrite_str(STDERR_FILENO, str);
103} 103}
104 104
105void FAST_FUNC bb_show_usage(void) 105void FAST_FUNC bb_show_usage(void)
diff --git a/libbb/write.c b/libbb/write.c
index 37f461720..116e4d153 100644
--- a/libbb/write.c
+++ b/libbb/write.c
@@ -10,11 +10,10 @@
10#include "libbb.h" 10#include "libbb.h"
11 11
12/* Open file and write string str to it, close file. 12/* Open file and write string str to it, close file.
13 * Die on any open or write-error. */ 13 * Die on any open or write error. */
14void FAST_FUNC xopen_xwrite_close(const char* file, const char* str) 14void FAST_FUNC xopen_xwrite_close(const char* file, const char* str)
15{ 15{
16 int fd = xopen(file, O_WRONLY); 16 int fd = xopen(file, O_WRONLY);
17 17 xwrite_str(fd, str);
18 xwrite(fd, str, strlen(str));
19 close(fd); 18 close(fd);
20} 19}
diff --git a/libbb/xconnect.c b/libbb/xconnect.c
index 2eb4cb9be..975844500 100644
--- a/libbb/xconnect.c
+++ b/libbb/xconnect.c
@@ -35,6 +35,19 @@ int FAST_FUNC setsockopt_bindtodevice(int fd, const char *iface)
35 return r; 35 return r;
36} 36}
37 37
38len_and_sockaddr* FAST_FUNC get_sock_lsa(int fd)
39{
40 len_and_sockaddr *lsa;
41 socklen_t len = 0;
42
43 /* Can be optimized to do only one getsockname() */
44 if (getsockname(fd, NULL, &len) != 0)
45 return NULL;
46 lsa = xzalloc(LSA_LEN_SIZE + len);
47 lsa->len = len;
48 getsockname(fd, &lsa->u.sa, &lsa->len);
49 return lsa;
50}
38 51
39void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen) 52void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
40{ 53{
@@ -51,8 +64,9 @@ void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
51 64
52/* Return port number for a service. 65/* Return port number for a service.
53 * If "port" is a number use it as the port. 66 * If "port" is a number use it as the port.
54 * If "port" is a name it is looked up in /etc/services, if it isnt found return 67 * If "port" is a name it is looked up in /etc/services,
55 * default_port */ 68 * if it isnt found return default_port
69 */
56unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port) 70unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port)
57{ 71{
58 unsigned port_nr = default_port; 72 unsigned port_nr = default_port;
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c
index cd0f84dea..6d0fa6e8d 100644
--- a/libbb/xfuncs_printf.c
+++ b/libbb/xfuncs_printf.c
@@ -208,6 +208,10 @@ void FAST_FUNC xwrite(int fd, const void *buf, size_t count)
208 bb_error_msg_and_die("short write"); 208 bb_error_msg_and_die("short write");
209 } 209 }
210} 210}
211void FAST_FUNC xwrite_str(int fd, const char *str)
212{
213 xwrite(fd, str, strlen(str));
214}
211 215
212// Die with an error message if we can't lseek to the right spot. 216// Die with an error message if we can't lseek to the right spot.
213off_t FAST_FUNC xlseek(int fd, off_t offset, int whence) 217off_t FAST_FUNC xlseek(int fd, off_t offset, int whence)
diff --git a/loginutils/adduser.c b/loginutils/adduser.c
index d4b50130c..17b5088ec 100644
--- a/loginutils/adduser.c
+++ b/loginutils/adduser.c
@@ -145,7 +145,7 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)
145 /*99999,*/ /* sp->sp_max */ 145 /*99999,*/ /* sp->sp_max */
146 /*7*/ /* sp->sp_warn */ 146 /*7*/ /* sp->sp_warn */
147 ); 147 );
148 xwrite(fd, s, strlen(s)); 148 xwrite_str(fd, s);
149 close(fd); 149 close(fd);
150 } 150 }
151#endif 151#endif
diff --git a/loginutils/getty.c b/loginutils/getty.c
index ba5b0d6c8..467316fb8 100644
--- a/loginutils/getty.c
+++ b/loginutils/getty.c
@@ -713,6 +713,7 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
713 /* Write the modem init string and DON'T flush the buffers */ 713 /* Write the modem init string and DON'T flush the buffers */
714 if (options.flags & F_INITSTRING) { 714 if (options.flags & F_INITSTRING) {
715 debug("writing init string\n"); 715 debug("writing init string\n");
716 /* todo: use xwrite_str? */
716 full_write(STDOUT_FILENO, options.initstring, strlen(options.initstring)); 717 full_write(STDOUT_FILENO, options.initstring, strlen(options.initstring));
717 } 718 }
718 719
diff --git a/modutils/modutils-24.c b/modutils/modutils-24.c
index 451975ab9..169fe54ae 100644
--- a/modutils/modutils-24.c
+++ b/modutils/modutils-24.c
@@ -3513,7 +3513,7 @@ static void set_tainted(int fd, const char *m_name,
3513 buf[sizeof(buf)-1] = '\0'; 3513 buf[sizeof(buf)-1] = '\0';
3514 oldval = strtoul(buf, NULL, 10); 3514 oldval = strtoul(buf, NULL, 10);
3515 sprintf(buf, "%d\n", oldval | taint); 3515 sprintf(buf, "%d\n", oldval | taint);
3516 write(fd, buf, strlen(buf)); 3516 xwrite_str(fd, buf);
3517 } 3517 }
3518} 3518}
3519 3519
diff --git a/networking/ftpd.c b/networking/ftpd.c
index 91cbc17f4..6289edf0c 100644
--- a/networking/ftpd.c
+++ b/networking/ftpd.c
@@ -107,14 +107,6 @@ struct globals {
107#define G (*(struct globals*)&bb_common_bufsiz1) 107#define G (*(struct globals*)&bb_common_bufsiz1)
108#define INIT_G() do { } while (0) 108#define INIT_G() do { } while (0)
109 109
110
111// libbb candidate?
112static void
113xwrite_str(int fd, const char *str)
114{
115 xwrite(fd, str, strlen(str));
116}
117
118static char * 110static char *
119replace_text(const char *str, const char from, const char *to) 111replace_text(const char *str, const char from, const char *to)
120{ 112{
@@ -918,20 +910,6 @@ handle_stou(void)
918} 910}
919#endif /* ENABLE_FEATURE_FTP_WRITE */ 911#endif /* ENABLE_FEATURE_FTP_WRITE */
920 912
921/* TODO: libbb candidate (tftp has another copy) */
922static len_and_sockaddr *get_sock_lsa(int s)
923{
924 len_and_sockaddr *lsa;
925 socklen_t len = 0;
926
927 if (getsockname(s, NULL, &len) != 0)
928 return NULL;
929 lsa = xzalloc(LSA_LEN_SIZE + len);
930 lsa->len = len;
931 getsockname(s, &lsa->u.sa, &lsa->len);
932 return lsa;
933}
934
935int ftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 913int ftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
936int ftpd_main(int argc UNUSED_PARAM, char **argv) 914int ftpd_main(int argc UNUSED_PARAM, char **argv)
937{ 915{
diff --git a/networking/tftp.c b/networking/tftp.c
index 799dd9903..fa0851615 100644
--- a/networking/tftp.c
+++ b/networking/tftp.c
@@ -622,21 +622,6 @@ int tftp_main(int argc UNUSED_PARAM, char **argv)
622#endif /* ENABLE_TFTP */ 622#endif /* ENABLE_TFTP */
623 623
624#if ENABLE_TFTPD 624#if ENABLE_TFTPD
625
626/* TODO: libbb candidate? */
627static len_and_sockaddr *get_sock_lsa(int s)
628{
629 len_and_sockaddr *lsa;
630 socklen_t len = 0;
631
632 if (getsockname(s, NULL, &len) != 0)
633 return NULL;
634 lsa = xzalloc(LSA_LEN_SIZE + len);
635 lsa->len = len;
636 getsockname(s, &lsa->u.sa, &lsa->len);
637 return lsa;
638}
639
640int tftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 625int tftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
641int tftpd_main(int argc UNUSED_PARAM, char **argv) 626int tftpd_main(int argc UNUSED_PARAM, char **argv)
642{ 627{
diff --git a/procps/sysctl.c b/procps/sysctl.c
index d59e2690a..862cd1756 100644
--- a/procps/sysctl.c
+++ b/procps/sysctl.c
@@ -21,11 +21,6 @@ static int sysctl_display_all(const char *path);
21static int sysctl_handle_preload_file(const char *filename); 21static int sysctl_handle_preload_file(const char *filename);
22static void sysctl_dots_to_slashes(char *name); 22static void sysctl_dots_to_slashes(char *name);
23 23
24static void dwrite_str(int fd, const char *buf)
25{
26 write(fd, buf, strlen(buf));
27}
28
29enum { 24enum {
30 FLAG_SHOW_KEYS = 1 << 0, 25 FLAG_SHOW_KEYS = 1 << 0,
31 FLAG_SHOW_KEY_ERRORS = 1 << 1, 26 FLAG_SHOW_KEY_ERRORS = 1 << 1,
@@ -147,7 +142,7 @@ static int sysctl_act_on_setting(char *setting)
147 } 142 }
148 143
149 if (option_mask32 & FLAG_WRITE) { 144 if (option_mask32 & FLAG_WRITE) {
150 dwrite_str(fd, value); 145 xwrite_str(fd, value);
151 close(fd); 146 close(fd);
152 if (option_mask32 & FLAG_SHOW_KEYS) 147 if (option_mask32 & FLAG_SHOW_KEYS)
153 printf("%s = ", outname); 148 printf("%s = ", outname);
diff --git a/shell/msh.c b/shell/msh.c
index 0cb81fee7..5f8c90ef6 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -743,7 +743,7 @@ static void print_tree(struct op *head)
743static void prs(const char *s) 743static void prs(const char *s)
744{ 744{
745 if (*s) 745 if (*s)
746 write(STDERR_FILENO, s, strlen(s)); 746 xwrite_str(STDERR_FILENO, s);
747} 747}
748 748
749static void prn(unsigned u) 749static void prn(unsigned u)
@@ -3600,7 +3600,7 @@ static int doset(struct op *t UNUSED_PARAM, char **args)
3600 cp = args[1]; 3600 cp = args[1];
3601 if (cp == NULL) { 3601 if (cp == NULL) {
3602 for (vp = vlist; vp; vp = vp->next) 3602 for (vp = vlist; vp; vp = vp->next)
3603 varput(vp->name, 1); 3603 varput(vp->name, STDOUT_FILENO);
3604 return 0; 3604 return 0;
3605 } 3605 }
3606 if (*cp == '-') { 3606 if (*cp == '-') {
@@ -3639,8 +3639,8 @@ static int doset(struct op *t UNUSED_PARAM, char **args)
3639static void varput(char *s, int out) 3639static void varput(char *s, int out)
3640{ 3640{
3641 if (isalnum(*s) || *s == '_') { 3641 if (isalnum(*s) || *s == '_') {
3642 write(out, s, strlen(s)); 3642 xwrite_str(out, s);
3643 write(out, "\n", 1); 3643 xwrite(out, "\n", 1);
3644 } 3644 }
3645} 3645}
3646 3646