diff options
author | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-08-28 23:31:54 +0000 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2006-08-28 23:31:54 +0000 |
commit | 73561cc75ac31e63bcab4b4ebfaf738e4ca225e6 (patch) | |
tree | 2a57564b8917a983365c765d4daa83032d9f0a17 /libbb/xfuncs.c | |
parent | 6ce8dae1d5a201156a83201de6c49cdcc4c8df3e (diff) |
- pull from busybox_scratch: r15829:15850
Various fixes, cleanups and shrinkage:
saves 952 Bytes:
text data bss dec hex filename
1087742 15853 790632 1894227 1ce753 ../busybox/busybox.old
1086790 15853 790632 1893275 1ce39b busybox
via:
# scripts/bloat-o-meter ../busybox/busybox_unstripped.old busybox_unstripped
function old new delta
ipcrm_main 756 822 +66
getval - 61 +61
maybe_set_utc - 40 +40
udhcpc_main 2896 2912 +16
md5_hash_block 428 437 +9
opt 8 16 +8
qgravechar 106 110 +4
make_bitmap 292 295 +3
inflate_unzip 2056 2059 +3
add_partition 1412 1414 +2
__parsespent 156 158 +2
qrealloc 41 42 +1
format - 1 +1
catv_main 313 314 +1
watch_main 293 292 -1
varunset 81 80 -1
part 1 - -1
check_if_skip 837 836 -1
start_stop_daemon_main 840 837 -3
create_lost_and_found 175 172 -3
supress_non_delimited_lines 4 - -4
static.l 4 - -4
static.c 5 1 -4
bsd_sum_file 237 233 -4
eval2 338 332 -6
arithmetic_common 166 158 -8
cmpfunc 22 5 -17
cksum_main 294 275 -19
cmp_main 465 439 -26
dd_main 1535 1508 -27
rmmod_main 376 333 -43
cut_file 727 644 -83
ipcs_main 3809 3721 -88
cut_main 722 614 -108
date_main 1443 1263 -180
remove_ids 222 - -222
------------------------------------------------------------------------------
(add/remove: 3/4 grow/shrink: 11/18 up/down: 217/-853) Total: -636 bytes
Diffstat (limited to 'libbb/xfuncs.c')
-rw-r--r-- | libbb/xfuncs.c | 133 |
1 files changed, 70 insertions, 63 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index 4d81fdc28..b2b53a712 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c @@ -16,8 +16,12 @@ * succeeded. */ #ifndef DMALLOC +/* dmalloc provides variants of these that do abort() on failure. + * Since dmalloc's prototypes overwrite the impls here as they are + * included after these prototypes in libbb.h, all is well. + */ #ifdef L_xmalloc -// Die if we can't allocate size bytes of memory. +/* Die if we can't allocate size bytes of memory. */ void *xmalloc(size_t size) { void *ptr = malloc(size); @@ -28,9 +32,9 @@ void *xmalloc(size_t size) #endif #ifdef L_xrealloc -// Die if we can't resize previously allocated memory. (This returns a pointer -// to the new memory, which may or may not be the same as the old memory. -// It'll copy the contents to a new chunk and free the old one if necessary.) +/* Die if we can't resize previously allocated memory. (This returns a pointer + * to the new memory, which may or may not be the same as the old memory. + * It'll copy the contents to a new chunk and free the old one if necessary.) */ void *xrealloc(void *ptr, size_t size) { ptr = realloc(ptr, size); @@ -39,9 +43,11 @@ void *xrealloc(void *ptr, size_t size) return ptr; } #endif +#endif /* DMALLOC */ + #ifdef L_xzalloc -// Die if we can't allocate and zero size bytes of memory. +/* Die if we can't allocate and zero size bytes of memory. */ void *xzalloc(size_t size) { void *ptr = xmalloc(size); @@ -50,10 +56,8 @@ void *xzalloc(size_t size) } #endif -#endif /* DMALLOC */ - #ifdef L_xstrdup -// Die if we can't copy a string to freshly allocated memory. +/* Die if we can't copy a string to freshly allocated memory. */ char * xstrdup(const char *s) { char *t; @@ -71,8 +75,9 @@ char * xstrdup(const char *s) #endif #ifdef L_xstrndup -// Die if we can't allocate n+1 bytes (space for the null terminator) and copy -// the (possibly truncated to length n) string into it. +/* Die if we can't allocate n+1 bytes (space for the null terminator) and copy + * the (possibly truncated to length n) string into it. + */ char * xstrndup(const char *s, int n) { char *t; @@ -87,8 +92,9 @@ char * xstrndup(const char *s, int n) #endif #ifdef L_xfopen -// Die if we can't open a file and return a FILE * to it. -// Notice we haven't got xfread(), This is for use with fscanf() and friends. +/* Die if we can't open a file and return a FILE * to it. + * Notice we haven't got xfread(), This is for use with fscanf() and friends. + */ FILE *xfopen(const char *path, const char *mode) { FILE *fp; @@ -99,7 +105,7 @@ FILE *xfopen(const char *path, const char *mode) #endif #ifdef L_xopen -// Die if we can't open an existing file and return an fd. +/* Die if we can't open an existing file and return an fd. */ int xopen(const char *pathname, int flags) { if (ENABLE_DEBUG && (flags && O_CREAT)) @@ -110,7 +116,7 @@ int xopen(const char *pathname, int flags) #endif #ifdef L_xopen3 -// Die if we can't open a new file and return an fd. +/* Die if we can't open a new file and return an fd. */ int xopen3(const char *pathname, int flags, int mode) { int ret; @@ -124,7 +130,7 @@ int xopen3(const char *pathname, int flags, int mode) #endif #ifdef L_xread -// Die with an error message if we can't read the entire buffer. +/* Die with an error message if we can't read the entire buffer. */ void xread(int fd, void *buf, size_t count) { while (count) { @@ -139,7 +145,7 @@ void xread(int fd, void *buf, size_t count) #endif #ifdef L_xwrite -// Die with an error message if we can't write the entire buffer. +/* Die with an error message if we can't write the entire buffer. */ void xwrite(int fd, void *buf, size_t count) { while (count) { @@ -154,7 +160,7 @@ void xwrite(int fd, void *buf, size_t count) #endif #ifdef L_xlseek -// 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. */ void xlseek(int fd, off_t offset, int whence) { if (offset != lseek(fd, offset, whence)) bb_error_msg_and_die("lseek"); @@ -162,7 +168,7 @@ void xlseek(int fd, off_t offset, int whence) #endif #ifdef L_xread_char -// Die with an error message if we can't read one character. +/* Die with an error message if we can't read one character. */ unsigned char xread_char(int fd) { char tmp; @@ -174,7 +180,7 @@ unsigned char xread_char(int fd) #endif #ifdef L_xferror -// Die with supplied error message if this FILE * has ferror set. +/* Die with supplied error message if this FILE * has ferror set. */ void xferror(FILE *fp, const char *fn) { if (ferror(fp)) { @@ -184,7 +190,7 @@ void xferror(FILE *fp, const char *fn) #endif #ifdef L_xferror_stdout -// Die with an error message if stdout has ferror set. +/* Die with an error message if stdout has ferror set. */ void xferror_stdout(void) { xferror(stdout, bb_msg_standard_output); @@ -192,7 +198,7 @@ void xferror_stdout(void) #endif #ifdef L_xfflush_stdout -// Die with an error message if we have trouble flushing stdout. +/* Die with an error message if we have trouble flushing stdout. */ void xfflush_stdout(void) { if (fflush(stdout)) { @@ -202,24 +208,25 @@ void xfflush_stdout(void) #endif #ifdef L_spawn -// This does a fork/exec in one call, using vfork(). Return PID of new child, -// -1 for failure. Runs argv[0], searching path if that has no / in it. +/* This does a fork/exec in one call, using vfork(). Return PID of new child, + * -1 for failure. Runs argv[0], searching path if that has no / in it. + */ pid_t spawn(char **argv) { static int failed; pid_t pid; void *app = ENABLE_FEATURE_SH_STANDALONE_SHELL ? find_applet_by_name(argv[0]) : 0; - // Be nice to nommu machines. + /* Be nice to nommu machines. */ failed = 0; pid = vfork(); if (pid < 0) return pid; if (!pid) { execvp(app ? CONFIG_BUSYBOX_EXEC_PATH : *argv, argv); - // We're sharing a stack with blocked parent, let parent know we failed - // and then exit to unblock parent (but don't run atexit() stuff, which - // would screw up parent.) + /* We're sharing a stack with blocked parent, let parent know we failed + * and then exit to unblock parent (but don't run atexit() stuff, which + would screw up parent.) */ failed = -1; _exit(0); @@ -229,7 +236,7 @@ pid_t spawn(char **argv) #endif #ifdef L_xspawn -// Die with an error message if we can't spawn a child process. +/* Die with an error message if we can't spawn a child process. */ pid_t xspawn(char **argv) { pid_t pid = spawn(argv); @@ -239,7 +246,7 @@ pid_t xspawn(char **argv) #endif #ifdef L_wait4 -// Wait for the specified child PID to exit, returning child's error return. +/* Wait for the specified child PID to exit, returning child's error return. */ int wait4pid(int pid) { int status; @@ -252,9 +259,9 @@ int wait4pid(int pid) #endif #ifdef L_itoa -// Convert unsigned integer to ascii, writing into supplied buffer. A -// truncated result is always null terminated (unless buflen is 0), and -// contains the first few digits of the result ala strncpy. +/* Convert unsigned integer to ascii, writing into supplied buffer. A + * truncated result is always null terminated (unless buflen is 0), and + * contains the first few digits of the result ala strncpy. */ void utoa_to_buf(unsigned n, char *buf, unsigned buflen) { int i, out = 0; @@ -272,7 +279,7 @@ void utoa_to_buf(unsigned n, char *buf, unsigned buflen) } } -// Convert signed integer to ascii, like utoa_to_buf() +/* Convert signed integer to ascii, like utoa_to_buf() */ void itoa_to_buf(int n, char *buf, unsigned buflen) { if (buflen && n<0) { @@ -283,16 +290,16 @@ void itoa_to_buf(int n, char *buf, unsigned buflen) utoa_to_buf((unsigned)n, buf, buflen); } -// The following two functions use a static buffer, so calling either one a -// second time will overwrite previous results. -// -// The largest 32 bit integer is -2 billion plus null terminator, or 12 bytes. -// Int should always be 32 bits on any remotely Unix-like system, see -// http://www.unix.org/whitepapers/64bit.html for the reasons why. - +/* The following two functions use a static buffer, so calling either one a + * second time will overwrite previous results. + * + * The largest 32 bit integer is -2 billion plus null terminator, or 12 bytes. + * Int should always be 32 bits on any remotely Unix-like system, see + * http://www.unix.org/whitepapers/64bit.html for the reasons why. +*/ static char local_buf[12]; -// Convert unsigned integer to ascii using a static buffer (returned). +/* Convert unsigned integer to ascii using a static buffer (returned). */ char *utoa(unsigned n) { utoa_to_buf(n, local_buf, sizeof(local_buf)); @@ -300,7 +307,7 @@ char *utoa(unsigned n) return local_buf; } -// Convert signed integer to ascii using a static buffer (returned). +/* Convert signed integer to ascii using a static buffer (returned). */ char *itoa(int n) { itoa_to_buf(n, local_buf, sizeof(local_buf)); @@ -310,15 +317,15 @@ char *itoa(int n) #endif #ifdef L_setuid -// Die with an error message if we can't set gid. (Because resource limits may -// limit this user to a given number of processes, and if that fills up the -// setgid() will fail and we'll _still_be_root_, which is bad.) +/* Die with an error message if we can't set gid. (Because resource limits may + * limit this user to a given number of processes, and if that fills up the + * setgid() will fail and we'll _still_be_root_, which is bad.) */ void xsetgid(gid_t gid) { if (setgid(gid)) bb_error_msg_and_die("setgid"); } -// Die with an error message if we cant' set uid. (See xsetgid() for why.) +/* Die with an error message if we cant' set uid. (See xsetgid() for why.) */ void xsetuid(uid_t uid) { if (setuid(uid)) bb_error_msg_and_die("setuid"); @@ -326,31 +333,31 @@ void xsetuid(uid_t uid) #endif #ifdef L_fdlength -// Return how long the file at fd is, if there's any way to determine it. +/* Return how long the file at fd is, if there's any way to determine it. */ off_t fdlength(int fd) { off_t bottom = 0, top = 0, pos; long size; - // If the ioctl works for this, return it. + /* If the ioctl works for this, return it. */ if (ioctl(fd, BLKGETSIZE, &size) >= 0) return size*512; - // If not, do a binary search for the last location we can read. (Some - // block devices don't do BLKGETSIZE right.) + /* If not, do a binary search for the last location we can read. (Some + * block devices don't do BLKGETSIZE right.) */ do { char temp; pos = bottom + (top - bottom) / 2;; - // If we can read from the current location, it's bigger. + /* If we can read from the current location, it's bigger. */ if (lseek(fd, pos, 0)>=0 && safe_read(fd, &temp, 1)==1) { if (bottom == top) bottom = top = (top+1) * 2; else bottom = pos; - // If we can't, it's smaller. + /* If we can't, it's smaller. */ } else { if (bottom == top) { @@ -366,8 +373,8 @@ off_t fdlength(int fd) #endif #ifdef L_xasprintf -// Die with an error message if we can't malloc() enough space and do an -// sprintf() into that space. +/* Die with an error message if we can't malloc() enough space and do an + * sprintf() into that space. */ char *xasprintf(const char *format, ...) { va_list p; @@ -396,8 +403,8 @@ char *xasprintf(const char *format, ...) #endif #ifdef L_xprint_and_close_file -// Die with an error message if we can't copy an entire FILE * to stdout, then -// close that file. +/* Die with an error message if we can't copy an entire FILE * to stdout, then + * close that file. */ void xprint_and_close_file(FILE *file) { // copyfd outputs error messages for us. @@ -408,7 +415,7 @@ void xprint_and_close_file(FILE *file) #endif #ifdef L_xchdir -// Die if we can't chdir to a new path. +/* Die if we can't chdir to a new path. */ void xchdir(const char *path) { if (chdir(path)) @@ -417,7 +424,7 @@ void xchdir(const char *path) #endif #ifdef L_warn_opendir -// Print a warning message if opendir() fails, but don't die. +/* Print a warning message if opendir() fails, but don't die. */ DIR *warn_opendir(const char *path) { DIR *dp; @@ -431,7 +438,7 @@ DIR *warn_opendir(const char *path) #endif #ifdef L_xopendir -// Die with an error message if opendir() fails. +/* Die with an error message if opendir() fails. */ DIR *xopendir(const char *path) { DIR *dp; @@ -444,7 +451,7 @@ DIR *xopendir(const char *path) #ifdef L_xdaemon #ifndef BB_NOMMU -// Die with an error message if we can't daemonize. +/* Die with an error message if we can't daemonize. */ void xdaemon(int nochdir, int noclose) { if (daemon(nochdir, noclose)) bb_perror_msg_and_die("daemon"); @@ -453,7 +460,7 @@ void xdaemon(int nochdir, int noclose) #endif #ifdef L_xsocket -// Die with an error message if we can't open a new socket. +/* Die with an error message if we can't open a new socket. */ int xsocket(int domain, int type, int protocol) { int r = socket(domain, type, protocol); @@ -465,7 +472,7 @@ int xsocket(int domain, int type, int protocol) #endif #ifdef L_xbind -// Die with an error message if we can't bind a socket to an address. +/* Die with an error message if we can't bind a socket to an address. */ void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) { if (bind(sockfd, my_addr, addrlen)) bb_perror_msg_and_die("bind"); @@ -473,7 +480,7 @@ void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) #endif #ifdef L_xlisten -// Die with an error message if we can't listen for connections on a socket. +/* Die with an error message if we can't listen for connections on a socket. */ void xlisten(int s, int backlog) { if (listen(s, backlog)) bb_perror_msg_and_die("listen"); |