--- loader/method.c | 35 +++++++++++++++++++++++++++++------ 1 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/loader/method.c b/loader/method.c index 5b4f504..b4caba9 100644 --- a/loader/method.c +++ b/loader/method.c @@ -524,6 +524,8 @@ int getFileFromBlockDevice(char *device, char *path, char * dest) { }
void setStage2LocFromCmdline(char * arg, struct loaderData_s * ld) { + logMessage(INFO, "Setting stage2 from %s", arg); + if (!strncmp(arg, "nfs:", 4)) { ld->method = METHOD_NFS; ld->stage2Data = calloc(sizeof(struct nfsInstallData), 1); @@ -533,6 +535,12 @@ void setStage2LocFromCmdline(char * arg, struct loaderData_s * ld) { &(((struct nfsInstallData *)ld->stage2Data)->directory), &(((struct nfsInstallData *)ld->stage2Data)->mountOpts)); stripTrailingSlash(((struct nfsInstallData *)ld->stage2Data)->directory); + + logMessage(INFO, "method nfs - %s / %s / %s", + (((struct nfsInstallData *)ld->stage2Data)->host), + (((struct nfsInstallData *)ld->stage2Data)->directory), + (((struct nfsInstallData *)ld->stage2Data)->mountOpts) + ); } else if (!strncmp(arg, "nfsiso:", 7)) { ld->method = METHOD_NFS; ld->stage2Data = calloc(sizeof(struct nfsInstallData), 1); @@ -541,30 +549,45 @@ void setStage2LocFromCmdline(char * arg, struct loaderData_s * ld) { &(((struct nfsInstallData *)ld->stage2Data)->host), &(((struct nfsInstallData *)ld->stage2Data)->directory), &(((struct nfsInstallData *)ld->stage2Data)->mountOpts)); + + logMessage(INFO, "method nfsiso - %s / %s / %s", + (((struct nfsInstallData *)ld->stage2Data)->host), + (((struct nfsInstallData *)ld->stage2Data)->directory), + (((struct nfsInstallData *)ld->stage2Data)->mountOpts) + ); } else if (!strncmp(arg, "ftp:", 4) || !strncmp(arg, "http", 4)) { ld->method = METHOD_URL; ld->stage2Data = calloc(sizeof(urlInstallData), 1); ((urlInstallData *)ld->stage2Data)->url = strdup(arg); + + logMessage(INFO, "method url - %s", ((urlInstallData *)ld->stage2Data)->url); } else if (!strncmp(arg, "cdrom:", 6)) { ld->method = METHOD_CDROM; + + logMessage(INFO, "method cdrom"); } else if (!strncmp(arg, "harddrive:", 10) || !strncmp(arg, "hd:", 3)) { size_t offset;
- arg += strcspn(arg, ":"); - if (!*arg || !*(arg+1)) - return; - arg += 1; + arg += strcspn(arg, ":"); + if (!*arg || !*(arg+1)) + return; + arg += 1; offset = strcspn(arg, ":");
ld->method = METHOD_HD; ld->stage2Data = calloc(sizeof(struct hdInstallData), 1); ((struct hdInstallData *)ld->stage2Data)->partition = strndup(arg, offset); - arg += offset; - if (*arg && *(arg+1)) + arg += offset; + if (*arg && *(arg+1)) ((struct hdInstallData *)ld->stage2Data)->directory = strdup(arg+1); else ((struct hdInstallData *)ld->stage2Data)->directory = NULL; + + logMessage(INFO, "method hd - %s / %s", + ((struct hdInstallData *)ld->stage2Data)->partition, + ((struct hdInstallData *)ld->stage2Data)->directory + ); } }
This lets it handle things like:
repo=hd:UUID=A1EA-85CC:/ stage2=hd:LABEL="Fedora" --- loader/readvars.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/loader/readvars.c b/loader/readvars.c index b453175..da175c3 100644 --- a/loader/readvars.c +++ b/loader/readvars.c @@ -62,7 +62,7 @@ GHashTable *readvars_parse_string(gchar *contents) { }
while (i < argc) { - gchar **tokens = g_strsplit(argv[i], "=", 0); + gchar **tokens = g_strsplit(argv[i], "=", 2); guint len = g_strv_length(tokens); gchar *key = NULL, *value = NULL; e = NULL;
@@ -533,6 +535,12 @@ void setStage2LocFromCmdline(char * arg, struct loaderData_s * ld) { &(((struct nfsInstallData *)ld->stage2Data)->directory), &(((struct nfsInstallData *)ld->stage2Data)->mountOpts)); stripTrailingSlash(((struct nfsInstallData *)ld->stage2Data)->directory);
logMessage(INFO, "method nfs - %s / %s / %s",
(((struct nfsInstallData *)ld->stage2Data)->host),
(((struct nfsInstallData *)ld->stage2Data)->directory),
(((struct nfsInstallData *)ld->stage2Data)->mountOpts)
} else if (!strncmp(arg, "nfsiso:", 7)) { ld->method = METHOD_NFS; ld->stage2Data = calloc(sizeof(struct nfsInstallData), 1););
Just nitpicking, but using slashes for the field separators is probably going to look confusing given that directory can contain slashes. Pipes or something else might be more legible.
Aside from that, these both look fine. The second one in particular is a good find.
- Chris
anaconda-devel@lists.stg.fedoraproject.org