exit(EXIT_FAILURE);
}
-#if defined BB_INIT
+#if defined BB_INIT || defined BB_MKSWAP || defined BB_MOUNT
/* Returns kernel version encoded as major*65536 + minor*256 + patch,
* so, for example, to check if the kernel is greater than 2.2.11:
* if (get_kernel_revision() <= 2*65536+2*256+11) { <stuff> }
#endif /* BB_CP_MV || BB_DU */
-#if defined (BB_CP_MV) || defined (BB_DU) || defined (BB_LN) || defined (BB_AR)
+#if defined (BB_CP_MV) || defined (BB_DU) || defined (BB_LN)
/*
* Return TRUE if a fileName is a directory.
* Nonexistant files return FALSE.
}
#endif /* BB_TAR || BB_AR */
-#if defined BB_TAR || defined BB_CP_MV || defined BB_AR
+#if defined BB_AR || defined BB_CP_MV || defined BB_DD || defined BB_NC || defined BB_TAR
/*
* Write all of the supplied buffer out to a file.
* This does multiple writes as necessary.
#endif /* BB_TAR || BB_CP_MV || BB_AR */
-#if defined BB_TAR || defined BB_TAIL || defined BB_AR || defined BB_SH || defined BB_CP_MV
+#if defined BB_TAR || defined BB_TAIL || defined BB_AR || defined BB_SH || defined BB_CP_MV || defined BB_DD
/*
* Read all of the supplied buffer from a file.
* This does multiple reads as necessary.
-#if defined (BB_TAR) || defined (BB_MKDIR) || defined (BB_AR)
+#if defined (BB_TAR) || defined (BB_MKDIR)
/*
* Attempt to create the directories along the specified path, except for
* the final component. The mode is given for the final directory only,
#if defined BB_CHMOD_CHOWN_CHGRP || defined BB_PS || defined BB_LS \
|| defined BB_TAR || defined BB_ID || defined BB_LOGGER \
- || defined BB_LOGNAME || defined BB_WHOAMI
+ || defined BB_LOGNAME || defined BB_WHOAMI || defined BB_SH
/* This parses entries in /etc/passwd and /etc/group. This is desirable
* for BusyBox, since we want to avoid using the glibc NSS stuff, which
}
}
if (id != -1 && id == rid) {
- memset(name, 0, 9*sizeof(char));
strncpy(name, rname, 8);
+ name[8]='\0';
if (gid) *gid = rgid;
fclose(file);
return (TRUE);
/* gets a username given a uid */
void my_getpwuid(char *name, long uid)
{
+ name[0] = '\0';
my_getid("/etc/passwd", name, uid, NULL);
}
/* gets a groupname given a gid */
void my_getgrgid(char *group, long gid)
{
+ group[0] = '\0';
my_getid("/etc/group", group, gid, NULL);
}
/* open device */
fd = open(device, O_RDONLY);
if (fd < 0)
- error_msg_and_die( "open failed for `%s': %s\n", device, strerror (errno));
+ perror_msg_and_die( "open failed for `%s'", device);
/* Find out how many processes there are */
if (ioctl (fd, DEVPS_GET_NUM_PIDS, &num_pids)<0)
- error_msg_and_die( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
+ perror_msg_and_die( "\nDEVPS_GET_PID_LIST");
/* Allocate some memory -- grab a few extras just in case
* some new processes start up while we wait. The kernel will
/* Now grab the pid list */
if (ioctl (fd, DEVPS_GET_PID_LIST, pid_array)<0)
- error_msg_and_die( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
+ perror_msg_and_die( "\nDEVPS_GET_PID_LIST");
/* Now search for a match */
for (i=1, j=0; i<pid_array[0] ; i++) {
info.pid = pid_array[i];
if (ioctl (fd, DEVPS_GET_PID_INFO, &info)<0)
- error_msg_and_die( "\nDEVPS_GET_PID_INFO: %s\n", strerror (errno));
+ perror_msg_and_die( "\nDEVPS_GET_PID_INFO");
/* Make sure we only match on the process name */
p=info.command_line+1;
/* close device */
if (close (fd) != 0)
- error_msg_and_die( "close failed for `%s': %s\n",device, strerror (errno));
+ perror_msg_and_die( "close failed for `%s'", device);
return pidList;
}
dir = opendir("/proc");
if (!dir)
- error_msg_and_die( "Cannot open /proc: %s\n", strerror (errno));
+ perror_msg_and_die( "Cannot open /proc");
while ((next = readdir(dir)) != NULL) {
FILE *status;
char *t;
if (s == NULL)
- error_msg_and_die("xstrndup bug");
+ error_msg_and_die("xstrndup bug\n");
t = xmalloc(n+1);
strncpy(t,s,n);
char *s=path+strlen(path)-1;
/* strip trailing slashes */
- while (s && *s == '/') {
+ while (s != path && *s == '/') {
*s-- = '\0';
}
/* find last component */
s = strrchr(path, '/');
- if (s==NULL) return path;
- else return s+1;
+ if (s == NULL || s[1] == '\0')
+ return path;
+ else
+ return s+1;
}
#endif
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL) {
- error_msg("%s: %s\n", path, strerror(errno));
+ perror_msg("%s", path);
errno = 0;
}
return fp;
{
FILE *fp;
if ((fp = fopen(path, mode)) == NULL)
- error_msg_and_die("%s: %s\n", path, strerror(errno));
+ perror_msg_and_die("%s", path);
return fp;
}
#endif
return strcmp(applet1->name, applet2->name);
}
+#if defined BB_NC
+ssize_t safe_read(int fd, void *buf, size_t count)
+{
+ ssize_t n;
+
+ do {
+ n = read(fd, buf, count);
+ } while (n < 0 && errno == EINTR);
+
+ return n;
+}
+#endif
+
/* END CODE */
/*
Local Variables: