aboutsummaryrefslogtreecommitdiff
path: root/libbb/xfuncs.c
diff options
context:
space:
mode:
authorlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-08-03 15:41:12 +0000
committerlandley <landley@69ca8d6d-28ef-0310-b511-8ec308f3f277>2006-08-03 15:41:12 +0000
commit5e2a5391f9142bca773aab4c829615895b69a6b7 (patch)
treee4a2769349867c441cf2983d83097bb66701a733 /libbb/xfuncs.c
parente883e03918a0e26e390ea23996abdb8fc1925f88 (diff)
downloadbusybox-w32-5e2a5391f9142bca773aab4c829615895b69a6b7.tar.gz
busybox-w32-5e2a5391f9142bca773aab4c829615895b69a6b7.tar.bz2
busybox-w32-5e2a5391f9142bca773aab4c829615895b69a6b7.zip
Remove bb_ prefixes from xfuncs.c (and a few other places), consolidate
things like xasprintf() into xfuncs.c, remove xprint_file_by_name() (it only had one user), clean up lots of #includes... General cleanup pass. What I've been doing for the last couple days. And it conflicts! I've removed httpd.c from this checkin due to somebody else touching that file. It builds for me. I have to catch a bus. (Now you know why I'm looking forward to Mercurial.) git-svn-id: svn://busybox.net/trunk/busybox@15767 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'libbb/xfuncs.c')
-rw-r--r--libbb/xfuncs.c142
1 files changed, 120 insertions, 22 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 8562a4fcb..699d09c67 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -3,18 +3,12 @@
3 * Utility routines. 3 * Utility routines.
4 * 4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 * Copyright (C) 2006 Rob Landley
7 * Copyright (C) 2006 Denis Vlasenko
6 * 8 *
7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. 9 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
8 */ 10 */
9 11
10#include <sys/types.h>
11#include <sys/stat.h>
12#include <sys/wait.h>
13#include <stdio.h>
14#include <string.h>
15#include <stdlib.h>
16#include <unistd.h>
17#include <fcntl.h>
18#include "busybox.h" 12#include "busybox.h"
19 13
20#ifndef DMALLOC 14#ifndef DMALLOC
@@ -59,7 +53,7 @@ void *xcalloc(size_t nmemb, size_t size)
59#endif /* DMALLOC */ 53#endif /* DMALLOC */
60 54
61#ifdef L_xstrdup 55#ifdef L_xstrdup
62char * bb_xstrdup (const char *s) 56char * xstrdup (const char *s)
63{ 57{
64 char *t; 58 char *t;
65 59
@@ -76,12 +70,12 @@ char * bb_xstrdup (const char *s)
76#endif 70#endif
77 71
78#ifdef L_xstrndup 72#ifdef L_xstrndup
79char * bb_xstrndup (const char *s, int n) 73char * xstrndup (const char *s, int n)
80{ 74{
81 char *t; 75 char *t;
82 76
83 if (ENABLE_DEBUG && s == NULL) 77 if (ENABLE_DEBUG && s == NULL)
84 bb_error_msg_and_die("bb_xstrndup bug"); 78 bb_error_msg_and_die("xstrndup bug");
85 79
86 t = xmalloc(++n); 80 t = xmalloc(++n);
87 81
@@ -90,7 +84,7 @@ char * bb_xstrndup (const char *s, int n)
90#endif 84#endif
91 85
92#ifdef L_xfopen 86#ifdef L_xfopen
93FILE *bb_xfopen(const char *path, const char *mode) 87FILE *xfopen(const char *path, const char *mode)
94{ 88{
95 FILE *fp; 89 FILE *fp;
96 if ((fp = fopen(path, mode)) == NULL) 90 if ((fp = fopen(path, mode)) == NULL)
@@ -100,14 +94,14 @@ FILE *bb_xfopen(const char *path, const char *mode)
100#endif 94#endif
101 95
102#ifdef L_xopen 96#ifdef L_xopen
103int bb_xopen(const char *pathname, int flags) 97int xopen(const char *pathname, int flags)
104{ 98{
105 return bb_xopen3(pathname, flags, 0777); 99 return xopen3(pathname, flags, 0777);
106} 100}
107#endif 101#endif
108 102
109#ifdef L_xopen3 103#ifdef L_xopen3
110int bb_xopen3(const char *pathname, int flags, int mode) 104int xopen3(const char *pathname, int flags, int mode)
111{ 105{
112 int ret; 106 int ret;
113 107
@@ -175,7 +169,7 @@ unsigned char xread_char(int fd)
175#endif 169#endif
176 170
177#ifdef L_xferror 171#ifdef L_xferror
178void bb_xferror(FILE *fp, const char *fn) 172void xferror(FILE *fp, const char *fn)
179{ 173{
180 if (ferror(fp)) { 174 if (ferror(fp)) {
181 bb_error_msg_and_die("%s", fn); 175 bb_error_msg_and_die("%s", fn);
@@ -184,14 +178,14 @@ void bb_xferror(FILE *fp, const char *fn)
184#endif 178#endif
185 179
186#ifdef L_xferror_stdout 180#ifdef L_xferror_stdout
187void bb_xferror_stdout(void) 181void xferror_stdout(void)
188{ 182{
189 bb_xferror(stdout, bb_msg_standard_output); 183 xferror(stdout, bb_msg_standard_output);
190} 184}
191#endif 185#endif
192 186
193#ifdef L_xfflush_stdout 187#ifdef L_xfflush_stdout
194void bb_xfflush_stdout(void) 188void xfflush_stdout(void)
195{ 189{
196 if (fflush(stdout)) { 190 if (fflush(stdout)) {
197 bb_perror_msg_and_die(bb_msg_standard_output); 191 bb_perror_msg_and_die(bb_msg_standard_output);
@@ -201,7 +195,7 @@ void bb_xfflush_stdout(void)
201 195
202#ifdef L_spawn 196#ifdef L_spawn
203// This does a fork/exec in one call, using vfork(). 197// This does a fork/exec in one call, using vfork().
204pid_t bb_spawn(char **argv) 198pid_t spawn(char **argv)
205{ 199{
206 static int failed; 200 static int failed;
207 pid_t pid; 201 pid_t pid;
@@ -226,9 +220,9 @@ pid_t bb_spawn(char **argv)
226#endif 220#endif
227 221
228#ifdef L_xspawn 222#ifdef L_xspawn
229pid_t bb_xspawn(char **argv) 223pid_t xspawn(char **argv)
230{ 224{
231 pid_t pid = bb_spawn(argv); 225 pid_t pid = spawn(argv);
232 if (pid < 0) bb_perror_msg_and_die("%s", *argv); 226 if (pid < 0) bb_perror_msg_and_die("%s", *argv);
233 return pid; 227 return pid;
234} 228}
@@ -347,3 +341,107 @@ off_t fdlength(int fd)
347 return pos + 1; 341 return pos + 1;
348} 342}
349#endif 343#endif
344
345#ifdef L_xasprintf
346char *xasprintf(const char *format, ...)
347{
348 va_list p;
349 int r;
350 char *string_ptr;
351
352#if 1
353 // GNU extension
354 va_start(p, format);
355 r = vasprintf(&string_ptr, format, p);
356 va_end(p);
357#else
358 // Bloat for systems that haven't got the GNU extension.
359 va_start(p, format);
360 r = vsnprintf(NULL, 0, format, p);
361 va_end(p);
362 string_ptr = xmalloc(r+1);
363 va_start(p, format);
364 r = vsnprintf(string_ptr, r+1, format, p);
365 va_end(p);
366#endif
367
368 if (r < 0) bb_perror_msg_and_die("xasprintf");
369 return string_ptr;
370}
371#endif
372
373#ifdef L_xprint_and_close_file
374void xprint_and_close_file(FILE *file)
375{
376 // copyfd outputs error messages for us.
377 if (bb_copyfd_eof(fileno(file), 1) == -1) exit(bb_default_error_retval);
378
379 fclose(file);
380}
381#endif
382
383#ifdef L_xchdir
384void xchdir(const char *path)
385{
386 if (chdir(path))
387 bb_perror_msg_and_die("chdir(%s)", path);
388}
389#endif
390
391#ifdef L_warn_opendir
392DIR *warn_opendir(const char *path)
393{
394 DIR *dp;
395
396 if ((dp = opendir(path)) == NULL) {
397 bb_perror_msg("unable to open `%s'", path);
398 return NULL;
399 }
400 return dp;
401}
402#endif
403
404#ifdef L_xopendir
405DIR *xopendir(const char *path)
406{
407 DIR *dp;
408
409 if ((dp = opendir(path)) == NULL)
410 bb_perror_msg_and_die("unable to open `%s'", path);
411 return dp;
412}
413#endif
414
415#ifdef L_xdaemon
416#ifndef BB_NOMMU
417void xdaemon(int nochdir, int noclose)
418{
419 if (daemon(nochdir, noclose)) bb_perror_msg_and_die("daemon");
420}
421#endif
422#endif
423
424#ifdef L_xbind
425void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen)
426{
427 if (bind(sockfd, my_addr, addrlen)) bb_perror_msg_and_die("bind");
428}
429#endif
430
431#ifdef L_xsocket
432int xsocket(int domain, int type, int protocol)
433{
434 int r = socket(domain, type, protocol);
435
436 if (r < 0) bb_perror_msg_and_die("socket");
437
438 return r;
439}
440#endif
441
442#ifdef L_xlisten
443void xlisten(int s, int backlog)
444{
445 if (listen(s, backlog)) bb_perror_msg_and_die("listen");
446}
447#endif