#include <dirent.h>
#include <time.h>
#include <utime.h>
-#include <sys/stat.h>
#include <unistd.h>
#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/ioctl.h>
#include <sys/utsname.h> /* for uname(2) */
#if defined BB_FEATURE_MOUNT_LOOP
#include <fcntl.h>
-#include <sys/ioctl.h>
#include <linux/loop.h>
#endif
# endif
#endif
-
extern void usage(const char *usage)
{
fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n\n",
_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
+#endif
+
+/* Include our own version of <sys/mount.h>, since libc5 doesn't
+ * know about umount2 */
+extern _syscall1(int, umount, const char *, special_file);
+extern _syscall2(int, umount2, const char *, special_file, int, flags);
+extern _syscall5(int, mount, const char *, special_file, const char *, dir,
+ const char *, fstype, unsigned long int, rwflag, const void *, data);
+#endif
+
#if defined (BB_CP_MV) || defined (BB_DU)
#endif /* BB_CHMOD_CHOWN_CHGRP || BB_PS || BB_LS || BB_TAR || BB_ID */
-#if (defined BB_CHVT) || (defined BB_DEALLOCVT)
+#if (defined BB_CHVT) || (defined BB_DEALLOCVT) || (defined BB_SETKEYCODES)
-
-#include <linux/kd.h>
-#include <sys/ioctl.h>
+/* From <linux/kd.h> */
+#define KDGKBTYPE 0x4B33 /* get keyboard type */
+#define KB_84 0x01
+#define KB_101 0x02 /* this is what we always answer */
int is_a_console(int fd)
{
}
-#endif /* BB_CHVT || BB_DEALLOCVT */
+#endif /* BB_CHVT || BB_DEALLOCVT || BB_SETKEYCODES */
#if !defined BB_REGEXP && (defined BB_GREP || defined BB_SED)
return 0;
while ((mountEntry = getmntent(mountTable)) != 0) {
- if (strcmp(mountEntry->mnt_fsname, "none") == 0) {
- continue;
- }
if (strcmp(name, mountEntry->mnt_dir) == 0
|| strcmp(name, mountEntry->mnt_fsname) == 0) /* String match. */
break;
fatalError( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno));
/* Now search for a match */
- for (i=1; i<pid_array[0] ; i++) {
+ for (i=1, j=0; i<pid_array[0] ; i++) {
char* p;
struct pid_info info;
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
+
/* END CODE */
/*
Local Variables: