Git-Url: http://git.frugalware.org/gitweb/gitweb.cgi?p=fwsetup-ng.git;a=commitdiff;h=6d246a7f6aa0f28c6431b9c566793a7f9ad0bfb2
commit 6d246a7f6aa0f28c6431b9c566793a7f9ad0bfb2 Author: James Buren <[email protected]> Date: Tue Sep 11 05:44:18 2012 -0500 add functions for opening a device and its disk label. diff --git a/src/local.h b/src/local.h index 58bdb61..28d8706 100644 --- a/src/local.h +++ b/src/local.h @@ -31,6 +31,12 @@ struct global bool netinstall; }; +struct parted +{ + PedDevice *device; + PedDisk *disk; +}; + struct install { char *name; @@ -60,6 +66,8 @@ extern bool size_to_string(char *s,size_t n,long long size,bool pad); extern int get_text_length(const char *s); extern bool execute(const char *command,const char *root,pid_t *cpid); extern void *malloc0(size_t size); +extern struct parted *parted_open(const char *path); +extern void parted_close(struct parted *parted); extern int get_text_screen_width(const char *s); extern bool get_text_screen_size(const char *text,int *width,int *height); extern bool get_button_screen_size(const char *text,int *width,int *height); @@ -96,7 +104,7 @@ extern bool ui_window_install(struct install *groups); extern FILE *logfile; extern int main(int argc,char **argv); -extern struct global g; +extern struct global *g; extern struct module install_module; extern struct module postconfig_module; extern struct module *modules[]; diff --git a/src/main.c b/src/main.c index ebbb1f7..a5631e8 100644 --- a/src/main.c +++ b/src/main.c @@ -31,9 +31,9 @@ extern int main(int argc,char **argv) for( PedDiskType *i = 0 ; (i = ped_disk_type_get_next(i)) != 0 ; ) { if(strcmp(i->name,"msdos") == 0) - g.doslabel = i; + g->doslabel = i; else if(strcmp(i->name,"gpt") == 0) - g.gptlabel = i; + g->gptlabel = i; } code = ui_main(argc,argv); @@ -45,13 +45,15 @@ extern int main(int argc,char **argv) return code; } -struct global g = +static struct global local = { .doslabel = 0, .gptlabel = 0, .netinstall = true }; +struct global *g = &local; + struct module *modules[] = { &install_module, diff --git a/src/utility.c b/src/utility.c index 828daec..8312d9c 100644 --- a/src/utility.c +++ b/src/utility.c @@ -194,6 +194,49 @@ extern void *malloc0(size_t size) return memset(malloc(size),0,size); } +extern struct parted *parted_open(const char *path) +{ + PedDevice *device = 0; + PedDiskType *disktype = 0; + PedDisk *disk = 0; + struct parted *parted = 0; + + if(path == 0) + { + errno = EINVAL; + fprintf(logfile,"%s: %s\n",__func__,strerror(errno)); + return 0; + } + + if((device = ped_device_get(path)) == 0) + return 0; + + if((disktype = ped_disk_probe(device)) != 0 && (disktype == g->doslabel || disktype == g->gptlabel)) + disk = ped_disk_new(device); + + parted = malloc0(sizeof(struct parted)); + + parted->device = device; + + parted->disk = disk; + + return parted; +} + +extern void parted_close(struct parted *parted) +{ + if(parted != 0) + { + if(parted->disk != 0) + ped_disk_destroy(parted->disk); + + if(parted->device != 0) + ped_device_destroy(parted->device); + + free(parted); + } +} + extern int get_text_screen_width(const char *s) { wchar_t wc = 0; _______________________________________________ Frugalware-git mailing list [email protected] http://frugalware.org/mailman/listinfo/frugalware-git
