[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: cvs commit to debian-installer/tools/partkit by wart



On Wed, Sep 04, 2002 at 01:05:51PM +0400, Wartan Hachaturow wrote:
> On Tue, Sep 03, 2002 at 09:55:01PM -0700, Michael Cardenas wrote:
> 
> > you ever get around to adding in my patch? I can update it to 1.6 for
> > you if you like. 
> 
> Sorry, been a bit busy with the start of term ;)
> If you'll update it, fine -- send the patch to me/to the list, and
> someone/me would commit it :)
> 

My new patch, synced with 1.6 (just removing ped_init and ped_done) is
attached. Please commit it. 

thanks

  michael

-- 
michael cardenas | lead software engineer | lindows.com | hyperpoem.net

"There is only one great adventure and that is inwards towards the self."
- Henry Miller
--- partkit.c.orig	Tue Aug 27 08:23:42 2002
+++ partkit.c	Wed Sep  4 17:55:47 2002
@@ -26,6 +26,9 @@
 #define PARTKIT_TABLE_SIZE 2048
 #define PARTKIT_PART_LIST_SIZE 128
 
+/* I can't understand why they did removed it. */
+#define PED_PARTITION_PRIMARY 0
+
 #include <string.h>
 #include <parted/parted.h>
 #include <debconfclient.h>
@@ -91,7 +94,7 @@
 
   ptr = table;
 
-  disk = ped_disk_open (*dev);
+  disk = ped_disk_new (*dev);
 
   if (!disk)
     goto error;
@@ -170,7 +173,7 @@
       ptr += snprintf (ptr, PARTKIT_TABLE_SIZE - (ptr - table), "\n");
     }
 
-  ped_disk_close (disk);
+  ped_disk_destroy (disk);
   if ((ptr - table) > PARTKIT_TABLE_SIZE)
     goto error;
   return table;
@@ -199,7 +202,7 @@
 
   ptr = part_list;
 
-  disk = ped_disk_open (dev);
+  disk = ped_disk_new (dev);
 
   if (!disk)
     goto error;
@@ -217,7 +220,7 @@
 		       "%-5d ", part->num);
     }
 
-  ped_disk_close (disk);
+  ped_disk_destroy (disk);
 
   if ((ptr - part_list) > PARTKIT_PART_LIST_SIZE)
     goto error;
@@ -242,10 +245,10 @@
   char *ptr, *endptr = NULL;
   char *table;
 
-  disk = ped_disk_open (dev);
+  disk = ped_disk_new (dev);
   if (!disk)
     goto error;
-  constraint = ped_constraint_any (disk);
+  constraint = ped_constraint_any (disk->dev);
   if (!constraint)
     goto error_close_disk;
 
@@ -326,9 +329,9 @@
   if (!ped_disk_add_partition (disk, part, constraint))
     goto error_destroy_part;
 
-  ped_disk_write (disk);
+  ped_disk_commit (disk);
   ped_constraint_destroy (constraint);
-  ped_disk_close (disk);
+  ped_disk_destroy (disk);
   return 1;
 
 error_destroy_part:
@@ -336,7 +339,7 @@
 error_destroy_constraint:
   ped_constraint_destroy (constraint);
 error_close_disk:
-  ped_disk_close (disk);
+  ped_disk_destroy (disk);
 error:
   return 0;
 }
@@ -349,7 +352,7 @@
   PedPartition *part;
   char *ptr;
 
-  disk = ped_disk_open (dev);
+  disk = ped_disk_new (dev);
 
   if (!disk)
     goto error;
@@ -394,40 +397,99 @@
     }
 
   ped_disk_delete_partition (disk, part);
-  ped_disk_write (disk);
-  ped_disk_close (disk);
+  ped_disk_commit (disk);
+  ped_disk_destroy (disk);
   return 1;
 
 error_close_disk:
-  ped_disk_close (disk);
+  ped_disk_destroy (disk);
 error:
   partkit_error (0);
   return -1;
 
 }
 
+char *partkit_get_devices(PedDevice *dev)
+{
+  char *ptr = 0;
+  int drivelistlen = 0;
+
+  ped_device_probe_all();
+
+  //mbc - unfortunately, do two passes for now to do the malloc...
+  while((dev = ped_device_get_next(dev)))
+    {
+      drivelistlen += strlen(dev->path);
+      drivelistlen += 2;
+    }
+
+  if(drivelistlen)
+     {
+	 ptr = (char *)malloc(drivelistlen);
+	  
+	 if(ptr)
+	   {
+	     *ptr = 0;
+	     dev = NULL;
+	  
+	     while((dev = ped_device_get_next(dev)))
+	       {
+		 if(*ptr == 0)
+		   strcpy(ptr, dev->path);
+		 else if (*ptr != 0)
+		   {
+		     strcat(ptr, ", ");
+		     strcat(ptr, dev->path);
+		   }
+	       }
+	   }
+	 
+     }
+
+  return ptr;
+
+}
+
+//mbc - for now, just use the first device
+char *partkit_get_default_device(void)
+{
+  PedDevice *dev = NULL;
+  char *ptr = 0;
+ 
+  dev = ped_device_get_next(dev);
+
+  ptr = (char *)malloc(strlen(dev->path));
+
+  strcpy(ptr, dev->path);
+
+  return ptr;
+}
 
 int
 main (int argc, char *argv[])
 {
   int finished = 0;
   PedDevice *dev = NULL;
-  char *ptr;
+  char *ptr = 0;
   client = debconfclient_new ();
   client->command (client, "title", "Partition Editor", NULL);
 
+  //mbc - should install an exception handler here
+
   do
     {
-      /* FIXME: how to get a list of available devices ? */
-      ptr = /* get_device_list() */ "/dev/hdb";
-
+      ptr = partkit_get_devices(dev);
 
       client->command (client, "subst", "partkit/select_device", "choices",
 		       ptr, NULL);
-      /*FIXME: how to get a default device? */
+      free(ptr);
+
+      ptr = partkit_get_default_device();
+      
       client->command (client, "subst", "partkit/select_device", "default",
 		       ptr, NULL);
 
+      free(ptr);
 
       if ((dev = ped_device_get (argv[1])) == NULL)
 	partkit_error (1);

Attachment: pgpYSoM443fjh.pgp
Description: PGP signature


Reply to: