more busyboxes, remove 1 extern function (mainstream also have for one fsck)
This commit is contained in:
parent
1c275de6a2
commit
ab57f76e13
@ -57,7 +57,7 @@ $(patsubst %,$(E2FSPROGS_DIR)/%, $(UUID_OBJS)):|$(E2FSPROGS_DIR)/uuid
|
|||||||
E2FSPROGS-y:=
|
E2FSPROGS-y:=
|
||||||
E2FSPROGS-$(CONFIG_CHATTR) += chattr.o $(E2P_OBJS)
|
E2FSPROGS-$(CONFIG_CHATTR) += chattr.o $(E2P_OBJS)
|
||||||
E2FSPROGS-$(CONFIG_E2FSCK) += e2fsck.o util.o $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_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_LSATTR) += lsattr.o $(E2P_OBJS)
|
||||||
E2FSPROGS-$(CONFIG_MKE2FS) += mke2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_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)
|
E2FSPROGS-$(CONFIG_TUNE2FS) += tune2fs.o util.o $(E2P_OBJS) $(BLKID_OBJS) $(EXT2FS_OBJS) $(UUID_OBJS)
|
||||||
|
@ -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;
|
|
||||||
}
|
|
@ -18,9 +18,7 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#if HAVE_ERRNO_H
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "blkidP.h"
|
#include "blkidP.h"
|
||||||
#include "../uuid/uuid.h"
|
#include "../uuid/uuid.h"
|
||||||
@ -33,9 +31,7 @@
|
|||||||
#define STRTOULL strtoul
|
#define STRTOULL strtoul
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if HAVE_STDLIB_H
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* File format:
|
* File format:
|
||||||
|
@ -45,9 +45,6 @@ typedef long errcode_t;
|
|||||||
#define HAVE_MNTENT_H 1
|
#define HAVE_MNTENT_H 1
|
||||||
#define HAVE_NETINET_IN_H 1
|
#define HAVE_NETINET_IN_H 1
|
||||||
#define HAVE_NET_IF_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_IOCTL_H 1
|
||||||
#define HAVE_SYS_MOUNT_H 1
|
#define HAVE_SYS_MOUNT_H 1
|
||||||
#define HAVE_SYS_QUEUE_H 1
|
#define HAVE_SYS_QUEUE_H 1
|
||||||
|
137
e2fsprogs/fsck.c
137
e2fsprogs/fsck.c
@ -47,10 +47,147 @@
|
|||||||
|
|
||||||
#include "e2fsbb.h"
|
#include "e2fsbb.h"
|
||||||
|
|
||||||
|
#include "busybox.h"
|
||||||
|
|
||||||
#ifndef _PATH_MNTTAB
|
#ifndef _PATH_MNTTAB
|
||||||
#define _PATH_MNTTAB "/etc/fstab"
|
#define _PATH_MNTTAB "/etc/fstab"
|
||||||
#endif
|
#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[] = {
|
static const char * const ignored_types[] = {
|
||||||
"ignore",
|
"ignore",
|
||||||
"iso9660",
|
"iso9660",
|
||||||
|
@ -54,6 +54,3 @@ struct fsck_instance {
|
|||||||
char * base_device;
|
char * base_device;
|
||||||
struct fsck_instance *next;
|
struct fsck_instance *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char *base_device(const char *device);
|
|
||||||
extern const char *identify_fs(const char *fs_name, const char *fs_types);
|
|
||||||
|
@ -25,13 +25,14 @@
|
|||||||
* 94/03/06 - Added the checks interval from Uwe Ohse (uwe@tirka.gun.de)
|
* 94/03/06 - Added the checks interval from Uwe Ohse (uwe@tirka.gun.de)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <getopt.h>
|
||||||
|
|
||||||
#include "e2fsbb.h"
|
#include "e2fsbb.h"
|
||||||
#include "ext2fs/ext2_fs.h"
|
#include "ext2fs/ext2_fs.h"
|
||||||
|
@ -32,12 +32,8 @@
|
|||||||
* %End-Header%
|
* %End-Header%
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
|
||||||
#ifdef HAVE_STDLIB_H
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#endif
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user