*
*/
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <dirent.h>
+#include <time.h>
+#include <utime.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <sys/ioctl.h>
+#include <sys/utsname.h> /* for uname(2) */
+
#include "busybox.h"
#if defined (BB_CHMOD_CHOWN_CHGRP) \
|| defined (BB_CP_MV) \
#include "messages.c"
#include "usage.h"
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <dirent.h>
-#include <time.h>
-#include <utime.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <stdlib.h>
-#include <limits.h>
-#include <sys/ioctl.h>
-#include <sys/utsname.h> /* for uname(2) */
-
#include "pwd_grp/pwd.h"
#include "pwd_grp/grp.h"
}
#endif
-#if defined BB_NFSMOUNT || defined BB_LS || defined BB_SH || defined BB_WGET || \
- defined BB_DPKG_DEB || defined BB_TAR
+#if defined BB_NFSMOUNT || defined BB_LS || defined BB_SH || \
+ defined BB_WGET || defined BB_DPKG_DEB || defined BB_TAR || \
+ defined BB_LN
# ifndef DMALLOC
extern char * xstrdup (const char *s) {
char *t;
if (s == NULL)
error_msg_and_die("xstrndup bug");
- t = xmalloc(n+1);
- strncpy(t,s,n);
- t[n] = 0;
-
- return t;
+ t = xmalloc(++n);
+
+ return safe_strncpy(t,s,n);
}
#endif
-#if defined BB_IFCONFIG || defined BB_ROUTE
+#if defined BB_IFCONFIG || defined BB_ROUTE || defined BB_NFSMOUNT || \
+ defined BB_FEATURE_MOUNT_LOOP
/* Like strncpy but make sure the resulting string is always 0 terminated. */
extern char * safe_strncpy(char *dst, const char *src, size_t size)
{
*loopro = (mode == O_RDONLY);
memset(&loopinfo, 0, sizeof(loopinfo));
- strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
- loopinfo.lo_name[LO_NAME_SIZE - 1] = 0;
+ safe_strncpy(loopinfo.lo_name, file, LO_NAME_SIZE);
loopinfo.lo_offset = offset;
#if defined BB_HOSTNAME || defined BB_LOADACM || defined BB_MORE \
|| defined BB_SED || defined BB_SH || defined BB_TAR || defined BB_UNIQ \
|| defined BB_WC || defined BB_CMP || defined BB_SORT || defined BB_WGET \
- || defined BB_MOUNT
+ || defined BB_MOUNT || defined BB_ROUTE
FILE *xfopen(const char *path, const char *mode)
{
FILE *fp;
}
}
-#if defined BB_DD || defined BB_TAIL
+#if defined BB_DD || defined BB_TAIL || defined BB_STTY
unsigned long parse_number(const char *numstr,
const struct suffix_mult *suffixes)
{
if (numstr == end)
error_msg_and_die("invalid number `%s'", numstr);
while (end[0] != '\0') {
- for (sm = suffixes; sm->suffix != NULL; sm++) {
- len = strlen(sm->suffix);
- if (strncmp(sm->suffix, end, len) == 0) {
- ret *= sm->mult;
- end += len;
- break;
- }
+ sm = suffixes;
+ while ( sm != 0 ) {
+ if(sm->suffix) {
+ len = strlen(sm->suffix);
+ if (strncmp(sm->suffix, end, len) == 0) {
+ ret *= sm->mult;
+ end += len;
+ break;
+ }
+ sm++;
+
+ } else
+ sm = 0;
}
- if (sm->suffix == NULL)
+ if (sm == 0)
error_msg_and_die("invalid number `%s'", numstr);
}
return ret;