diff options
-rw-r--r-- | e2fsprogs/Makefile.in | 2 | ||||
-rw-r--r-- | e2fsprogs/base_device.c | 147 | ||||
-rw-r--r-- | e2fsprogs/blkid/read.c | 4 | ||||
-rw-r--r-- | e2fsprogs/e2fsbb.h | 3 | ||||
-rw-r--r-- | e2fsprogs/fsck.c | 137 | ||||
-rw-r--r-- | e2fsprogs/fsck.h | 3 | ||||
-rw-r--r-- | e2fsprogs/tune2fs.c | 3 | ||||
-rw-r--r-- | e2fsprogs/uuid/gen_uuid.c | 4 |
8 files changed, 140 insertions, 163 deletions
diff --git a/e2fsprogs/Makefile.in b/e2fsprogs/Makefile.in index 419b2c6a5..90aac6327 100644 --- a/e2fsprogs/Makefile.in +++ b/e2fsprogs/Makefile.in @@ -57,7 +57,7 @@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(UUID_OBJS)):|$(E2FSPROGS_DIR)/uuid E2FSPROGS-y:= E2FSPROGS-$(CONFIG_CHATTR) += chattr.o $(E2P_OBJS) E2FSPROGS-$(CONFIG_E2FSCK) += e2fsck.o util.o $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) -E2FSPROGS-$(CONFIG_FSCK) += fsck.o base_device.o $(BLKID_OBJS) $(UUID_OBJS) +E2FSPROGS-$(CONFIG_FSCK) += fsck.o $(BLKID_OBJS) $(UUID_OBJS) E2FSPROGS-$(CONFIG_LSATTR) += lsattr.o $(E2P_OBJS) E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS) diff --git a/e2fsprogs/base_device.c b/e2fsprogs/base_device.c deleted file mode 100644 index d81bb0952..000000000 --- a/e2fsprogs/base_device.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * base_device.c - * - * Return the "base device" given a particular device; this is used to - * assure that we only fsck one partition on a particular drive at any - * one time. Otherwise, the disk heads will be seeking all over the - * place. If the base device can not be determined, return NULL. - * - * The base_device() function returns an allocated string which must - * be freed. - * - * Written by Theodore Ts'o, <tytso@mit.edu> - * - * Copyright (C) 2000 Theodore Ts'o. - * - * %Begin-Header% - * This file may be redistributed under the terms of the GNU Public - * License. - * %End-Header% - */ -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <ctype.h> -#include <string.h> - -#include "busybox.h" - -#ifdef CONFIG_FEATURE_DEVFS -/* - * Required for the uber-silly devfs /dev/ide/host1/bus2/target3/lun3 - * pathames. - */ -static const char *devfs_hier[] = { - "host", "bus", "target", "lun", 0 -}; -#endif - -char *base_device(const char *device) -{ - char *str, *cp; -#ifdef CONFIG_FEATURE_DEVFS - const char **hier, *disk; - int len; -#endif - - cp = str = bb_xstrdup(device); - - /* Skip over /dev/; if it's not present, give up. */ - if (strncmp(cp, "/dev/", 5) != 0) - goto errout; - cp += 5; - -#if 0 /* this is for old stuff no one uses anymore ? */ - /* Skip over /dev/dsk/... */ - if (strncmp(cp, "dsk/", 4) == 0) - cp += 4; -#endif - - /* - * For md devices, we treat them all as if they were all - * on one disk, since we don't know how to parallelize them. - */ - if (cp[0] == 'm' && cp[1] == 'd') { - *(cp+2) = 0; - return str; - } - - /* Handle DAC 960 devices */ - if (strncmp(cp, "rd/", 3) == 0) { - cp += 3; - if (cp[0] != 'c' || cp[2] != 'd' || - !isdigit(cp[1]) || !isdigit(cp[3])) - goto errout; - *(cp+4) = 0; - return str; - } - - /* Now let's handle /dev/hd* and /dev/sd* devices.... */ - if ((cp[0] == 'h' || cp[0] == 's') && (cp[1] == 'd')) { - cp += 2; - /* If there's a single number after /dev/hd, skip it */ - if (isdigit(*cp)) - cp++; - /* What follows must be an alpha char, or give up */ - if (!isalpha(*cp)) - goto errout; - *(cp + 1) = 0; - return str; - } - -#ifdef CONFIG_FEATURE_DEVFS - /* Now let's handle devfs (ugh) names */ - len = 0; - if (strncmp(cp, "ide/", 4) == 0) - len = 4; - if (strncmp(cp, "scsi/", 5) == 0) - len = 5; - if (len) { - cp += len; - /* - * Now we proceed down the expected devfs hierarchy. - * i.e., .../host1/bus2/target3/lun4/... - * If we don't find the expected token, followed by - * some number of digits at each level, abort. - */ - for (hier = devfs_hier; *hier; hier++) { - len = strlen(*hier); - if (strncmp(cp, *hier, len) != 0) - goto errout; - cp += len; - while (*cp != '/' && *cp != 0) { - if (!isdigit(*cp)) - goto errout; - cp++; - } - cp++; - } - *(cp - 1) = 0; - return str; - } - - /* Now handle devfs /dev/disc or /dev/disk names */ - disk = 0; - if (strncmp(cp, "discs/", 6) == 0) - disk = "disc"; - else if (strncmp(cp, "disks/", 6) == 0) - disk = "disk"; - if (disk) { - cp += 6; - if (strncmp(cp, disk, 4) != 0) - goto errout; - cp += 4; - while (*cp != '/' && *cp != 0) { - if (!isdigit(*cp)) - goto errout; - cp++; - } - *cp = 0; - return str; - } -#endif - -errout: - free(str); - return NULL; -} diff --git a/e2fsprogs/blkid/read.c b/e2fsprogs/blkid/read.c index 36292ab13..78464145d 100644 --- a/e2fsprogs/blkid/read.c +++ b/e2fsprogs/blkid/read.c @@ -18,9 +18,7 @@ #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> -#if HAVE_ERRNO_H #include <errno.h> -#endif #include "blkidP.h" #include "../uuid/uuid.h" @@ -33,9 +31,7 @@ #define STRTOULL strtoul #endif -#if HAVE_STDLIB_H #include <stdlib.h> -#endif /* * File format: diff --git a/e2fsprogs/e2fsbb.h b/e2fsprogs/e2fsbb.h index 570d536f2..fe4241d1d 100644 --- a/e2fsprogs/e2fsbb.h +++ b/e2fsprogs/e2fsbb.h @@ -45,9 +45,6 @@ typedef long errcode_t; #define HAVE_MNTENT_H 1 #define HAVE_NETINET_IN_H 1 #define HAVE_NET_IF_H 1 -#define HAVE_SETJMP_H 1 -#define HAVE_SIGNAL_H 1 -#define HAVE_STDLIB_H 1 #define HAVE_SYS_IOCTL_H 1 #define HAVE_SYS_MOUNT_H 1 #define HAVE_SYS_QUEUE_H 1 diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c index 93514a391..ec0c38b0b 100644 --- a/e2fsprogs/fsck.c +++ b/e2fsprogs/fsck.c @@ -47,10 +47,147 @@ #include "e2fsbb.h" +#include "busybox.h" + #ifndef _PATH_MNTTAB #define _PATH_MNTTAB "/etc/fstab" #endif +/* + * base_device.c + * + * Return the "base device" given a particular device; this is used to + * assure that we only fsck one partition on a particular drive at any + * one time. Otherwise, the disk heads will be seeking all over the + * place. If the base device can not be determined, return NULL. + * + * The base_device() function returns an allocated string which must + * be freed. + * + */ + + +#ifdef CONFIG_FEATURE_DEVFS +/* + * Required for the uber-silly devfs /dev/ide/host1/bus2/target3/lun3 + * pathames. + */ +static const char *devfs_hier[] = { + "host", "bus", "target", "lun", 0 +}; +#endif + +static char *base_device(const char *device) +{ + char *str, *cp; +#ifdef CONFIG_FEATURE_DEVFS + const char **hier, *disk; + int len; +#endif + + cp = str = bb_xstrdup(device); + + /* Skip over /dev/; if it's not present, give up. */ + if (strncmp(cp, "/dev/", 5) != 0) + goto errout; + cp += 5; + +#if 0 /* this is for old stuff no one uses anymore ? */ + /* Skip over /dev/dsk/... */ + if (strncmp(cp, "dsk/", 4) == 0) + cp += 4; +#endif + + /* + * For md devices, we treat them all as if they were all + * on one disk, since we don't know how to parallelize them. + */ + if (cp[0] == 'm' && cp[1] == 'd') { + *(cp+2) = 0; + return str; + } + + /* Handle DAC 960 devices */ + if (strncmp(cp, "rd/", 3) == 0) { + cp += 3; + if (cp[0] != 'c' || cp[2] != 'd' || + !isdigit(cp[1]) || !isdigit(cp[3])) + goto errout; + *(cp+4) = 0; + return str; + } + + /* Now let's handle /dev/hd* and /dev/sd* devices.... */ + if ((cp[0] == 'h' || cp[0] == 's') && (cp[1] == 'd')) { + cp += 2; + /* If there's a single number after /dev/hd, skip it */ + if (isdigit(*cp)) + cp++; + /* What follows must be an alpha char, or give up */ + if (!isalpha(*cp)) + goto errout; + *(cp + 1) = 0; + return str; + } + +#ifdef CONFIG_FEATURE_DEVFS + /* Now let's handle devfs (ugh) names */ + len = 0; + if (strncmp(cp, "ide/", 4) == 0) + len = 4; + if (strncmp(cp, "scsi/", 5) == 0) + len = 5; + if (len) { + cp += len; + /* + * Now we proceed down the expected devfs hierarchy. + * i.e., .../host1/bus2/target3/lun4/... + * If we don't find the expected token, followed by + * some number of digits at each level, abort. + */ + for (hier = devfs_hier; *hier; hier++) { + len = strlen(*hier); + if (strncmp(cp, *hier, len) != 0) + goto errout; + cp += len; + while (*cp != '/' && *cp != 0) { + if (!isdigit(*cp)) + goto errout; + cp++; + } + cp++; + } + *(cp - 1) = 0; + return str; + } + + /* Now handle devfs /dev/disc or /dev/disk names */ + disk = 0; + if (strncmp(cp, "discs/", 6) == 0) + disk = "disc"; + else if (strncmp(cp, "disks/", 6) == 0) + disk = "disk"; + if (disk) { + cp += 6; + if (strncmp(cp, disk, 4) != 0) + goto errout; + cp += 4; + while (*cp != '/' && *cp != 0) { + if (!isdigit(*cp)) + goto errout; + cp++; + } + *cp = 0; + return str; + } +#endif + +errout: + free(str); + return NULL; +} + + static const char * const ignored_types[] = { "ignore", "iso9660", diff --git a/e2fsprogs/fsck.h b/e2fsprogs/fsck.h index 59626122f..87914af3b 100644 --- a/e2fsprogs/fsck.h +++ b/e2fsprogs/fsck.h @@ -54,6 +54,3 @@ struct fsck_instance { char * base_device; struct fsck_instance *next; }; - -extern char *base_device(const char *device); -extern const char *identify_fs(const char *fs_name, const char *fs_types); diff --git a/e2fsprogs/tune2fs.c b/e2fsprogs/tune2fs.c index 0519c0981..e36c47734 100644 --- a/e2fsprogs/tune2fs.c +++ b/e2fsprogs/tune2fs.c @@ -25,13 +25,14 @@ * 94/03/06 - Added the checks interval from Uwe Ohse (uwe@tirka.gun.de) */ +#include <sys/types.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <unistd.h> -#include <sys/types.h> +#include <getopt.h> #include "e2fsbb.h" #include "ext2fs/ext2_fs.h" diff --git a/e2fsprogs/uuid/gen_uuid.c b/e2fsprogs/uuid/gen_uuid.c index 489cdd2b9..52328cfc4 100644 --- a/e2fsprogs/uuid/gen_uuid.c +++ b/e2fsprogs/uuid/gen_uuid.c @@ -32,12 +32,8 @@ * %End-Header% */ -#ifdef HAVE_UNISTD_H #include <unistd.h> -#endif -#ifdef HAVE_STDLIB_H #include <stdlib.h> -#endif #include <string.h> #include <fcntl.h> #include <errno.h> |