projects
/
oweals
/
busybox.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support for tar -z option for uncompressing only
[oweals/busybox.git]
/
utility.c
diff --git
a/utility.c
b/utility.c
index 9ae2a8f247523b28e4205b414e07507b9d810c41..62c47288561ee3a108bf6771f81dafdff0ac2d04 100644
(file)
--- a/
utility.c
+++ b/
utility.c
@@
-33,7
+33,7
@@
|| defined (BB_LS) \
|| defined (BB_RM) \
|| defined (BB_TAR)
|| defined (BB_LS) \
|| defined (BB_RM) \
|| defined (BB_TAR)
-/* same conditions as recursive
A
ction */
+/* same conditions as recursive
_a
ction */
#define bb_need_name_too_long
#endif
#define bb_need_memory_exhausted
#define bb_need_name_too_long
#endif
#define bb_need_memory_exhausted
@@
-84,36
+84,35
@@
extern void usage(const char *usage)
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
-
extern void errorMsg(const char *s, ...
)
+
static void verror_msg(const char *s, va_list p
)
{
{
- va_list p;
-
- va_start(p, s);
fflush(stdout);
fprintf(stderr, "%s: ", applet_name);
vfprintf(stderr, s, p);
fflush(stdout);
fprintf(stderr, "%s: ", applet_name);
vfprintf(stderr, s, p);
- va_end(p);
fflush(stderr);
}
fflush(stderr);
}
-extern void
fatalError
(const char *s, ...)
+extern void
error_msg
(const char *s, ...)
{
va_list p;
va_start(p, s);
{
va_list p;
va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "%s: ", applet_name);
- vfprintf(stderr, s, p);
+ verror_msg(s, p);
va_end(p);
va_end(p);
- fflush(stderr);
- exit(EXIT_FAILURE);
}
}
-extern void
perrorMsg
(const char *s, ...)
+extern void
error_msg_and_die
(const char *s, ...)
{
va_list p;
va_start(p, s);
{
va_list p;
va_start(p, s);
+ verror_msg(s, p);
+ va_end(p);
+ exit(EXIT_FAILURE);
+}
+
+static void vperror_msg(const char *s, va_list p)
+{
fflush(stdout);
fprintf(stderr, "%s: ", applet_name);
if (s && *s) {
fflush(stdout);
fprintf(stderr, "%s: ", applet_name);
if (s && *s) {
@@
-121,24
+120,25
@@
extern void perrorMsg(const char *s, ...)
fputs(": ", stderr);
}
fprintf(stderr, "%s\n", strerror(errno));
fputs(": ", stderr);
}
fprintf(stderr, "%s\n", strerror(errno));
- va_end(p);
fflush(stderr);
}
fflush(stderr);
}
-extern void
fatalPerror
(const char *s, ...)
+extern void
perror_msg
(const char *s, ...)
{
va_list p;
va_start(p, s);
{
va_list p;
va_start(p, s);
- fflush(stdout);
- fprintf(stderr, "%s: ", applet_name);
- if (s && *s) {
- vfprintf(stderr, s, p);
- fputs(": ", stderr);
- }
- fprintf(stderr, "%s\n", strerror(errno));
+ vperror_msg(s, p);
+ va_end(p);
+}
+
+extern void perror_msg_and_die(const char *s, ...)
+{
+ va_list p;
+
+ va_start(p, s);
+ vperror_msg(s, p);
va_end(p);
va_end(p);
- fflush(stderr);
exit(EXIT_FAILURE);
}
exit(EXIT_FAILURE);
}
@@
-266,7
+266,7
@@
void reset_ino_dev_hashtable(void)
* Return TRUE if a fileName is a directory.
* Nonexistant files return FALSE.
*/
* Return TRUE if a fileName is a directory.
* Nonexistant files return FALSE.
*/
-int is
D
irectory(const char *fileName, const int followLinks, struct stat *statBuf)
+int is
_d
irectory(const char *fileName, const int followLinks, struct stat *statBuf)
{
int status;
int didMalloc = 0;
{
int status;
int didMalloc = 0;
@@
-296,21
+296,21
@@
int isDirectory(const char *fileName, const int followLinks, struct stat *statBu
#if defined (BB_AR) || defined BB_CP_MV
/*
#if defined (BB_AR) || defined BB_CP_MV
/*
- * Copy
readS
ize bytes between two file descriptors
+ * Copy
chunks
ize bytes between two file descriptors
*/
*/
-int copy
SubFile(int srcFd, int dstFd, size_t remaining
)
+int copy
_file_chunk(int srcfd, int dstfd, size_t chunksize
)
{
size_t size;
{
size_t size;
- char buffer[BUFSIZ];
+ char buffer[BUFSIZ];
/* BUFSIZ is declared in stdio.h */
- while (
remaining
> 0) {
- if (
remaining
> BUFSIZ)
+ while (
chunksize
> 0) {
+ if (
chunksize
> BUFSIZ)
size = BUFSIZ;
else
size = BUFSIZ;
else
- size =
remaining
;
- if (full
Write(dstFd, buffer, fullRead(srcF
d, buffer, size)) < size)
+ size =
chunksize
;
+ if (full
_write(dstfd, buffer, full_read(srcf
d, buffer, size)) < size)
return(FALSE);
return(FALSE);
-
remaining
-= size;
+
chunksize
-= size;
}
return (TRUE);
}
}
return (TRUE);
}
@@
-325,7
+325,7
@@
int copySubFile(int srcFd, int dstFd, size_t remaining)
* -Erik Andersen
*/
int
* -Erik Andersen
*/
int
-copy
F
ile(const char *srcName, const char *destName,
+copy
_f
ile(const char *srcName, const char *destName,
int setModes, int followLinks, int forceFlag)
{
int rfd;
int setModes, int followLinks, int forceFlag)
{
int rfd;
@@
-358,7
+358,7
@@
copyFile(const char *srcName, const char *destName,
if ((srcStatBuf.st_dev == dstStatBuf.st_dev) &&
(srcStatBuf.st_ino == dstStatBuf.st_ino)) {
if ((srcStatBuf.st_dev == dstStatBuf.st_dev) &&
(srcStatBuf.st_ino == dstStatBuf.st_ino)) {
- error
M
sg("Copying file \"%s\" to itself\n", srcName);
+ error
_m
sg("Copying file \"%s\" to itself\n", srcName);
return FALSE;
}
return FALSE;
}
@@
-423,7
+423,7
@@
copyFile(const char *srcName, const char *destName,
return FALSE;
}
return FALSE;
}
- if (copy
SubFile
(rfd, wfd, srcStatBuf.st_size)==FALSE)
+ if (copy
_file_chunk
(rfd, wfd, srcStatBuf.st_size)==FALSE)
goto error_exit;
close(rfd);
goto error_exit;
close(rfd);
@@
-482,16
+482,16
@@
static const mode_t MBIT[] = {
S_IROTH, S_IWOTH, S_IXOTH
};
S_IROTH, S_IWOTH, S_IXOTH
};
-#define MODE1 "rwxrwxrwx"
-#define MODE0 "---------"
-#define SMODE1 "..s..s..t"
-#define SMODE0 "..S..S..T"
+static const char MODE1[] = "rwxrwxrwx";
+static const char MODE0[] = "---------";
+static const char SMODE1[] = "..s..s..t";
+static const char SMODE0[] = "..S..S..T";
/*
* Return the standard ls-like mode string from a file mode.
* This is static and so is overwritten on each call.
*/
/*
* Return the standard ls-like mode string from a file mode.
* This is static and so is overwritten on each call.
*/
-const char *mode
S
tring(int mode)
+const char *mode
_s
tring(int mode)
{
static char buf[12];
{
static char buf[12];
@@
-514,7
+514,7
@@
const char *modeString(int mode)
* Return the standard ls-like time string from a time_t
* This is static and so is overwritten on each call.
*/
* Return the standard ls-like time string from a time_t
* This is static and so is overwritten on each call.
*/
-const char *time
S
tring(time_t timeVal)
+const char *time
_s
tring(time_t timeVal)
{
time_t now;
char *str;
{
time_t now;
char *str;
@@
-542,7
+542,7
@@
const char *timeString(time_t timeVal)
* This does multiple writes as necessary.
* Returns the amount written, or -1 on an error.
*/
* This does multiple writes as necessary.
* Returns the amount written, or -1 on an error.
*/
-int full
W
rite(int fd, const char *buf, int len)
+int full
_w
rite(int fd, const char *buf, int len)
{
int cc;
int total;
{
int cc;
int total;
@@
-572,7
+572,7
@@
int fullWrite(int fd, const char *buf, int len)
* Returns the amount read, or -1 on an error.
* A short read is returned on an end of file.
*/
* Returns the amount read, or -1 on an error.
* A short read is returned on an end of file.
*/
-int full
R
ead(int fd, char *buf, int len)
+int full
_r
ead(int fd, char *buf, int len)
{
int cc;
int total;
{
int cc;
int total;
@@
-611,12
+611,12
@@
int fullRead(int fd, char *buf, int len)
* location, and do something (something specified
* by the fileAction and dirAction function pointers).
*
* location, and do something (something specified
* by the fileAction and dirAction function pointers).
*
- * Unfortunatly, while nftw(3) could replace this and reduce
+ * Unfortunat
e
ly, while nftw(3) could replace this and reduce
* code size a bit, nftw() wasn't supported before GNU libc 2.1,
* and so isn't sufficiently portable to take over since glibc2.1
* is so stinking huge.
*/
* code size a bit, nftw() wasn't supported before GNU libc 2.1,
* and so isn't sufficiently portable to take over since glibc2.1
* is so stinking huge.
*/
-int recursive
A
ction(const char *fileName,
+int recursive
_a
ction(const char *fileName,
int recurse, int followLinks, int depthFirst,
int (*fileAction) (const char *fileName,
struct stat * statbuf,
int recurse, int followLinks, int depthFirst,
int (*fileAction) (const char *fileName,
struct stat * statbuf,
@@
-641,7
+641,7
@@
int recursiveAction(const char *fileName,
"status=%d followLinks=%d TRUE=%d\n",
status, followLinks, TRUE);
#endif
"status=%d followLinks=%d TRUE=%d\n",
status, followLinks, TRUE);
#endif
- perror
(
fileName);
+ perror
_msg("%s",
fileName);
return FALSE;
}
return FALSE;
}
@@
-666,13
+666,13
@@
int recursiveAction(const char *fileName,
dir = opendir(fileName);
if (!dir) {
dir = opendir(fileName);
if (!dir) {
- perror
(
fileName);
+ perror
_msg("%s",
fileName);
return FALSE;
}
if (dirAction != NULL && depthFirst == FALSE) {
status = dirAction(fileName, &statbuf, userData);
if (status == FALSE) {
return FALSE;
}
if (dirAction != NULL && depthFirst == FALSE) {
status = dirAction(fileName, &statbuf, userData);
if (status == FALSE) {
- perror
(
fileName);
+ perror
_msg("%s",
fileName);
return FALSE;
}
}
return FALSE;
}
}
@@
-684,13
+684,13
@@
int recursiveAction(const char *fileName,
continue;
}
if (strlen(fileName) + strlen(next->d_name) + 1 > BUFSIZ) {
continue;
}
if (strlen(fileName) + strlen(next->d_name) + 1 > BUFSIZ) {
- error
M
sg(name_too_long);
+ error
_m
sg(name_too_long);
return FALSE;
}
memset(nextFile, 0, sizeof(nextFile));
sprintf(nextFile, "%s/%s", fileName, next->d_name);
status =
return FALSE;
}
memset(nextFile, 0, sizeof(nextFile));
sprintf(nextFile, "%s/%s", fileName, next->d_name);
status =
- recursive
A
ction(nextFile, TRUE, followLinks, depthFirst,
+ recursive
_a
ction(nextFile, TRUE, followLinks, depthFirst,
fileAction, dirAction, userData);
if (status == FALSE) {
closedir(dir);
fileAction, dirAction, userData);
if (status == FALSE) {
closedir(dir);
@@
-699,13
+699,13
@@
int recursiveAction(const char *fileName,
}
status = closedir(dir);
if (status < 0) {
}
status = closedir(dir);
if (status < 0) {
- perror
(
fileName);
+ perror
_msg("%s",
fileName);
return FALSE;
}
if (dirAction != NULL && depthFirst == TRUE) {
status = dirAction(fileName, &statbuf, userData);
if (status == FALSE) {
return FALSE;
}
if (dirAction != NULL && depthFirst == TRUE) {
status = dirAction(fileName, &statbuf, userData);
if (status == FALSE) {
- perror
(
fileName);
+ perror
_msg("%s",
fileName);
return FALSE;
}
}
return FALSE;
}
}
@@
-729,7
+729,7
@@
int recursiveAction(const char *fileName,
* while all previous ones get default protections. Errors are not reported
* here, as failures to restore files can be reported later.
*/
* while all previous ones get default protections. Errors are not reported
* here, as failures to restore files can be reported later.
*/
-extern int create
P
ath(const char *name, int mode)
+extern int create
_p
ath(const char *name, int mode)
{
char *cp;
char *cpOld;
{
char *cp;
char *cpOld;
@@
-1058,7
+1058,7
@@
int get_console_fd(char *tty_name)
if (is_a_console(fd))
return fd;
if (is_a_console(fd))
return fd;
- error
M
sg("Couldnt get a file descriptor referring to the console\n");
+ error
_m
sg("Couldnt get a file descriptor referring to the console\n");
return -1; /* total failure */
}
return -1; /* total failure */
}
@@
-1179,7
+1179,7
@@
extern int check_wildcard_match(const char *text, const char *pattern)
* Given any other file (or directory), find the mount table entry for its
* filesystem.
*/
* Given any other file (or directory), find the mount table entry for its
* filesystem.
*/
-extern struct mntent *find
MountP
oint(const char *name, const char *table)
+extern struct mntent *find
_mount_p
oint(const char *name, const char *table)
{
struct stat s;
dev_t mountDevice;
{
struct stat s;
dev_t mountDevice;
@@
-1219,16
+1219,16
@@
extern struct mntent *findMountPoint(const char *name, const char *table)
* Read a number with a possible multiplier.
* Returns -1 if the number format is illegal.
*/
* Read a number with a possible multiplier.
* Returns -1 if the number format is illegal.
*/
-extern long
getNum
(const char *cp)
+extern long
atoi_w_units
(const char *cp)
{
long value;
{
long value;
- if (!is
D
ecimal(*cp))
+ if (!is
_d
ecimal(*cp))
return -1;
value = 0;
return -1;
value = 0;
- while (is
D
ecimal(*cp))
+ while (is
_d
ecimal(*cp))
value = value * 10 + *cp++ - '0';
switch (*cp++) {
value = value * 10 + *cp++ - '0';
switch (*cp++) {
@@
-1292,14
+1292,14
@@
extern int device_open(char *device, int mode)
#endif
#if defined BB_FEATURE_USE_DEVPS_PATCH
#endif
#if defined BB_FEATURE_USE_DEVPS_PATCH
-/* find
PidByN
ame()
+/* find
_pid_by_n
ame()
*
* This finds the pid of the specified process,
* by using the /dev/ps device driver.
*
* Returns a list of all matching PIDs
*/
*
* This finds the pid of the specified process,
* by using the /dev/ps device driver.
*
* Returns a list of all matching PIDs
*/
-extern pid_t* find
PidByN
ame( char* pidName)
+extern pid_t* find
_pid_by_n
ame( char* pidName)
{
int fd, i, j;
char device[] = "/dev/ps";
{
int fd, i, j;
char device[] = "/dev/ps";
@@
-1310,11
+1310,11
@@
extern pid_t* findPidByName( char* pidName)
/* open device */
fd = open(device, O_RDONLY);
if (fd < 0)
/* open device */
fd = open(device, O_RDONLY);
if (fd < 0)
-
fatalError
( "open failed for `%s': %s\n", device, strerror (errno));
+
error_msg_and_die
( "open failed for `%s': %s\n", device, strerror (errno));
/* Find out how many processes there are */
if (ioctl (fd, DEVPS_GET_NUM_PIDS, &num_pids)<0)
/* Find out how many processes there are */
if (ioctl (fd, DEVPS_GET_NUM_PIDS, &num_pids)<0)
-
fatalError
( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
+
error_msg_and_die
( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
/* Allocate some memory -- grab a few extras just in case
* some new processes start up while we wait. The kernel will
/* Allocate some memory -- grab a few extras just in case
* some new processes start up while we wait. The kernel will
@@
-1325,7
+1325,7
@@
extern pid_t* findPidByName( char* pidName)
/* Now grab the pid list */
if (ioctl (fd, DEVPS_GET_PID_LIST, pid_array)<0)
/* Now grab the pid list */
if (ioctl (fd, DEVPS_GET_PID_LIST, pid_array)<0)
-
fatalError
( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
+
error_msg_and_die
( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
/* Now search for a match */
for (i=1, j=0; i<pid_array[0] ; i++) {
/* Now search for a match */
for (i=1, j=0; i<pid_array[0] ; i++) {
@@
-1334,7
+1334,7
@@
extern pid_t* findPidByName( char* pidName)
info.pid = pid_array[i];
if (ioctl (fd, DEVPS_GET_PID_INFO, &info)<0)
info.pid = pid_array[i];
if (ioctl (fd, DEVPS_GET_PID_INFO, &info)<0)
-
fatalError
( "\nDEVPS_GET_PID_INFO: %s\n", strerror (errno));
+
error_msg_and_die
( "\nDEVPS_GET_PID_INFO: %s\n", strerror (errno));
/* Make sure we only match on the process name */
p=info.command_line+1;
/* Make sure we only match on the process name */
p=info.command_line+1;
@@
-1358,7
+1358,7
@@
extern pid_t* findPidByName( char* pidName)
/* close device */
if (close (fd) != 0)
/* close device */
if (close (fd) != 0)
-
fatalError
( "close failed for `%s': %s\n",device, strerror (errno));
+
error_msg_and_die
( "close failed for `%s': %s\n",device, strerror (errno));
return pidList;
}
return pidList;
}
@@
-1367,7
+1367,7
@@
extern pid_t* findPidByName( char* pidName)
#error Sorry, I depend on the /proc filesystem right now.
#endif
#error Sorry, I depend on the /proc filesystem right now.
#endif
-/* find
PidByN
ame()
+/* find
_pid_by_n
ame()
*
* This finds the pid of the specified process.
* Currently, it's implemented by rummaging through
*
* This finds the pid of the specified process.
* Currently, it's implemented by rummaging through
@@
-1375,7
+1375,7
@@
extern pid_t* findPidByName( char* pidName)
*
* Returns a list of all matching PIDs
*/
*
* Returns a list of all matching PIDs
*/
-extern pid_t* find
PidByN
ame( char* pidName)
+extern pid_t* find
_pid_by_n
ame( char* pidName)
{
DIR *dir;
struct dirent *next;
{
DIR *dir;
struct dirent *next;
@@
-1384,7
+1384,7
@@
extern pid_t* findPidByName( char* pidName)
dir = opendir("/proc");
if (!dir)
dir = opendir("/proc");
if (!dir)
-
fatalError
( "Cannot open /proc: %s\n", strerror (errno));
+
error_msg_and_die
( "Cannot open /proc: %s\n", strerror (errno));
while ((next = readdir(dir)) != NULL) {
FILE *status;
while ((next = readdir(dir)) != NULL) {
FILE *status;
@@
-1423,7
+1423,7
@@
extern void *xmalloc(size_t size)
void *ptr = malloc(size);
if (!ptr)
void *ptr = malloc(size);
if (!ptr)
-
fatalError
(memory_exhausted);
+
error_msg_and_die
(memory_exhausted);
return ptr;
}
return ptr;
}
@@
-1431,7
+1431,7
@@
extern void *xrealloc(void *old, size_t size)
{
void *ptr = realloc(old, size);
if (!ptr)
{
void *ptr = realloc(old, size);
if (!ptr)
-
fatalError
(memory_exhausted);
+
error_msg_and_die
(memory_exhausted);
return ptr;
}
return ptr;
}
@@
-1439,12
+1439,12
@@
extern void *xcalloc(size_t nmemb, size_t size)
{
void *ptr = calloc(nmemb, size);
if (!ptr)
{
void *ptr = calloc(nmemb, size);
if (!ptr)
-
fatalError
(memory_exhausted);
+
error_msg_and_die
(memory_exhausted);
return ptr;
}
#endif
return ptr;
}
#endif
-#if defined BB_FEATURE_NFSMOUNT || defined BB_
SH || defined BB_LS
+#if defined BB_FEATURE_NFSMOUNT || defined BB_
LS || defined BB_SH || defined BB_WGET
# ifndef DMALLOC
extern char * xstrdup (const char *s) {
char *t;
# ifndef DMALLOC
extern char * xstrdup (const char *s) {
char *t;
@@
-1455,7
+1455,7
@@
extern char * xstrdup (const char *s) {
t = strdup (s);
if (t == NULL)
t = strdup (s);
if (t == NULL)
-
fatalError
(memory_exhausted);
+
error_msg_and_die
(memory_exhausted);
return t;
}
return t;
}
@@
-1467,7
+1467,7
@@
extern char * xstrndup (const char *s, int n) {
char *t;
if (s == NULL)
char *t;
if (s == NULL)
-
fatalError
("xstrndup bug");
+
error_msg_and_die
("xstrndup bug");
t = xmalloc(n+1);
strncpy(t,s,n);
t = xmalloc(n+1);
strncpy(t,s,n);
@@
-1588,13
+1588,13
@@
extern int find_real_root_device_name(char* name)
char fileName[BUFSIZ];
if (stat("/", &rootStat) != 0) {
char fileName[BUFSIZ];
if (stat("/", &rootStat) != 0) {
- error
M
sg("could not stat '/'\n");
+ error
_m
sg("could not stat '/'\n");
return( FALSE);
}
dir = opendir("/dev");
if (!dir) {
return( FALSE);
}
dir = opendir("/dev");
if (!dir) {
- error
M
sg("could not open '/dev'\n");
+ error
_m
sg("could not open '/dev'\n");
return( FALSE);
}
return( FALSE);
}
@@
-1749,7
+1749,7
@@
void xregcomp(regex_t *preg, const char *regex, int cflags)
int errmsgsz = regerror(ret, preg, NULL, 0);
char *errmsg = xmalloc(errmsgsz);
regerror(ret, preg, errmsg, errmsgsz);
int errmsgsz = regerror(ret, preg, NULL, 0);
char *errmsg = xmalloc(errmsgsz);
regerror(ret, preg, errmsg, errmsgsz);
-
fatalError
("xregcomp: %s\n", errmsg);
+
error_msg_and_die
("xregcomp: %s\n", errmsg);
}
}
#endif
}
}
#endif
@@
-1759,7
+1759,7
@@
FILE *wfopen(const char *path, const char *mode)
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL) {
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL) {
- error
M
sg("%s: %s\n", path, strerror(errno));
+ error
_m
sg("%s: %s\n", path, strerror(errno));
errno = 0;
}
return fp;
errno = 0;
}
return fp;
@@
-1773,7
+1773,7
@@
FILE *xfopen(const char *path, const char *mode)
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL)
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL)
-
fatalError
("%s: %s\n", path, strerror(errno));
+
error_msg_and_die
("%s: %s\n", path, strerror(errno));
return fp;
}
#endif
return fp;
}
#endif