* 94/03/06 - Added the checks interval from Uwe Ohse (uwe@tirka.gun.de)
*/
-#define _XOPEN_SOURCE /* for inclusion of strptime() */
+#define _XOPEN_SOURCE 500 /* for inclusion of strptime() */
#define _BSD_SOURCE /* for inclusion of strcasecmp() */
#include <fcntl.h>
#include <grp.h>
static time_t last_check_time;
static int print_label;
static int max_mount_count, mount_count, mount_flags;
-static unsigned long interval, reserved_ratio, reserved_blocks;
+static unsigned long interval, reserved_blocks;
+static double reserved_ratio;
static unsigned long resgid, resuid;
static unsigned short errors;
static int open_flag;
static void usage(void)
{
fprintf(stderr,
- _("Usage: %s [-c max-mounts-count] [-e errors-behavior] "
+ _("Usage: %s [-c max_mounts_count] [-e errors_behavior] "
"[-g group]\n"
- "\t[-i interval[d|m|w]] [-j] [-J journal-options]\n"
- "\t[-l] [-s sparse-flag] [-m reserved-blocks-percent]\n"
- "\t[-o [^]mount-options[,...]] [-r reserved-blocks-count]\n"
- "\t[-u user] [-C mount-count] [-L volume-label] "
- "[-M last-mounted-dir]\n"
- "\t[-O [^]feature[,...]] [-T last-check-time] [-U UUID]"
+ "\t[-i interval[d|m|w]] [-j] [-J journal_options]\n"
+ "\t[-l] [-s sparse_flag] [-m reserved_blocks_percent]\n"
+ "\t[-o [^]mount_options[,...]] [-r reserved_blocks_count]\n"
+ "\t[-u user] [-C mount_count] [-L volume_label] "
+ "[-M last_mounted_dir]\n"
+ "\t[-O [^]feature[,...]] [-T last_check_time] [-U UUID]"
" device\n"), program_name);
exit (1);
}
}
memset(&ts, 0, sizeof(ts));
#ifdef HAVE_STRPTIME
- strptime(optarg, "%Y%m%d%H%M%S", &ts);
+ strptime(str, "%Y%m%d%H%M%S", &ts);
#else
- sscanf(optarg, "%4d%2d%2d%2d%2d%2d", &ts.tm_year, &ts.tm_mon,
+ sscanf(str, "%4d%2d%2d%2d%2d%2d", &ts.tm_year, &ts.tm_mon,
&ts.tm_mday, &ts.tm_hour, &ts.tm_min, &ts.tm_sec);
ts.tm_year -= 1900;
ts.tm_mon -= 1;
tmp++;
break;
}
- if (*tmp || interval > (365 * 86400)) {
+ if (*tmp) {
com_err (program_name, 0,
_("bad interval - %s"), optarg);
usage();
EXT2_FLAG_JOURNAL_DEV_OK;
break;
case 'm':
- reserved_ratio = strtoul (optarg, &tmp, 0);
+ reserved_ratio = strtod(optarg, &tmp);
if (*tmp || reserved_ratio > 50) {
com_err (program_name, 0,
_("bad reserved block ratio - %s"),
#endif
if (argc && *argv)
program_name = *argv;
- initialize_ext2_error_table();
+ add_error_table(&et_ext2_error_table);
if (strcmp(get_progname(argv[0]), "findfs") == 0)
do_findfs(argc, argv);
exit(1);
}
sb = fs->super;
+ fs->flags &= ~EXT2_FLAG_MASTER_SB_ONLY;
if (print_label) {
/* For e2label emulation */
printf("%.*s\n", (int) sizeof(sb->s_volume_name),
sb->s_volume_name);
+ remove_error_table(&et_ext2_error_table);
exit(0);
}
retval = ext2fs_check_if_mounted(device_name, &mount_flags);
if (i_flag) {
sb->s_checkinterval = interval;
ext2fs_mark_super_dirty(fs);
- printf (_("Setting interval between check %lu seconds\n"), interval);
+ printf (_("Setting interval between checks to %lu seconds\n"), interval);
}
if (m_flag) {
- sb->s_r_blocks_count = (sb->s_blocks_count / 100)
- * reserved_ratio;
+ sb->s_r_blocks_count = e2p_percent(reserved_ratio,
+ sb->s_blocks_count);
ext2fs_mark_super_dirty(fs);
- printf (_("Setting reserved blocks percentage to %lu (%u blocks)\n"),
+ printf (_("Setting reserved blocks percentage to %g%% (%u blocks)\n"),
reserved_ratio, sb->s_r_blocks_count);
}
if (r_flag) {
- if (reserved_blocks >= sb->s_blocks_count) {
+ if (reserved_blocks >= sb->s_blocks_count/2) {
com_err (program_name, 0,
_("reserved blocks count is too big (%lu)"),
reserved_blocks);
if (l_flag)
list_super (sb);
+ remove_error_table(&et_ext2_error_table);
return (ext2fs_close (fs) ? 1 : 0);
}