create e2fs_set_sbin_path(), noticed by Tito, Thanks
This commit is contained in:
parent
6c35c7c976
commit
d20cfbd303
@ -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 $(BLKID_OBJS) $(UUID_OBJS)
|
E2FSPROGS-$(CONFIG_FSCK) += fsck.o util.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)
|
||||||
|
@ -78,18 +78,6 @@
|
|||||||
#define EXT2FS_ATTR(x)
|
#define EXT2FS_ATTR(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
|
||||||
* Exit codes used by fsck-type programs
|
|
||||||
*/
|
|
||||||
#define FSCK_OK 0 /* No errors */
|
|
||||||
#define FSCK_NONDESTRUCT 1 /* File system errors corrected */
|
|
||||||
#define FSCK_REBOOT 2 /* System should be rebooted */
|
|
||||||
#define FSCK_UNCORRECTED 4 /* File system errors left uncorrected */
|
|
||||||
#define FSCK_ERROR 8 /* Operational error */
|
|
||||||
#define FSCK_USAGE 16 /* Usage or syntax error */
|
|
||||||
#define FSCK_CANCELED 32 /* Aborted with a signal or ^C */
|
|
||||||
#define FSCK_LIBRARY 128 /* Shared library error */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The last ext2fs revision level that this version of e2fsck is able to
|
* The last ext2fs revision level that this version of e2fsck is able to
|
||||||
* support
|
* support
|
||||||
@ -14255,7 +14243,7 @@ void fatal_error(e2fsck_t ctx, const char *msg)
|
|||||||
ctx->flags |= E2F_FLAG_ABORT;
|
ctx->flags |= E2F_FLAG_ABORT;
|
||||||
if (ctx->flags & E2F_FLAG_SETJMP_OK)
|
if (ctx->flags & E2F_FLAG_SETJMP_OK)
|
||||||
longjmp(ctx->abort_loc, 1);
|
longjmp(ctx->abort_loc, 1);
|
||||||
exit(FSCK_ERROR);
|
exit(EXIT_ERROR);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -14461,7 +14449,7 @@ void preenhalt(e2fsck_t ctx)
|
|||||||
ext2fs_mark_super_dirty(fs);
|
ext2fs_mark_super_dirty(fs);
|
||||||
ext2fs_close(fs);
|
ext2fs_close(fs);
|
||||||
}
|
}
|
||||||
exit(FSCK_UNCORRECTED);
|
exit(EXIT_UNCORRECTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef RESOURCE_TRACK
|
#ifdef RESOURCE_TRACK
|
||||||
@ -14742,7 +14730,7 @@ static void usage(e2fsck_t ctx)
|
|||||||
" -L bad_blocks_file Set badblocks list\n"
|
" -L bad_blocks_file Set badblocks list\n"
|
||||||
));
|
));
|
||||||
|
|
||||||
exit(FSCK_USAGE);
|
exit(EXIT_USAGE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -14881,7 +14869,7 @@ static int is_on_batt(void)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* This routine checks to see if a filesystem can be skipped; if so,
|
* This routine checks to see if a filesystem can be skipped; if so,
|
||||||
* it will exit with E2FSCK_OK. Under some conditions it will print a
|
* it will exit with EXIT_OK. Under some conditions it will print a
|
||||||
* message explaining why a check is being forced.
|
* message explaining why a check is being forced.
|
||||||
*/
|
*/
|
||||||
static void check_if_skip(e2fsck_t ctx)
|
static void check_if_skip(e2fsck_t ctx)
|
||||||
@ -14949,7 +14937,7 @@ static void check_if_skip(e2fsck_t ctx)
|
|||||||
ext2fs_close(fs);
|
ext2fs_close(fs);
|
||||||
ctx->fs = NULL;
|
ctx->fs = NULL;
|
||||||
e2fsck_free_context(ctx);
|
e2fsck_free_context(ctx);
|
||||||
exit(FSCK_OK);
|
exit(EXIT_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -15079,8 +15067,6 @@ static int e2fsck_update_progress(e2fsck_t ctx, int pass,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PATH_SET "PATH=/sbin"
|
|
||||||
|
|
||||||
static void reserve_stdio_fds(void)
|
static void reserve_stdio_fds(void)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
@ -15379,14 +15365,14 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
|
|||||||
if (cflag || bad_blocks_file) {
|
if (cflag || bad_blocks_file) {
|
||||||
fprintf(stderr, _("Incompatible options not "
|
fprintf(stderr, _("Incompatible options not "
|
||||||
"allowed when byte-swapping.\n"));
|
"allowed when byte-swapping.\n"));
|
||||||
exit(FSCK_USAGE);
|
exit(EXIT_USAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (cflag && bad_blocks_file) {
|
if (cflag && bad_blocks_file) {
|
||||||
fprintf(stderr, _("The -c and the -l/-L options may "
|
fprintf(stderr, _("The -c and the -l/-L options may "
|
||||||
"not be both used at the same time.\n"));
|
"not be both used at the same time.\n"));
|
||||||
exit(FSCK_USAGE);
|
exit(EXIT_USAGE);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Set up signal action
|
* Set up signal action
|
||||||
@ -15405,22 +15391,8 @@ static errcode_t PRS(int argc, char *argv[], e2fsck_t *ret_ctx)
|
|||||||
sigaction(SIGUSR2, &sa, 0);
|
sigaction(SIGUSR2, &sa, 0);
|
||||||
|
|
||||||
/* Update our PATH to include /sbin if we need to run badblocks */
|
/* Update our PATH to include /sbin if we need to run badblocks */
|
||||||
if (cflag) {
|
if (cflag)
|
||||||
char *oldpath = getenv("PATH");
|
e2fs_set_sbin_path();
|
||||||
if (oldpath) {
|
|
||||||
char *newpath;
|
|
||||||
|
|
||||||
newpath = (char *) malloc(sizeof (PATH_SET) + 1 +
|
|
||||||
strlen (oldpath));
|
|
||||||
if (!newpath)
|
|
||||||
fatal_error(ctx, "Couldn't malloc() newpath");
|
|
||||||
strcpy (newpath, PATH_SET);
|
|
||||||
strcat (newpath, ":");
|
|
||||||
strcat (newpath, oldpath);
|
|
||||||
putenv (newpath);
|
|
||||||
} else
|
|
||||||
putenv (PATH_SET);
|
|
||||||
}
|
|
||||||
#ifdef __CONFIG_JBD_DEBUG__E2FS
|
#ifdef __CONFIG_JBD_DEBUG__E2FS
|
||||||
if (getenv("E2FSCK_JBD_DEBUG"))
|
if (getenv("E2FSCK_JBD_DEBUG"))
|
||||||
journal_enable_debug = atoi(getenv("E2FSCK_JBD_DEBUG"));
|
journal_enable_debug = atoi(getenv("E2FSCK_JBD_DEBUG"));
|
||||||
@ -15434,7 +15406,7 @@ static const char my_ver_date[] = E2FSPROGS_DATE;
|
|||||||
int e2fsck_main (int argc, char *argv[])
|
int e2fsck_main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
errcode_t retval;
|
errcode_t retval;
|
||||||
int exit_value = FSCK_OK;
|
int exit_value = EXIT_OK;
|
||||||
ext2_filsys fs = 0;
|
ext2_filsys fs = 0;
|
||||||
io_manager io_ptr;
|
io_manager io_ptr;
|
||||||
struct ext2_super_block *sb;
|
struct ext2_super_block *sb;
|
||||||
@ -15469,7 +15441,7 @@ int e2fsck_main (int argc, char *argv[])
|
|||||||
if (retval) {
|
if (retval) {
|
||||||
com_err("e2fsck", retval,
|
com_err("e2fsck", retval,
|
||||||
_("while trying to initialize program"));
|
_("while trying to initialize program"));
|
||||||
exit(FSCK_ERROR);
|
exit(EXIT_ERROR);
|
||||||
}
|
}
|
||||||
reserve_stdio_fds();
|
reserve_stdio_fds();
|
||||||
|
|
||||||
@ -15484,7 +15456,7 @@ int e2fsck_main (int argc, char *argv[])
|
|||||||
if (show_version_only) {
|
if (show_version_only) {
|
||||||
fprintf(stderr, _("\tUsing %s, %s\n"),
|
fprintf(stderr, _("\tUsing %s, %s\n"),
|
||||||
error_message(EXT2_ET_BASE), lib_ver_date);
|
error_message(EXT2_ET_BASE), lib_ver_date);
|
||||||
exit(FSCK_OK);
|
exit(EXIT_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
check_mount(ctx);
|
check_mount(ctx);
|
||||||
@ -15756,30 +15728,30 @@ restart:
|
|||||||
mtrace_print("Cleanup");
|
mtrace_print("Cleanup");
|
||||||
#endif
|
#endif
|
||||||
if (ext2fs_test_changed(fs)) {
|
if (ext2fs_test_changed(fs)) {
|
||||||
exit_value |= FSCK_NONDESTRUCT;
|
exit_value |= EXIT_NONDESTRUCT;
|
||||||
if (!(ctx->options & E2F_OPT_PREEN))
|
if (!(ctx->options & E2F_OPT_PREEN))
|
||||||
printf(_("\n%s: ***** FILE SYSTEM WAS MODIFIED *****\n"),
|
printf(_("\n%s: ***** FILE SYSTEM WAS MODIFIED *****\n"),
|
||||||
ctx->device_name);
|
ctx->device_name);
|
||||||
if (ctx->mount_flags & EXT2_MF_ISROOT) {
|
if (ctx->mount_flags & EXT2_MF_ISROOT) {
|
||||||
printf(_("%s: ***** REBOOT LINUX *****\n"),
|
printf(_("%s: ***** REBOOT LINUX *****\n"),
|
||||||
ctx->device_name);
|
ctx->device_name);
|
||||||
exit_value |= FSCK_REBOOT;
|
exit_value |= EXIT_DESTRUCT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ext2fs_test_valid(fs)) {
|
if (!ext2fs_test_valid(fs)) {
|
||||||
printf(_("\n%s: ********** WARNING: Filesystem still has "
|
printf(_("\n%s: ********** WARNING: Filesystem still has "
|
||||||
"errors **********\n\n"), ctx->device_name);
|
"errors **********\n\n"), ctx->device_name);
|
||||||
exit_value |= FSCK_UNCORRECTED;
|
exit_value |= EXIT_UNCORRECTED;
|
||||||
exit_value &= ~FSCK_NONDESTRUCT;
|
exit_value &= ~EXIT_NONDESTRUCT;
|
||||||
}
|
}
|
||||||
if (exit_value & FSCK_CANCELED)
|
if (exit_value & FSCK_CANCELED)
|
||||||
exit_value &= ~FSCK_NONDESTRUCT;
|
exit_value &= ~EXIT_NONDESTRUCT;
|
||||||
else {
|
else {
|
||||||
show_stats(ctx);
|
show_stats(ctx);
|
||||||
if (!(ctx->options & E2F_OPT_READONLY)) {
|
if (!(ctx->options & E2F_OPT_READONLY)) {
|
||||||
if (ext2fs_test_valid(fs)) {
|
if (ext2fs_test_valid(fs)) {
|
||||||
if (!(sb->s_state & EXT2_VALID_FS))
|
if (!(sb->s_state & EXT2_VALID_FS))
|
||||||
exit_value |= FSCK_NONDESTRUCT;
|
exit_value |= EXIT_NONDESTRUCT;
|
||||||
sb->s_state = EXT2_VALID_FS;
|
sb->s_state = EXT2_VALID_FS;
|
||||||
} else
|
} else
|
||||||
sb->s_state &= ~EXT2_VALID_FS;
|
sb->s_state &= ~EXT2_VALID_FS;
|
||||||
|
@ -282,7 +282,6 @@ static int kill_sent;
|
|||||||
static char *fstype;
|
static char *fstype;
|
||||||
static struct fs_info *filesys_info, *filesys_last;
|
static struct fs_info *filesys_info, *filesys_last;
|
||||||
static struct fsck_instance *instance_list;
|
static struct fsck_instance *instance_list;
|
||||||
static const char *fsck_prefix_path = "/sbin:/sbin/fs.d:/sbin/fs:/etc/fs:/etc";
|
|
||||||
static char *fsck_path;
|
static char *fsck_path;
|
||||||
static blkid_cache cache;
|
static blkid_cache cache;
|
||||||
|
|
||||||
@ -1349,7 +1348,6 @@ int fsck_main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
int i, status = 0;
|
int i, status = 0;
|
||||||
int interactive = 0;
|
int interactive = 0;
|
||||||
char *oldpath = getenv("PATH");
|
|
||||||
const char *fstab;
|
const char *fstab;
|
||||||
struct fs_info *fs;
|
struct fs_info *fs;
|
||||||
|
|
||||||
@ -1367,12 +1365,7 @@ int fsck_main(int argc, char *argv[])
|
|||||||
fstab = _PATH_MNTTAB;
|
fstab = _PATH_MNTTAB;
|
||||||
load_fs_info(fstab);
|
load_fs_info(fstab);
|
||||||
|
|
||||||
/* Update our search path to include uncommon directories. */
|
e2fs_set_sbin_path();
|
||||||
if (oldpath) {
|
|
||||||
fsck_path = bb_xasprintf("%s:%s", fsck_prefix_path, oldpath);
|
|
||||||
} else {
|
|
||||||
fsck_path = string_copy(fsck_prefix_path);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((num_devices == 1) || (serialize))
|
if ((num_devices == 1) || (serialize))
|
||||||
interactive = 1;
|
interactive = 1;
|
||||||
|
@ -10,4 +10,7 @@
|
|||||||
#define EXIT_UNCORRECTED 4
|
#define EXIT_UNCORRECTED 4
|
||||||
#define EXIT_ERROR 8
|
#define EXIT_ERROR 8
|
||||||
#define EXIT_USAGE 16
|
#define EXIT_USAGE 16
|
||||||
|
#define FSCK_CANCELED 32 /* Aborted with a signal or ^C */
|
||||||
#define EXIT_LIBRARY 128
|
#define EXIT_LIBRARY 128
|
||||||
|
|
||||||
|
extern void e2fs_set_sbin_path(void);
|
||||||
|
@ -685,8 +685,6 @@ static int set_os(struct ext2_super_block *sb, char *os)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PATH_SET "PATH=/sbin"
|
|
||||||
|
|
||||||
static void parse_extended_opts(struct ext2_super_block *sb_param,
|
static void parse_extended_opts(struct ext2_super_block *sb_param,
|
||||||
const char *opts)
|
const char *opts)
|
||||||
{
|
{
|
||||||
@ -801,17 +799,13 @@ static int PRS(int argc, char *argv[])
|
|||||||
int show_version_only = 0;
|
int show_version_only = 0;
|
||||||
ext2_ino_t num_inodes = 0;
|
ext2_ino_t num_inodes = 0;
|
||||||
errcode_t retval;
|
errcode_t retval;
|
||||||
char * oldpath = getenv("PATH");
|
|
||||||
char * extended_opts = 0;
|
char * extended_opts = 0;
|
||||||
const char * fs_type = 0;
|
const char * fs_type = 0;
|
||||||
blk_t dev_size;
|
blk_t dev_size;
|
||||||
long sysval;
|
long sysval;
|
||||||
|
|
||||||
/* Update our PATH to include /sbin */
|
/* Update our PATH to include /sbin */
|
||||||
if (oldpath) {
|
e2fs_set_sbin_path();
|
||||||
putenv (bb_xasprintf("%s:%s", PATH_SET, oldpath));
|
|
||||||
} else
|
|
||||||
putenv (PATH_SET);
|
|
||||||
|
|
||||||
tmp = getenv("MKE2FS_SYNC");
|
tmp = getenv("MKE2FS_SYNC");
|
||||||
if (tmp)
|
if (tmp)
|
||||||
|
@ -253,3 +253,14 @@ void make_journal_blocks(ext2_filsys fs, int journal_size, int journal_flags, in
|
|||||||
if(!quiet)
|
if(!quiet)
|
||||||
puts("done");
|
puts("done");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void e2fs_set_sbin_path(void)
|
||||||
|
{
|
||||||
|
char *oldpath = getenv("PATH");
|
||||||
|
/* Update our PATH to include /sbin */
|
||||||
|
#define PATH_SET "/sbin"
|
||||||
|
if (oldpath)
|
||||||
|
putenv (bb_xasprintf("%s:%s", PATH_SET, oldpath));
|
||||||
|
else
|
||||||
|
putenv (PATH_SET);
|
||||||
|
}
|
||||||
|
@ -18,4 +18,4 @@ extern int figure_journal_size(int size, ext2_filsys fs);
|
|||||||
extern void print_check_message(ext2_filsys fs);
|
extern void print_check_message(ext2_filsys fs);
|
||||||
extern void make_journal_device(char *journal_device, ext2_filsys fs, int quiet, int force);
|
extern void make_journal_device(char *journal_device, ext2_filsys fs, int quiet, int force);
|
||||||
extern void make_journal_blocks(ext2_filsys fs, int journal_size, int journal_flags, int quiet);
|
extern void make_journal_blocks(ext2_filsys fs, int journal_size, int journal_flags, int quiet);
|
||||||
|
extern void e2fs_set_sbin_path(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user