#if defined BB_FEATURE_MOUNT_LOOP
#include <fcntl.h>
-#include <linux/loop.h>
+#include <linux/loop.h> /* Pull in loop device support */
#endif
/* Busybox mount uses either /proc/filesystems or /dev/mtab to get the
va_start(p, s);
fflush(stdout);
+ fprintf(stderr, "%s: ", applet_name);
vfprintf(stderr, s, p);
va_end(p);
fflush(stderr);
va_start(p, s);
fflush(stdout);
+ fprintf(stderr, "%s: ", applet_name);
vfprintf(stderr, s, p);
va_end(p);
fflush(stderr);
#if defined BB_FREE || defined BB_INIT || defined BB_UNAME || defined BB_UPTIME
-#include <sys/syscall.h>
-#include <linux/unistd.h>
_syscall1(int, sysinfo, struct sysinfo *, info);
#endif /* BB_INIT */
#if defined BB_MOUNT || defined BB_UMOUNT
-#include <sys/syscall.h>
-#include <linux/unistd.h>
#ifndef __NR_umount2
#define __NR_umount2 52
#if defined BB_KILLALL || ( defined BB_FEATURE_LINUXRC && ( defined BB_HALT || defined BB_REBOOT || defined BB_POWEROFF ))
#ifdef BB_FEATURE_USE_DEVPS_PATCH
-#include <linux/devps.h>
+#include <linux/devps.h> /* For Erik's nifty devps device driver */
#endif
#if defined BB_FEATURE_USE_DEVPS_PATCH
&& (strlen(pidName) == strlen(info.command_line))) {
pidList=realloc( pidList, sizeof(pid_t) * (j+2));
if (pidList==NULL)
- fatalError(memory_exhausted, "");
+ fatalError(memory_exhausted);
pidList[j++]=info.pid;
}
}
&& (strlen(pidName) == strlen(p))) {
pidList=realloc( pidList, sizeof(pid_t) * (i+2));
if (pidList==NULL)
- fatalError(memory_exhausted, "");
+ fatalError(memory_exhausted);
pidList[i++]=strtol(next->d_name, NULL, 0);
}
}
void *cp = malloc(size);
if (cp == NULL)
- fatalError(memory_exhausted, "");
+ fatalError(memory_exhausted);
return cp;
}
+#if defined BB_FEATURE_NFSMOUNT
+extern char * xstrdup (const char *s) {
+ char *t;
+
+ if (s == NULL)
+ return NULL;
+
+ t = strdup (s);
+
+ if (t == NULL)
+ fatalError(memory_exhausted);
+
+ return t;
+}
+
+extern char * xstrndup (const char *s, int n) {
+ char *t;
+
+ if (s == NULL)
+ fatalError("xstrndup bug");
+
+ t = xmalloc(n+1);
+ strncpy(t,s,n);
+ t[n] = 0;
+
+ return t;
+}
+#endif
+
+
#if (__GLIBC__ < 2) && (defined BB_SYSLOGD || defined BB_INIT)
extern int vdprintf(int d, const char *format, va_list ap)
{
}
#endif
-static const int GROWBY = 80; /* how large we will grow strings by */
/* get_line_from_file() - This function reads an entire line from a text file
* up to a newline. It returns a malloc'ed char * which must be stored and
* free'ed by the caller. */
extern char *get_line_from_file(FILE *file)
{
+ static const int GROWBY = 80; /* how large we will grow strings by */
+
int ch;
int idx = 0;
char *linebuf = NULL;
if (ch == EOF)
break;
/* grow the line buffer as necessary */
- if (idx > linebufsz-1)
+ if (idx > linebufsz-2)
linebuf = realloc(linebuf, linebufsz += GROWBY);
linebuf[idx++] = (char)ch;
if ((char)ch == '\n')
}
#endif
+#if defined BB_BASENAME || defined BB_LN
+char *get_last_path_component(char *path)
+{
+ char *s=path+strlen(path)-1;
+
+ /* strip trailing slashes */
+ while (s && *s == '/') {
+ *s-- = '\0';
+ }
+
+ /* find last component */
+ s = strrchr(path, '/');
+ if (s==NULL) return path;
+ else return s+1;
+}
+#endif
+
+#if defined BB_GREP || defined BB_SED
+void xregcomp(regex_t *preg, const char *regex, int cflags)
+{
+ int ret;
+ if ((ret = regcomp(preg, regex, cflags)) != 0) {
+ int errmsgsz = regerror(ret, preg, NULL, 0);
+ char *errmsg = xmalloc(errmsgsz);
+ regerror(ret, preg, errmsg, errmsgsz);
+ fatalError("bb_regcomp: %s\n", errmsg);
+ }
+}
+#endif
+
/* END CODE */
/*
Local Variables: