Hi, Looks ok, ack. Regards, Hans On 11/16/2009 10:52 AM, Ales Kozumplik wrote:
This is a migration of the patch 22e2548cbb41a0c32fa3a0a2e67e67bbf3109155 from rhel5-branch, BZ#493052. --- loader/nfsinstall.c | 49 ++++++++++++++++++++++++++++++------------------- 1 files changed, 30 insertions(+), 19 deletions(-) diff --git a/loader/nfsinstall.c b/loader/nfsinstall.c index e405df9..3a89e34 100644 --- a/loader/nfsinstall.c +++ b/loader/nfsinstall.c @@ -58,11 +58,12 @@ /* boot flags */ extern uint64_t flags; -static int nfsGetSetup(char ** hostptr, char ** dirptr) { - struct newtWinEntry entries[3]; +static int nfsGetSetup(char ** hostptr, char ** dirptr, char ** optsptr) { + struct newtWinEntry entries[4]; char * buf; char * newServer = *hostptr ? strdup(*hostptr) : NULL; char * newDir = *dirptr ? strdup(*dirptr) : NULL; + char * newMountOpts = *optsptr ? strdup(*optsptr) : NULL; int rc; entries[0].text = _("NFS server name:"); @@ -77,11 +78,15 @@ static int nfsGetSetup(char ** hostptr, char ** dirptr) { entries[1].value =&newDir; entries[1].flags = NEWT_FLAG_SCROLL; - entries[2].text = NULL; - entries[2].value = NULL; - - if (asprintf(&buf, _("Please enter the server name and path to your %s " - "installation image."), getProductName()) == -1) { + entries[2].text = _("NFS mount options (optional):"); + entries[2].value =&newMountOpts; + entries[2].flags = NEWT_FLAG_SCROLL; + entries[3].text = NULL; + entries[3].value = NULL; + + if (asprintf(&buf, _("Please enter the server, path to your %s " + "installation image and optionally additional " + "NFS mount options."), getProductName()) == -1) { logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); abort(); } @@ -97,13 +102,16 @@ static int nfsGetSetup(char ** hostptr, char ** dirptr) { if (rc == 2) { if (newServer) free(newServer); if (newDir) free(newDir); + if (newMountOpts) free(newMountOpts); return LOADER_BACK; } if (*hostptr) free(*hostptr); if (*dirptr) free(*dirptr); + if (*optsptr) free(*optsptr); *hostptr = newServer; *dirptr = newDir; + *optsptr = newMountOpts; return 0; } @@ -175,7 +183,6 @@ char * mountNfsImage(struct installMethod * method, while (stage != NFS_STAGE_DONE) { switch (stage) { case NFS_STAGE_NFS: - logMessage(INFO, "going to do nfsGetSetup"); if (loaderData->method == METHOD_NFS&& loaderData->stage2Data) { host = ((struct nfsInstallData *)loaderData->stage2Data)->host; directory = ((struct nfsInstallData *)loaderData->stage2Data)->directory; @@ -207,9 +214,10 @@ char * mountNfsImage(struct installMethod * method, directory = strdup(directory); } } else { - char *substr, *tmp; + char *colonopts, *substr, *tmp; - if (nfsGetSetup(&host,&directory) == LOADER_BACK) { + logMessage(INFO, "going to do nfsGetSetup"); + if (nfsGetSetup(&host,&directory,&mountOpts) == LOADER_BACK) { loaderData->stage2Data = NULL; return NULL; } @@ -219,21 +227,22 @@ char * mountNfsImage(struct installMethod * method, */ substr = strstr(directory, ".img"); if (!substr || (substr&& *(substr+4) != '\0')) { - if (asprintf(&(loaderData->instRepo), "nfs:%s:%s", - host, directory) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); + if (mountOpts&& strlen(mountOpts)) { + CHECKED_ASPRINTF(&colonopts, ":%s", mountOpts); + } else { + colonopts = strdup(""); } - if (asprintf(&tmp, "nfs:%s:%s/images/install.img", - host, directory) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&(loaderData->instRepo), "nfs%s:%s:%s", + colonopts, host, directory); + CHECKED_ASPRINTF(&tmp, "nfs%s:%s:%s/images/install.img", + colonopts, host, directory); setStage2LocFromCmdline(tmp, loaderData); free(host); free(directory); + free(mountOpts); + free(colonopts); free(tmp); continue; } @@ -360,6 +369,8 @@ char * mountNfsImage(struct installMethod * method, free(host); free(directory); + if (mountOpts) + free(mountOpts); if (fullPath) free(fullPath);
_______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list