This is to avoid having to copy-paste the asprintf-log-abort if branch all the time. --- loader/loader.h | 6 +++ loader/nfsinstall.c | 125 +++++++++++++-------------------------------------- 2 files changed, 38 insertions(+), 93 deletions(-) diff --git a/loader/loader.h b/loader/loader.h index f942b7e..039c72a 100644 --- a/loader/loader.h +++ b/loader/loader.h @@ -185,4 +185,10 @@ struct loaderData_s { #define LIBPATH "/lib:/usr/lib:/usr/X11R6/lib:/usr/kerberos/lib:/mnt/usr/lib:/mnt/sysimage/lib:/mnt/sysimage/usr/lib" #endif +#define CHECKED_ASPRINTF(...) \ + if (asprintf( __VA_ARGS__ ) == -1) { \ + logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); \ + abort(); \ + } + #endif diff --git a/loader/nfsinstall.c b/loader/nfsinstall.c index e405df9..0eb3cbe 100644 --- a/loader/nfsinstall.c +++ b/loader/nfsinstall.c @@ -68,24 +68,16 @@ static int nfsGetSetup(char ** hostptr, char ** dirptr) { entries[0].text = _("NFS server name:"); entries[0].value = &newServer; entries[0].flags = NEWT_FLAG_SCROLL; - - if (asprintf(&entries[1].text, _("%s directory:"), - getProductName()) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + + CHECKED_ASPRINTF(&entries[1].text, _("%s directory:"), getProductName()); 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) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } - + CHECKED_ASPRINTF(&buf, _("Please enter the server name and path to your %s " + "installation image."), getProductName()); do { rc = newtWinEntries(_("NFS Setup"), buf, 60, 5, 15, 24, entries, _("OK"), _("Back"), NULL); @@ -149,11 +141,7 @@ static void addDefaultKickstartFile(char **file, char *ip) { */ if ((*file) && (((*file)[strlen(*file) - 1] == '/') || ((*file)[strlen(*file) - 1] == '\0'))) { - if (asprintf(file, "%s%s-kickstart", *file, ip) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } - + CHECKED_ASPRINTF(file, "%s%s-kickstart", *file, ip); logMessage(DEBUGLVL, "addDefaultKickstartFile file: |%s|", *file); } } @@ -184,12 +172,9 @@ char * mountNfsImage(struct installMethod * method, loaderData->stage2Data)->mountOpts == NULL) { mountOpts = strdup("ro"); } else { - if (asprintf(&mountOpts, "ro,%s", - ((struct nfsInstallData *) - loaderData->stage2Data)->mountOpts) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&mountOpts, "ro,%s", + ((struct nfsInstallData *) + loaderData->stage2Data)->mountOpts); } logMessage(INFO, "host is %s, dir is %s, opts are '%s'", host, directory, mountOpts); @@ -219,18 +204,10 @@ 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 (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", + host, directory); + CHECKED_ASPRINTF(&tmp, "nfs:%s:%s/images/install.img", + host, directory); setStage2LocFromCmdline(tmp, loaderData); free(host); free(directory); @@ -247,13 +224,9 @@ char * mountNfsImage(struct installMethod * method, case NFS_STAGE_MOUNT: { char *buf; - if (asprintf(&fullPath, "%s:%.*s", host, - (int) (strrchr(directory, '/')-directory), - directory) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } - + CHECKED_ASPRINTF(&fullPath, "%s:%.*s", host, + (int) (strrchr(directory, '/')-directory), + directory); logMessage(INFO, "mounting nfs path %s", fullPath); if (FL_TESTING(flags)) { @@ -264,11 +237,8 @@ char * mountNfsImage(struct installMethod * method, stage = NFS_STAGE_NFS; if (!doPwMount(fullPath, "/mnt/stage2", "nfs", mountOpts, NULL)) { - if (asprintf(&buf, "/mnt/stage2/%s", - strrchr(directory, '/')) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&buf, "/mnt/stage2/%s", + strrchr(directory, '/')); if (!access(buf, R_OK)) { logMessage(INFO, "can access %s", buf); @@ -276,14 +246,8 @@ char * mountNfsImage(struct installMethod * method, if (rc == 0) { stage = NFS_STAGE_UPDATES; - - if (asprintf(&url, "nfs:%s:%s", host, - directory) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, - __LINE__); - abort(); - } - + CHECKED_ASPRINTF(&url, "nfs:%s:%s", host, + directory); free(buf); break; } else { @@ -309,12 +273,10 @@ char * mountNfsImage(struct installMethod * method, break; } - if (asprintf(&buf, _("That directory does not seem to " - "contain a %s installation image."), - getProductName()) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&buf, + _("That directory does not seem to " + "contain a %s installation image."), + getProductName()); newtWinMessage(_("Error"), _("OK"), buf); free(buf); @@ -331,12 +293,9 @@ char * mountNfsImage(struct installMethod * method, case NFS_STAGE_UPDATES: { char *buf; - if (asprintf(&buf, "%.*s/RHupdates", - (int) (strrchr(fullPath, '/')-fullPath), - fullPath) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&buf, "%.*s/RHupdates", + (int) (strrchr(fullPath, '/')-fullPath), + fullPath); logMessage(INFO, "mounting nfs path %s for updates", buf); @@ -402,10 +361,7 @@ void setKickstartNfs(struct loaderData_s * loaderData, int argc, substr = strstr(dir, ".img"); if (!substr || (substr && *(substr+4) != '\0')) { - if (asprintf(&(loaderData->instRepo), "nfs:%s:%s", host, dir) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&(loaderData->instRepo), "nfs:%s:%s", host, dir); logMessage(INFO, "results of nfs, host is %s, dir is %s, opts are '%s'", host, dir, mountOpts); @@ -503,18 +459,10 @@ int getFileFromNfs(char * url, char * dest, struct loaderData_s * loaderData) { filename = nm_dhcp4_config_get_one_option(dhcp, "filename"); if (filename == NULL) { - if (asprintf(&url, "%s:/kickstart/", nextserver) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } - + CHECKED_ASPRINTF(&url, "%s:/kickstart/", nextserver); logMessage(ERROR, "bootp: no bootfile received"); } else { - if (asprintf(&url, "%s:%s", nextserver, filename) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } - + CHECKED_ASPRINTF(&url, "%s:%s", nextserver, filename); logMessage(INFO, "bootp: bootfile is %s", filename); } @@ -545,15 +493,9 @@ int getFileFromNfs(char * url, char * dest, struct loaderData_s * loaderData) { chk = host + strlen(host)-1; if (*chk == '/' || *path == '/') { - if (asprintf(&host, "%s:%s", host, path) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&host, "%s:%s", host, path); } else { - if (asprintf(&host, "%s:/%s", host, path) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&host, "%s:/%s", host, path); } } @@ -562,10 +504,7 @@ int getFileFromNfs(char * url, char * dest, struct loaderData_s * loaderData) { if (!doPwMount(host, "/tmp/mnt", "nfs", opts, NULL)) { char * buf; - if (asprintf(&buf, "/tmp/mnt/%s", file) == -1) { - logMessage(CRITICAL, "%s: %d: %m", __func__, __LINE__); - abort(); - } + CHECKED_ASPRINTF(&buf, "/tmp/mnt/%s", file); if (copyFile(buf, dest)) { logMessage(ERROR, "failed to copy file to %s", dest); -- 1.6.2.5 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list