diff options
Diffstat (limited to 'libbb/xfuncs.c')
-rw-r--r-- | libbb/xfuncs.c | 89 |
1 files changed, 69 insertions, 20 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index 820a0d7..43e8aef 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c @@ -30,31 +30,38 @@ #ifndef DMALLOC +#ifdef L_xmalloc extern void *xmalloc(size_t size) { void *ptr = malloc(size); if (ptr == NULL && size != 0) - error_msg_and_die(memory_exhausted); + bb_error_msg_and_die(bb_msg_memory_exhausted); return ptr; } +#endif +#ifdef L_xrealloc extern void *xrealloc(void *ptr, size_t size) { ptr = realloc(ptr, size); if (ptr == NULL && size != 0) - error_msg_and_die(memory_exhausted); + bb_error_msg_and_die(bb_msg_memory_exhausted); return ptr; } +#endif +#ifdef L_xcalloc extern void *xcalloc(size_t nmemb, size_t size) { void *ptr = calloc(nmemb, size); if (ptr == NULL && nmemb != 0 && size != 0) - error_msg_and_die(memory_exhausted); + bb_error_msg_and_die(bb_msg_memory_exhausted); return ptr; } +#endif -extern char * xstrdup (const char *s) { +#ifdef L_xstrdup +extern char * bb_xstrdup (const char *s) { char *t; if (s == NULL) @@ -63,79 +70,121 @@ extern char * xstrdup (const char *s) { t = strdup (s); if (t == NULL) - error_msg_and_die(memory_exhausted); + bb_error_msg_and_die(bb_msg_memory_exhausted); return t; } #endif +#endif /* DMALLOC */ -extern char * xstrndup (const char *s, int n) { +#ifdef L_xstrndup +extern char * bb_xstrndup (const char *s, int n) { char *t; if (s == NULL) - error_msg_and_die("xstrndup bug"); + bb_error_msg_and_die("bb_xstrndup bug"); t = xmalloc(++n); return safe_strncpy(t,s,n); } +#endif -FILE *xfopen(const char *path, const char *mode) +#ifdef L_xfopen +FILE *bb_xfopen(const char *path, const char *mode) { FILE *fp; if ((fp = fopen(path, mode)) == NULL) - perror_msg_and_die("%s", path); + bb_perror_msg_and_die("%s", path); return fp; } +#endif -extern int xopen(const char *pathname, int flags) +#ifdef L_xopen +extern int bb_xopen(const char *pathname, int flags) { int ret; ret = open(pathname, flags, 0777); if (ret == -1) { - perror_msg_and_die("%s", pathname); + bb_perror_msg_and_die("%s", pathname); } return ret; } +#endif -extern ssize_t xread(int fd, void *buf, size_t count) +#ifdef L_xread +extern ssize_t bb_xread(int fd, void *buf, size_t count) { ssize_t size; size = read(fd, buf, count); if (size == -1) { - perror_msg_and_die("Read error"); + bb_perror_msg_and_die("Read error"); } return(size); } +#endif -extern void xread_all(int fd, void *buf, size_t count) +#ifdef L_xread_all +extern void bb_xread_all(int fd, void *buf, size_t count) { ssize_t size; - size = xread(fd, buf, count); - if (size != count) { - error_msg_and_die("Short read"); + while (count) { + if ((size = bb_xread(fd, buf, count)) == 0) { /* EOF */ + bb_error_msg_and_die("Short read"); + } + count -= size; } return; } +#endif -extern unsigned char xread_char(int fd) +#ifdef L_xread_char +extern unsigned char bb_xread_char(int fd) { char tmp; - xread_all(fd, &tmp, 1); + bb_xread_all(fd, &tmp, 1); return(tmp); } +#endif + +#ifdef L_xferror +extern void bb_xferror(FILE *fp, const char *fn) +{ + if (ferror(fp)) { + bb_error_msg_and_die("%s", fn); + } +} +#endif + +#ifdef L_xferror_stdout +extern void bb_xferror_stdout(void) +{ + bb_xferror(stdout, bb_msg_standard_output); +} +#endif + +#ifdef L_xfflush_stdout +extern void bb_xfflush_stdout(void) +{ + if (fflush(stdout)) { + bb_perror_msg_and_die(bb_msg_standard_output); + } +} +#endif +#ifdef L_strlen /* Stupid gcc always includes its own builtin strlen()... */ #undef strlen -size_t xstrlen(const char *string) +size_t bb_strlen(const char *string) { return(strlen(string)); } +#endif /* END CODE */ /* |