Here's a cleaner version of this patch. Also, I tested it on another machine (not my laptop) and it works fine. Is libparted not completely reliable? -- michael cardenas | lead software engineer | lindows.com | hyperpoem.net "Time itself is being. All being is time" - Dogen
--- partkit.c.orig Tue Aug 27 08:23:42 2002 +++ partkit.c Tue Aug 27 10:06:43 2002 @@ -406,24 +406,67 @@ } +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; + +} 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 + ped_init(); + 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); + free(ptr); + /*FIXME: how to get a default device? */ client->command (client, "subst", "partkit/select_device", "default", ptr, NULL); @@ -452,6 +495,8 @@ finished = 1; } while (!finished); + + ped_done(); return 0; }
Attachment:
pgpEMUQwzCoHn.pgp
Description: PGP signature