From: Jeremy Kerr Date: Wed, 4 Apr 2007 09:48:11 +0000 (+1000) Subject: Remove duplicate prepend_mountpoint() functions. X-Git-Tag: v0.0.1~22 X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=commitdiff_plain;h=f6de8493cf6645f8da027671f935cf22f8008a1b;hp=44722ec66794900881347462b6b6f32e430159af;ds=sidebyside Remove duplicate prepend_mountpoint() functions. Replace prepend_mountpoint() with join_paths(), and make it available to all parsers, instead of duplicating it in each. Signed-off-by: Jeremy Kerr --- diff --git a/devices/native-parser.c b/devices/native-parser.c index bb1ca51..4f94d9d 100644 --- a/devices/native-parser.c +++ b/devices/native-parser.c @@ -13,20 +13,6 @@ static struct device *dev; static const char *mountpoint; int device_added; -static char *prepend_mountpoint(const char *path) -{ - char *full_path; - - full_path = malloc(strlen(path) + strlen(mountpoint) + 2); - - strcpy(full_path, mountpoint); - if (path[0] != '/') - strcat(full_path, "/"); - strcat(full_path, path); - - return full_path; -} - int check_and_add_device(struct device *dev) { if (!dev->icon_file) @@ -61,13 +47,13 @@ static void set_boot_option_parameter(struct boot_option *opt, opt->description = strdup(value); else if (streq(name, "image")) - opt->boot_image_file = prepend_mountpoint(value); + opt->boot_image_file = join_paths(mountpoint, value); else if (streq(name, "icon")) - opt->icon_file = prepend_mountpoint(value); + opt->icon_file = join_paths(mountpoint, value); else if (streq(name, "initrd")) - opt->initrd_file = prepend_mountpoint(value); + opt->initrd_file = join_paths(mountpoint, value); else if (streq(name, "args")) opt->boot_args = strdup(value); @@ -86,7 +72,7 @@ static void set_device_parameter(struct device *dev, dev->description = strdup(value); else if (streq(name, "icon")) - dev->icon_file = prepend_mountpoint(value); + dev->icon_file = join_paths(mountpoint, value); } static int parameter(char *param_name, char *param_value) @@ -106,7 +92,7 @@ int parse(const char *devicepath, const char *_mountpoint) mountpoint = _mountpoint; - filepath = prepend_mountpoint(conf_filename); + filepath = join_paths(mountpoint, conf_filename); cur_opt = NULL; dev = malloc(sizeof(*dev)); diff --git a/devices/udev-helper.c b/devices/udev-helper.c index c113e55..da12129 100644 --- a/devices/udev-helper.c +++ b/devices/udev-helper.c @@ -568,3 +568,19 @@ int main(int argc, char **argv) } return rc; } + +/* convenience function for parsers */ +char *join_paths(const char *a, const char *b) +{ + char *full_path; + + full_path = malloc(strlen(a) + strlen(b) + 2); + + strcpy(full_path, a); + if (b[0] != '/') + strcat(full_path, "/"); + strcat(full_path, b); + + return full_path; +} + diff --git a/devices/udev-helper.h b/devices/udev-helper.h index 10e5d2b..6b9ba9d 100644 --- a/devices/udev-helper.h +++ b/devices/udev-helper.h @@ -6,6 +6,8 @@ int add_device(const struct device *dev); int add_boot_option(const struct boot_option *opt); void free_boot_option(struct boot_option *opt); +char *join_paths(const char *a, const char *b); + int mount_device(const char *dev_path, char *mount_path); struct parser { diff --git a/devices/yaboot-parser.c b/devices/yaboot-parser.c index ee1b992..ee14cb1 100644 --- a/devices/yaboot-parser.c +++ b/devices/yaboot-parser.c @@ -86,20 +86,6 @@ make_params(char *label, char *params) return buffer; } -static char *prepend_mountpoint(const char *path) -{ - char *full_path; - - full_path = malloc(strlen(path) + strlen(mountpoint) + 2); - - strcpy(full_path, mountpoint); - if (path[0] != '/') - strcat(full_path, "/"); - strcat(full_path, path); - - return full_path; -} - static int check_and_add_device(struct device *dev) { if (!dev->icon_file) @@ -117,13 +103,13 @@ void process_image(char *label) opt.name = label; cfgopt = cfg_get_strg(label, "image"); - opt.boot_image_file = prepend_mountpoint(cfgopt); + opt.boot_image_file = join_paths(mountpoint, cfgopt); if (cfgopt == defimage) printf("This one is default. What do we do about it?\n"); cfgopt = cfg_get_strg(label, "initrd"); if (cfgopt) - opt.initrd_file = prepend_mountpoint(cfgopt); + opt.initrd_file = join_paths(mountpoint, cfgopt); opt.boot_args = make_params(label, NULL); @@ -145,12 +131,12 @@ static int yaboot_parse(const char *devicepath, const char *_mountpoint) mountpoint = _mountpoint; - filepath = prepend_mountpoint("/etc/yaboot.conf"); + filepath = join_paths(mountpoint, "/etc/yaboot.conf"); fd = open(filepath, O_RDONLY); if (fd < 0) { free(filepath); - filepath = prepend_mountpoint("/yaboot.conf"); + filepath = join_paths(mountpoint, "/yaboot.conf"); fd = open(filepath, O_RDONLY); if (fd < 0)