X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=utility.c;h=cbbc02f989fb7ae7c9ce4be0a0d8b7cbda037b2a;hb=f1f6d58598ae6628b6a31d512e9148674349ee98;hp=afc0e8f8ad931e62e4f7ced492c5df78aec12a78;hpb=89bc256c9480a137a2286b5b16ff4207e35659e5;p=oweals%2Fbusybox.git diff --git a/utility.c b/utility.c index afc0e8f8a..cbbc02f98 100644 --- a/utility.c +++ b/utility.c @@ -45,15 +45,15 @@ #include #include #include -#include #include #include +#include +#include #include /* for uname(2) */ #if defined BB_FEATURE_MOUNT_LOOP #include -#include -#include +#include /* Pull in loop device support */ #endif /* Busybox mount uses either /proc/filesystems or /dev/mtab to get the @@ -80,7 +80,6 @@ const char mtab_file[] = "/dev/mtab"; # endif #endif - extern void usage(const char *usage) { fprintf(stderr, "BusyBox v%s (%s) multi-call binary -- GPL2\n\n", @@ -135,10 +134,24 @@ extern int get_kernel_revision(void) #if defined BB_FREE || defined BB_INIT || defined BB_UNAME || defined BB_UPTIME #include -#include _syscall1(int, sysinfo, struct sysinfo *, info); #endif /* BB_INIT */ +#if defined BB_MOUNT || defined BB_UMOUNT +#include + +#ifndef __NR_umount2 +#define __NR_umount2 52 +#endif + +/* Include our own version of , 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) @@ -902,11 +915,12 @@ unsigned long my_getpwnamegid(char *name) #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 -#include +/* From */ +#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) { @@ -987,7 +1001,7 @@ int get_console_fd(char *tty_name) } -#endif /* BB_CHVT || BB_DEALLOCVT */ +#endif /* BB_CHVT || BB_DEALLOCVT || BB_SETKEYCODES */ #if !defined BB_REGEXP && (defined BB_GREP || defined BB_SED) @@ -1288,7 +1302,7 @@ extern int device_open(char *device, int mode) #if defined BB_KILLALL || ( defined BB_FEATURE_LINUXRC && ( defined BB_HALT || defined BB_REBOOT || defined BB_POWEROFF )) #ifdef BB_FEATURE_USE_DEVPS_PATCH -#include +#include /* For Erik's nifty devps device driver */ #endif #if defined BB_FEATURE_USE_DEVPS_PATCH @@ -1328,7 +1342,7 @@ extern pid_t* findPidByName( char* pidName) fatalError( "\nDEVPS_GET_PID_LIST: %s\n", strerror (errno)); /* Now search for a match */ - for (i=1; i linebufsz-1) + if (idx > linebufsz-2) linebuf = realloc(linebuf, linebufsz += GROWBY); linebuf[idx++] = (char)ch; if ((char)ch == '\n') @@ -1659,6 +1704,39 @@ char process_escape_sequence(char **ptr) } #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 +int bb_regcomp(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); + errorMsg("bb_regcomp: %s\n", errmsg); + free(errmsg); + regfree(preg); + } + return ret; +} +#endif + /* END CODE */ /* Local Variables: