X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=devices%2Fnative-parser.c;h=24713b19542da150de6b101c2adab1b036245f2b;hp=4f94d9da343cda29d9298bc23e4a42f19f16ebe3;hb=000a92b4fa909c432732ac3ed8f28eeeaeac70ee;hpb=f6de8493cf6645f8da027671f935cf22f8008a1b diff --git a/devices/native-parser.c b/devices/native-parser.c index 4f94d9d..24713b1 100644 --- a/devices/native-parser.c +++ b/devices/native-parser.c @@ -1,6 +1,7 @@ -#include "udev-helper.h" +#include "parser.h" #include "params.h" +#include "paths.h" #include #include @@ -10,7 +11,7 @@ const char *conf_filename = "/boot/petitboot.conf"; static struct boot_option *cur_opt; static struct device *dev; -static const char *mountpoint; +static const char *devpath; int device_added; int check_and_add_device(struct device *dev) @@ -47,13 +48,13 @@ static void set_boot_option_parameter(struct boot_option *opt, opt->description = strdup(value); else if (streq(name, "image")) - opt->boot_image_file = join_paths(mountpoint, value); + opt->boot_image_file = resolve_path(value, devpath); else if (streq(name, "icon")) - opt->icon_file = join_paths(mountpoint, value); + opt->icon_file = resolve_path(value, devpath); else if (streq(name, "initrd")) - opt->initrd_file = join_paths(mountpoint, value); + opt->initrd_file =resolve_path(value, devpath); else if (streq(name, "args")) opt->boot_args = strdup(value); @@ -72,7 +73,7 @@ static void set_device_parameter(struct device *dev, dev->description = strdup(value); else if (streq(name, "icon")) - dev->icon_file = join_paths(mountpoint, value); + dev->icon_file = resolve_path(value, devpath); } static int parameter(char *param_name, char *param_value) @@ -85,19 +86,17 @@ static int parameter(char *param_name, char *param_value) } -int parse(const char *devicepath, const char *_mountpoint) +int parse(const char *device) { char *filepath; int rc; - mountpoint = _mountpoint; - - filepath = join_paths(mountpoint, conf_filename); + filepath = resolve_path(conf_filename, device); cur_opt = NULL; dev = malloc(sizeof(*dev)); memset(dev, 0, sizeof(*dev)); - dev->id = strdup(devicepath); + dev->id = strdup(device); rc = pm_process(filepath, section, parameter); if (!rc)