mirror of
https://github.com/sheumann/hush.git
synced 2024-08-21 11:28:57 +00:00
*: 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
This commit is contained in:
parent
5e4fda0aff
commit
73c571a5ff
@ -12892,7 +12892,7 @@ static int e2fsck_update_progress(e2fsck_t ctx, int pass,
|
|||||||
|
|
||||||
if (ctx->progress_fd) {
|
if (ctx->progress_fd) {
|
||||||
sprintf(buf, "%d %lu %lu\n", pass, cur, max);
|
sprintf(buf, "%d %lu %lu\n", pass, cur, max);
|
||||||
write(ctx->progress_fd, buf, strlen(buf));
|
xwrite_str(ctx->progress_fd, buf);
|
||||||
} else {
|
} else {
|
||||||
percent = calc_percent(&e2fsck_tbl, pass, cur, max);
|
percent = calc_percent(&e2fsck_tbl, pass, cur, max);
|
||||||
e2fsck_simple_progress(ctx, ctx->device_name,
|
e2fsck_simple_progress(ctx, ctx->device_name,
|
||||||
|
@ -489,6 +489,8 @@ int create_and_bind_dgram_or_die(const char *bindaddr, int port) FAST_FUNC;
|
|||||||
int create_and_connect_stream_or_die(const char *peer, int port) FAST_FUNC;
|
int create_and_connect_stream_or_die(const char *peer, int port) FAST_FUNC;
|
||||||
/* Connect to peer identified by lsa */
|
/* Connect to peer identified by lsa */
|
||||||
int xconnect_stream(const len_and_sockaddr *lsa) FAST_FUNC;
|
int xconnect_stream(const len_and_sockaddr *lsa) FAST_FUNC;
|
||||||
|
/* Get local address of bound or accepted socket */
|
||||||
|
len_and_sockaddr *get_sock_lsa(int fd) FAST_FUNC;
|
||||||
/* Return malloc'ed len_and_sockaddr with socket address of host:port
|
/* Return malloc'ed len_and_sockaddr with socket address of host:port
|
||||||
* Currently will return IPv4 or IPv6 sockaddrs only
|
* Currently will return IPv4 or IPv6 sockaddrs only
|
||||||
* (depending on host), but in theory nothing prevents e.g.
|
* (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;
|
|||||||
// if some data was written before error occurred
|
// if some data was written before error occurred
|
||||||
extern ssize_t full_write(int fd, const void *buf, size_t count) FAST_FUNC;
|
extern ssize_t full_write(int fd, const void *buf, size_t count) FAST_FUNC;
|
||||||
extern void xwrite(int fd, const void *buf, size_t count) FAST_FUNC;
|
extern void xwrite(int fd, const void *buf, size_t count) FAST_FUNC;
|
||||||
|
extern void xwrite_str(int fd, const char *str) FAST_FUNC;
|
||||||
extern void xopen_xwrite_close(const char* file, const char *str) FAST_FUNC;
|
extern void xopen_xwrite_close(const char* file, const char *str) FAST_FUNC;
|
||||||
|
|
||||||
/* Reads and prints to stdout till eof, then closes FILE. Exits on error: */
|
/* Reads and prints to stdout till eof, then closes FILE. Exits on error: */
|
||||||
|
@ -99,7 +99,7 @@ static const char *unpack_usage_messages(void)
|
|||||||
|
|
||||||
static void full_write2_str(const char *str)
|
static void full_write2_str(const char *str)
|
||||||
{
|
{
|
||||||
full_write(STDERR_FILENO, str, strlen(str));
|
xwrite_str(STDERR_FILENO, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FAST_FUNC bb_show_usage(void)
|
void FAST_FUNC bb_show_usage(void)
|
||||||
|
@ -10,11 +10,10 @@
|
|||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
|
|
||||||
/* Open file and write string str to it, close file.
|
/* Open file and write string str to it, close file.
|
||||||
* Die on any open or write-error. */
|
* Die on any open or write error. */
|
||||||
void FAST_FUNC xopen_xwrite_close(const char* file, const char* str)
|
void FAST_FUNC xopen_xwrite_close(const char* file, const char* str)
|
||||||
{
|
{
|
||||||
int fd = xopen(file, O_WRONLY);
|
int fd = xopen(file, O_WRONLY);
|
||||||
|
xwrite_str(fd, str);
|
||||||
xwrite(fd, str, strlen(str));
|
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,19 @@ int FAST_FUNC setsockopt_bindtodevice(int fd, const char *iface)
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
len_and_sockaddr* FAST_FUNC get_sock_lsa(int fd)
|
||||||
|
{
|
||||||
|
len_and_sockaddr *lsa;
|
||||||
|
socklen_t len = 0;
|
||||||
|
|
||||||
|
/* Can be optimized to do only one getsockname() */
|
||||||
|
if (getsockname(fd, NULL, &len) != 0)
|
||||||
|
return NULL;
|
||||||
|
lsa = xzalloc(LSA_LEN_SIZE + len);
|
||||||
|
lsa->len = len;
|
||||||
|
getsockname(fd, &lsa->u.sa, &lsa->len);
|
||||||
|
return lsa;
|
||||||
|
}
|
||||||
|
|
||||||
void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
|
void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
|
||||||
{
|
{
|
||||||
@ -51,8 +64,9 @@ void FAST_FUNC xconnect(int s, const struct sockaddr *s_addr, socklen_t addrlen)
|
|||||||
|
|
||||||
/* Return port number for a service.
|
/* Return port number for a service.
|
||||||
* If "port" is a number use it as the port.
|
* If "port" is a number use it as the port.
|
||||||
* If "port" is a name it is looked up in /etc/services, if it isnt found return
|
* If "port" is a name it is looked up in /etc/services,
|
||||||
* default_port */
|
* if it isnt found return default_port
|
||||||
|
*/
|
||||||
unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port)
|
unsigned FAST_FUNC bb_lookup_port(const char *port, const char *protocol, unsigned default_port)
|
||||||
{
|
{
|
||||||
unsigned port_nr = default_port;
|
unsigned port_nr = default_port;
|
||||||
|
@ -208,6 +208,10 @@ void FAST_FUNC xwrite(int fd, const void *buf, size_t count)
|
|||||||
bb_error_msg_and_die("short write");
|
bb_error_msg_and_die("short write");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void FAST_FUNC xwrite_str(int fd, const char *str)
|
||||||
|
{
|
||||||
|
xwrite(fd, str, strlen(str));
|
||||||
|
}
|
||||||
|
|
||||||
// Die with an error message if we can't lseek to the right spot.
|
// Die with an error message if we can't lseek to the right spot.
|
||||||
off_t FAST_FUNC xlseek(int fd, off_t offset, int whence)
|
off_t FAST_FUNC xlseek(int fd, off_t offset, int whence)
|
||||||
|
@ -145,7 +145,7 @@ int adduser_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
/*99999,*/ /* sp->sp_max */
|
/*99999,*/ /* sp->sp_max */
|
||||||
/*7*/ /* sp->sp_warn */
|
/*7*/ /* sp->sp_warn */
|
||||||
);
|
);
|
||||||
xwrite(fd, s, strlen(s));
|
xwrite_str(fd, s);
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -713,6 +713,7 @@ int getty_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
/* Write the modem init string and DON'T flush the buffers */
|
/* Write the modem init string and DON'T flush the buffers */
|
||||||
if (options.flags & F_INITSTRING) {
|
if (options.flags & F_INITSTRING) {
|
||||||
debug("writing init string\n");
|
debug("writing init string\n");
|
||||||
|
/* todo: use xwrite_str? */
|
||||||
full_write(STDOUT_FILENO, options.initstring, strlen(options.initstring));
|
full_write(STDOUT_FILENO, options.initstring, strlen(options.initstring));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3513,7 +3513,7 @@ static void set_tainted(int fd, const char *m_name,
|
|||||||
buf[sizeof(buf)-1] = '\0';
|
buf[sizeof(buf)-1] = '\0';
|
||||||
oldval = strtoul(buf, NULL, 10);
|
oldval = strtoul(buf, NULL, 10);
|
||||||
sprintf(buf, "%d\n", oldval | taint);
|
sprintf(buf, "%d\n", oldval | taint);
|
||||||
write(fd, buf, strlen(buf));
|
xwrite_str(fd, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,14 +107,6 @@ struct globals {
|
|||||||
#define G (*(struct globals*)&bb_common_bufsiz1)
|
#define G (*(struct globals*)&bb_common_bufsiz1)
|
||||||
#define INIT_G() do { } while (0)
|
#define INIT_G() do { } while (0)
|
||||||
|
|
||||||
|
|
||||||
// libbb candidate?
|
|
||||||
static void
|
|
||||||
xwrite_str(int fd, const char *str)
|
|
||||||
{
|
|
||||||
xwrite(fd, str, strlen(str));
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
replace_text(const char *str, const char from, const char *to)
|
replace_text(const char *str, const char from, const char *to)
|
||||||
{
|
{
|
||||||
@ -918,20 +910,6 @@ handle_stou(void)
|
|||||||
}
|
}
|
||||||
#endif /* ENABLE_FEATURE_FTP_WRITE */
|
#endif /* ENABLE_FEATURE_FTP_WRITE */
|
||||||
|
|
||||||
/* TODO: libbb candidate (tftp has another copy) */
|
|
||||||
static len_and_sockaddr *get_sock_lsa(int s)
|
|
||||||
{
|
|
||||||
len_and_sockaddr *lsa;
|
|
||||||
socklen_t len = 0;
|
|
||||||
|
|
||||||
if (getsockname(s, NULL, &len) != 0)
|
|
||||||
return NULL;
|
|
||||||
lsa = xzalloc(LSA_LEN_SIZE + len);
|
|
||||||
lsa->len = len;
|
|
||||||
getsockname(s, &lsa->u.sa, &lsa->len);
|
|
||||||
return lsa;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int ftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int ftpd_main(int argc UNUSED_PARAM, char **argv)
|
int ftpd_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -622,21 +622,6 @@ int tftp_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
#endif /* ENABLE_TFTP */
|
#endif /* ENABLE_TFTP */
|
||||||
|
|
||||||
#if ENABLE_TFTPD
|
#if ENABLE_TFTPD
|
||||||
|
|
||||||
/* TODO: libbb candidate? */
|
|
||||||
static len_and_sockaddr *get_sock_lsa(int s)
|
|
||||||
{
|
|
||||||
len_and_sockaddr *lsa;
|
|
||||||
socklen_t len = 0;
|
|
||||||
|
|
||||||
if (getsockname(s, NULL, &len) != 0)
|
|
||||||
return NULL;
|
|
||||||
lsa = xzalloc(LSA_LEN_SIZE + len);
|
|
||||||
lsa->len = len;
|
|
||||||
getsockname(s, &lsa->u.sa, &lsa->len);
|
|
||||||
return lsa;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int tftpd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int tftpd_main(int argc UNUSED_PARAM, char **argv)
|
int tftpd_main(int argc UNUSED_PARAM, char **argv)
|
||||||
{
|
{
|
||||||
|
@ -21,11 +21,6 @@ static int sysctl_display_all(const char *path);
|
|||||||
static int sysctl_handle_preload_file(const char *filename);
|
static int sysctl_handle_preload_file(const char *filename);
|
||||||
static void sysctl_dots_to_slashes(char *name);
|
static void sysctl_dots_to_slashes(char *name);
|
||||||
|
|
||||||
static void dwrite_str(int fd, const char *buf)
|
|
||||||
{
|
|
||||||
write(fd, buf, strlen(buf));
|
|
||||||
}
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
FLAG_SHOW_KEYS = 1 << 0,
|
FLAG_SHOW_KEYS = 1 << 0,
|
||||||
FLAG_SHOW_KEY_ERRORS = 1 << 1,
|
FLAG_SHOW_KEY_ERRORS = 1 << 1,
|
||||||
@ -147,7 +142,7 @@ static int sysctl_act_on_setting(char *setting)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (option_mask32 & FLAG_WRITE) {
|
if (option_mask32 & FLAG_WRITE) {
|
||||||
dwrite_str(fd, value);
|
xwrite_str(fd, value);
|
||||||
close(fd);
|
close(fd);
|
||||||
if (option_mask32 & FLAG_SHOW_KEYS)
|
if (option_mask32 & FLAG_SHOW_KEYS)
|
||||||
printf("%s = ", outname);
|
printf("%s = ", outname);
|
||||||
|
@ -743,7 +743,7 @@ static void print_tree(struct op *head)
|
|||||||
static void prs(const char *s)
|
static void prs(const char *s)
|
||||||
{
|
{
|
||||||
if (*s)
|
if (*s)
|
||||||
write(STDERR_FILENO, s, strlen(s));
|
xwrite_str(STDERR_FILENO, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void prn(unsigned u)
|
static void prn(unsigned u)
|
||||||
@ -3600,7 +3600,7 @@ static int doset(struct op *t UNUSED_PARAM, char **args)
|
|||||||
cp = args[1];
|
cp = args[1];
|
||||||
if (cp == NULL) {
|
if (cp == NULL) {
|
||||||
for (vp = vlist; vp; vp = vp->next)
|
for (vp = vlist; vp; vp = vp->next)
|
||||||
varput(vp->name, 1);
|
varput(vp->name, STDOUT_FILENO);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (*cp == '-') {
|
if (*cp == '-') {
|
||||||
@ -3639,8 +3639,8 @@ static int doset(struct op *t UNUSED_PARAM, char **args)
|
|||||||
static void varput(char *s, int out)
|
static void varput(char *s, int out)
|
||||||
{
|
{
|
||||||
if (isalnum(*s) || *s == '_') {
|
if (isalnum(*s) || *s == '_') {
|
||||||
write(out, s, strlen(s));
|
xwrite_str(out, s);
|
||||||
write(out, "\n", 1);
|
xwrite(out, "\n", 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user