create e2fs_set_sbin_path(), noticed by Tito, Thanks
diff --git a/e2fsprogs/Makefile.in b/e2fsprogs/Makefile.in
index 90aac63..181ec70 100644
--- a/e2fsprogs/Makefile.in
+++ b/e2fsprogs/Makefile.in
@@ -57,7 +57,7 @@
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 $(BLKID_OBJS) $(UUID_OBJS)
+E2FSPROGS-$(CONFIG_FSCK) += fsck.o util.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/e2fsck.c b/e2fsprogs/e2fsck.c
index 42ee8ab..8b96b50 100644
--- a/e2fsprogs/e2fsck.c
+++ b/e2fsprogs/e2fsck.c
@@ -79,18 +79,6 @@
#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
* support
*/
@@ -14255,7 +14243,7 @@
ctx->flags |= E2F_FLAG_ABORT;
if (ctx->flags & E2F_FLAG_SETJMP_OK)
longjmp(ctx->abort_loc, 1);
- exit(FSCK_ERROR);
+ exit(EXIT_ERROR);
}
#endif
@@ -14461,7 +14449,7 @@
ext2fs_mark_super_dirty(fs);
ext2fs_close(fs);
}
- exit(FSCK_UNCORRECTED);
+ exit(EXIT_UNCORRECTED);
}
#ifdef RESOURCE_TRACK
@@ -14742,7 +14730,7 @@
" -L bad_blocks_file Set badblocks list\n"
));
- exit(FSCK_USAGE);
+ exit(EXIT_USAGE);
}
#endif
@@ -14881,7 +14869,7 @@
/*
* 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.
*/
static void check_if_skip(e2fsck_t ctx)
@@ -14949,7 +14937,7 @@
ext2fs_close(fs);
ctx->fs = NULL;
e2fsck_free_context(ctx);
- exit(FSCK_OK);
+ exit(EXIT_OK);
}
/*
@@ -15079,8 +15067,6 @@
return 0;
}
-#define PATH_SET "PATH=/sbin"
-
static void reserve_stdio_fds(void)
{
int fd;
@@ -15379,14 +15365,14 @@
if (cflag || bad_blocks_file) {
fprintf(stderr, _("Incompatible options not "
"allowed when byte-swapping.\n"));
- exit(FSCK_USAGE);
+ exit(EXIT_USAGE);
}
}
#endif
if (cflag && bad_blocks_file) {
fprintf(stderr, _("The -c and the -l/-L options may "
"not be both used at the same time.\n"));
- exit(FSCK_USAGE);
+ exit(EXIT_USAGE);
}
/*
* Set up signal action
@@ -15405,22 +15391,8 @@
sigaction(SIGUSR2, &sa, 0);
/* Update our PATH to include /sbin if we need to run badblocks */
- if (cflag) {
- char *oldpath = getenv("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);
- }
+ if (cflag)
+ e2fs_set_sbin_path();
#ifdef __CONFIG_JBD_DEBUG__E2FS
if (getenv("E2FSCK_JBD_DEBUG"))
journal_enable_debug = atoi(getenv("E2FSCK_JBD_DEBUG"));
@@ -15434,7 +15406,7 @@
int e2fsck_main (int argc, char *argv[])
{
errcode_t retval;
- int exit_value = FSCK_OK;
+ int exit_value = EXIT_OK;
ext2_filsys fs = 0;
io_manager io_ptr;
struct ext2_super_block *sb;
@@ -15469,7 +15441,7 @@
if (retval) {
com_err("e2fsck", retval,
_("while trying to initialize program"));
- exit(FSCK_ERROR);
+ exit(EXIT_ERROR);
}
reserve_stdio_fds();
@@ -15484,7 +15456,7 @@
if (show_version_only) {
fprintf(stderr, _("\tUsing %s, %s\n"),
error_message(EXT2_ET_BASE), lib_ver_date);
- exit(FSCK_OK);
+ exit(EXIT_OK);
}
check_mount(ctx);
@@ -15756,30 +15728,30 @@
mtrace_print("Cleanup");
#endif
if (ext2fs_test_changed(fs)) {
- exit_value |= FSCK_NONDESTRUCT;
+ exit_value |= EXIT_NONDESTRUCT;
if (!(ctx->options & E2F_OPT_PREEN))
printf(_("\n%s: ***** FILE SYSTEM WAS MODIFIED *****\n"),
ctx->device_name);
if (ctx->mount_flags & EXT2_MF_ISROOT) {
printf(_("%s: ***** REBOOT LINUX *****\n"),
ctx->device_name);
- exit_value |= FSCK_REBOOT;
+ exit_value |= EXIT_DESTRUCT;
}
}
if (!ext2fs_test_valid(fs)) {
printf(_("\n%s: ********** WARNING: Filesystem still has "
"errors **********\n\n"), ctx->device_name);
- exit_value |= FSCK_UNCORRECTED;
- exit_value &= ~FSCK_NONDESTRUCT;
+ exit_value |= EXIT_UNCORRECTED;
+ exit_value &= ~EXIT_NONDESTRUCT;
}
if (exit_value & FSCK_CANCELED)
- exit_value &= ~FSCK_NONDESTRUCT;
+ exit_value &= ~EXIT_NONDESTRUCT;
else {
show_stats(ctx);
if (!(ctx->options & E2F_OPT_READONLY)) {
if (ext2fs_test_valid(fs)) {
if (!(sb->s_state & EXT2_VALID_FS))
- exit_value |= FSCK_NONDESTRUCT;
+ exit_value |= EXIT_NONDESTRUCT;
sb->s_state = EXT2_VALID_FS;
} else
sb->s_state &= ~EXT2_VALID_FS;
diff --git a/e2fsprogs/fsck.c b/e2fsprogs/fsck.c
index 7799fae..36eebf2 100644
--- a/e2fsprogs/fsck.c
+++ b/e2fsprogs/fsck.c
@@ -282,7 +282,6 @@
static char *fstype;
static struct fs_info *filesys_info, *filesys_last;
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 blkid_cache cache;
@@ -1349,7 +1348,6 @@
{
int i, status = 0;
int interactive = 0;
- char *oldpath = getenv("PATH");
const char *fstab;
struct fs_info *fs;
@@ -1367,12 +1365,7 @@
fstab = _PATH_MNTTAB;
load_fs_info(fstab);
- /* Update our search path to include uncommon directories. */
- if (oldpath) {
- fsck_path = bb_xasprintf("%s:%s", fsck_prefix_path, oldpath);
- } else {
- fsck_path = string_copy(fsck_prefix_path);
- }
+ e2fs_set_sbin_path();
if ((num_devices == 1) || (serialize))
interactive = 1;
diff --git a/e2fsprogs/fsck.h b/e2fsprogs/fsck.h
index 537b266..bd22fbb 100644
--- a/e2fsprogs/fsck.h
+++ b/e2fsprogs/fsck.h
@@ -10,4 +10,7 @@
#define EXIT_UNCORRECTED 4
#define EXIT_ERROR 8
#define EXIT_USAGE 16
+#define FSCK_CANCELED 32 /* Aborted with a signal or ^C */
#define EXIT_LIBRARY 128
+
+extern void e2fs_set_sbin_path(void);
diff --git a/e2fsprogs/mke2fs.c b/e2fsprogs/mke2fs.c
index ab50717..9c4f1c4 100644
--- a/e2fsprogs/mke2fs.c
+++ b/e2fsprogs/mke2fs.c
@@ -685,8 +685,6 @@
return 0;
}
-#define PATH_SET "PATH=/sbin"
-
static void parse_extended_opts(struct ext2_super_block *sb_param,
const char *opts)
{
@@ -801,17 +799,13 @@
int show_version_only = 0;
ext2_ino_t num_inodes = 0;
errcode_t retval;
- char * oldpath = getenv("PATH");
char * extended_opts = 0;
const char * fs_type = 0;
blk_t dev_size;
long sysval;
/* Update our PATH to include /sbin */
- if (oldpath) {
- putenv (bb_xasprintf("%s:%s", PATH_SET, oldpath));
- } else
- putenv (PATH_SET);
+ e2fs_set_sbin_path();
tmp = getenv("MKE2FS_SYNC");
if (tmp)
diff --git a/e2fsprogs/util.c b/e2fsprogs/util.c
index 58f9bbb..e59b18c 100644
--- a/e2fsprogs/util.c
+++ b/e2fsprogs/util.c
@@ -253,3 +253,14 @@
if(!quiet)
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);
+}
diff --git a/e2fsprogs/util.h b/e2fsprogs/util.h
index f6dc08a..4634b08 100644
--- a/e2fsprogs/util.h
+++ b/e2fsprogs/util.h
@@ -18,4 +18,4 @@
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_blocks(ext2_filsys fs, int journal_size, int journal_flags, int quiet);
-
+extern void e2fs_set_sbin_path(void);