[Frugalware-darcs] setup-current: formatdisk: new functions:
selfomatmode(), selfs(), mkfss(), formatdev()
VMiklos
vmiklos at frugalware.org
Thu Mar 16 17:54:44 CET 2006
[formatdisk: new functions: selfomatmode(), selfs(), mkfss(), formatdev()
VMiklos <vmiklos at frugalware.org>**20051111211627
mountdev() is only a fake function currently
] {
hunk ./src/plugins/formatdisk.c 172
+char *selformatmode(char *dev)
+{
+ int modenum=3;
+ char *modes[] =
+ {
+ "format", _("Quick format with no bad block checking"),
+ "check", _("Slow format that checks for bad blocks"),
+ "noformat", _("Do not format, just mount the partition")
+ };
+
+ dialog_vars.backtitle=gen_backtitle(_("Formatting partitions"));
+ dlg_put_backtitle();
+ dlg_clear();
+ fw_menu(g_strdup_printf(_("Format %s"), dev),
+ g_strdup_printf(_("If %s has not been formatted, you should "
+ "format it.\n"
+ "NOTE: This will erase all data on %s. Would you like to "
+ "format this partition?"), dev, dev),
+ 0, 0, 0, modenum, modes);
+
+ return(strdup(dialog_vars.input_result));
+}
+
+char *selfs(char *dev)
+{
+ int fsnum=4;
+ char *fss[] =
+ {
+ "ext2", _("Standard Linux ext2fs filesystem"),
+ "ext3", _("Journaling version of the ext2fs filesystem"),
+ "reiserfs", _("ans Reiser's journaling filesystem"),
+ "xfs", _("SGI's journaling filesystem")
+ };
+
+ dialog_vars.backtitle=gen_backtitle(_("Formatting partitions"));
+ dlg_put_backtitle();
+ dlg_clear();
+ fw_menu(g_strdup_printf(_("Selecting filesystem for %s"), dev),
+ g_strdup_printf(_("Please select the type of filesystem to "
+ "use for %s."), dev), 0, 0, 0, fsnum, fss);
+
+ return(strdup(dialog_vars.input_result));
+}
+
hunk ./src/plugins/formatdisk.c 283
+int mkfss(char *dev, char *fs, int check)
+{
+ char *opts=NULL;
+
+ opts = strdup(check ? "-c" : "");
+
+ fw_info(_("Formatting"), g_strdup_printf(check ?
+ _("Creating %s filesystem on %s") :
+ _("Ccreating %s filesystem on %s and checking for bad blocks"),
+ fs, dev));
+ // TODO: umount the filesystem if necessary
+ if(!strcmp(fs, "ext2"))
+ return(fw_system(g_strdup_printf("mke2fs %s %s", opts, dev)));
+ else if(!strcmp(fs, "ext3"))
+ return(fw_system(g_strdup_printf("mke2fs -j %s %s", opts, dev)));
+ else if(!strcmp(fs, "reiserfs"))
+ return(fw_system(g_strdup_printf("echo y |mkreiserfs %s", dev)));
+ else if(!strcmp(fs, "jfs"))
+ return(fw_system(g_strdup_printf("mkfs.jfs -q %s %s", opts, dev)));
+ else if(!strcmp(fs, "xfs"))
+ return(fw_system(g_strdup_printf("mkfs.xfs -f %s", dev)));
+ // never reached
+ return(1);
+}
+
+int formatdev(char *dev)
+{
+ char *mode, *fs;
+ int check=0;
+
+ dialog_vars.input_result[0]='\0';
+ mode = selformatmode(dev);
+
+ // if don't have to format, nothing to do
+ if(!strcmp("noformat", mode))
+ return(0);
+ if(!strcmp("check", mode))
+ check=1;
+
+ fs = selfs(dev);
+ return(mkfss(dev, fs, check));
+}
+
+int mountdev(char *dev, char *mountpoint, GList **config)
+{
+ char *type=NULL;
+ FILE* fp;
+
+ // open fstab
+ if ((fp = fopen((char*)data_get(*config, "fstab"), "a")) == NULL)
+ {
+ perror(_("Could not open output file for writing"));
+ return(1);
+ }
+
+ // TODO: type, mount, etc
+
+ fprintf(fp, "%-16s %-16s %-11s %-16s %-3s %s\n", dev, mountpoint, type, "defaults", "1", "1");
+ fclose(fp);
+ return(0);
+}
+
hunk ./src/plugins/formatdisk.c 377
+ // root partition
hunk ./src/plugins/formatdisk.c 379
+ formatdev(ptr);
}
More information about the Frugalware-darcs
mailing list