Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=fwlive.git;a=commitdiff;h=8ea184a591e43a0de03c6aa09f8bac88e381c8d0

commit 8ea184a591e43a0de03c6aa09f8bac88e381c8d0
Author: James Buren <[email protected]>
Date:   Wed Oct 24 00:09:28 2012 -0500

add code for UI and actual formatting

diff --git a/src/format.c b/src/format.c
index e4650b4..6070314 100644
--- a/src/format.c
+++ b/src/format.c
@@ -207,6 +207,101 @@ static bool format_sort_devices(void)
return true;
}

+static bool format_process_devices(void)
+{
+  int i = 0;
+  int j = 0;
+  int padding = 0;
+  char text[256] = {0};
+  int percent = 0;
+  const char *program = 0;
+  char command[_POSIX_ARG_MAX] = {0};
+  char path[PATH_MAX] = {0};
+
+  for( ; targets[j] != 0 ; ++j )
+    ;
+
+  if(j < 10)
+    padding = 1;
+  else if(j < 100)
+    padding = 2;
+  else if(j < 1000)
+    padding = 3;
+  else if(j < 10000)
+    padding = 4;
+
+  for( ; i < j ; ++i )
+  {
+    struct format *target = targets[i];
+
+    snprintf(text,256,"(%*d/%d) - %s - 
%s",padding,i+1,j,target->devicepath,target->newfilesystem);
+
+    percent = (float) (i+1) / j * 100;
+
+    ui_dialog_progress(_("Formatting"),text,percent);
+
+    if(target->format)
+    {
+      if(strcmp(target->newfilesystem,"ext2") == 0)
+        program = "mkfs.ext2";
+      else if(strcmp(target->newfilesystem,"ext3") == 0)
+        program = "mkfs.ext3";
+      else if(strcmp(target->newfilesystem,"ext4") == 0)
+        program = "mkfs.ext4";
+      else if(strcmp(target->newfilesystem,"reiserfs") == 0)
+        program = "mkfs.reiserfs";
+      else if(strcmp(target->newfilesystem,"jfs") == 0)
+        program = "mkfs.jfs";
+      else if(strcmp(target->newfilesystem,"xfs") == 0)
+        program = "mkfs.xfs";
+      else if(strcmp(target->newfilesystem,"btrfs") == 0)
+        program = "mkfs.btrfs";
+      else if(strcmp(target->newfilesystem,"swap") == 0)
+        program = "mkswap";
+
+      snprintf(command,_POSIX_ARG_MAX,"%s %s 
%s",program,target->options,target->devicepath);
+
+      if(!execute(command,"/",0))
+      {
+        ui_dialog_progress(0,0,-1);
+        return false;
+      }
+    }
+
+    if(strcmp(target->newfilesystem,"swap") == 0)
+    {
+      snprintf(command,_POSIX_ARG_MAX,"swapon %s",target->devicepath);
+
+      if(!execute(command,"/",0))
+      {
+        ui_dialog_progress(0,0,-1);
+        return false;
+      }
+    }
+    else
+    {
+      snprintf(path,PATH_MAX,"%s%s",INSTALL_ROOT,target->mountpath);
+
+      if(!mkdir_recurse(path))
+      {
+        ui_dialog_progress(0,0,-1);
+        return false;
+      }
+
+      if(mount(target->devicepath,path,target->newfilesystem,0,0) == -1)
+      {
+        error(strerror(errno));
+        ui_dialog_progress(0,0,-1);
+        return false;
+      }
+    }
+  }
+
+  ui_dialog_progress(0,0,-1);
+
+  return true;
+}
+
static bool format_run(void)
{
if(!format_setup())
_______________________________________________
Frugalware-git mailing list
[email protected]
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to