X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=e2fsck%2Fe2fsck.c;h=994f80e84215091feef021eeb2fe10026fa8b7ad;hb=14620a1d03b8aaffcbe00a6ac3541f8d2d7a7c22;hp=26f7b5e5831ce043ce7cf974a6005f3cb153fe5e;hpb=7dca4c88f166561031011ed27287818eaa343486;p=tools%2Fe2fsprogs.git diff --git a/e2fsck/e2fsck.c b/e2fsck/e2fsck.c index 26f7b5e..994f80e 100644 --- a/e2fsck/e2fsck.c +++ b/e2fsck/e2fsck.c @@ -9,6 +9,7 @@ * %End-Header% */ +#include "config.h" #include #include "e2fsck.h" @@ -37,8 +38,11 @@ errcode_t e2fsck_allocate_context(e2fsck_t *ret) time_env = getenv("E2FSCK_TIME"); if (time_env) context->now = strtoul(time_env, NULL, 0); - else + else { context->now = time(0); + if (context->now < 1262322000) /* January 1 2010 */ + context->flags |= E2F_FLAG_TIME_INSANE; + } *ret = context; return 0; @@ -52,7 +56,7 @@ errcode_t e2fsck_reset_context(e2fsck_t ctx) { int i; - ctx->flags = 0; + ctx->flags &= E2F_RESET_FLAGS; ctx->lost_and_found = 0; ctx->bad_lost_and_found = 0; if (ctx->inode_used_map) { @@ -183,6 +187,9 @@ void e2fsck_free_context(e2fsck_t ctx) if (ctx->device_name) ext2fs_free_mem(&ctx->device_name); + if (ctx->log_fn) + free(ctx->log_fn); + ext2fs_free_mem(&ctx); } @@ -214,6 +221,8 @@ int e2fsck_run(e2fsck_t ctx) for (i=0; (e2fsck_pass = e2fsck_passes[i]); i++) { if (ctx->flags & E2F_FLAG_RUN_RETURN) break; + if (e2fsck_mmp_update(ctx->fs)) + fatal_error(ctx, 0); e2fsck_pass(ctx); if (ctx->progress) (void) (ctx->progress)(ctx, 0, 0, 0);