This patch adds the warning Anton requested,
-=------------------------=------------------------------->
WARNING: Every sanity checks passed and only the DANGEROUS
operations left. Please make sure all your important data
had been backed up in case of an unexpected failure!
Are you sure you want to proceed (y/[n])?
OK quitting. NO CHANGES has been made to your NTFS volume.
<----------------------------------------------------------The question will be skipped if the -f (force) used [e.g. for
automatic testing]. This patch needs the earlier sent
ntfsresize-usage-cleanup.diff patch.	Szaka

(Logical change 1.11)
edge.strict_endians
cantab.net!aia21 2002-11-17 16:12:16 +00:00
parent adc4069576
commit 54e91a485a
1 changed files with 28 additions and 2 deletions

View File

@ -49,6 +49,11 @@ const char *EXEC_NAME = "ntfsresize";
#define NTFS_REPORT_BANNER "\nReport bugs to linux-ntfs-dev@lists.sf.net. " \
"Homepage: http://linux-ntfs.sf.net\n"
#define NTFS_RESIZE_WARNING \
"WARNING: Every sanity checks passed and only the DANGEROUS \n" \
"operations left. Please make sure all your important data \n" \
"had been backed up in case of an unexpected failure!\n"
struct {
int verbose;
int debug;
@ -132,6 +137,24 @@ void usage()
}
/* Copy-paste from e2fsprogs */
void proceed_question(void)
{
char buf[256];
const char *short_yes = "yY";
fflush(stdout);
fflush(stderr);
printf("Are you sure you want to proceed (y/[n])? ");
buf[0] = 0;
fgets(buf, sizeof(buf), stdin);
if (strchr(short_yes, buf[0]) == 0) {
printf("OK quitting. NO CHANGES has been made to your NTFS volume.\n");
exit(1);
}
}
s64 get_new_volume_size(char *s)
{
s64 size;
@ -716,7 +739,7 @@ void mount_volume()
perr_exit("ntfs_mount failed");
if (vol->flags & VOLUME_IS_DIRTY)
if (!opt.force--)
if (opt.force-- <= 0)
err_exit("Volume is dirty. Run chkdsk and "
"please try again (or see -f option).\n");
@ -800,7 +823,10 @@ int main(int argc, char **argv)
advise_on_resize();
}
/* FIXME: first do all checks before any write attempt */
if (opt.force-- <= 0) {
printf(NTFS_RESIZE_WARNING);
proceed_question();
}
prepare_volume_fixup();