[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 4/6] xl: Provide and use xvasprintf and xasprintf internally
Replace all calls to [v]asprintf with this new function. This removes a fair amount of bespoke error handling. Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- tools/libxl/xl_cmdimpl.c | 96 +++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c index 568d7d2..c876d3e 100644 --- a/tools/libxl/xl_cmdimpl.c +++ b/tools/libxl/xl_cmdimpl.c @@ -362,6 +362,27 @@ static void dolog(const char *file, int line, const char *func, char *fmt, ...) free(s); } +static void xvasprintf(char **strp, const char *fmt, va_list ap) + __attribute__((format(printf,2,0))); +static void xvasprintf(char **strp, const char *fmt, va_list ap) +{ + int r = vasprintf(strp, fmt, ap); + if (r == -1) { + perror("asprintf failed"); + exit(-ERROR_FAIL); + } +} + +static void xasprintf(char **strp, const char *fmt, ...) + __attribute__((format(printf,2,3))); +static void xasprintf(char **strp, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + xvasprintf(strp, fmt, ap); + va_end(ap); +} + static yajl_gen_status printf_info_one_json(yajl_gen hand, int domid, libxl_domain_config *d_config) { @@ -840,11 +861,9 @@ static char *parse_cmdline(XLU_Config *config) "in favour of cmdline=\n"); } else { if (root && extra) { - if (asprintf(&cmdline, "root=%s %s", root, extra) == -1) - cmdline = NULL; + xasprintf(&cmdline, "root=%s %s", root, extra); } else if (root) { - if (asprintf(&cmdline, "root=%s", root) == -1) - cmdline = NULL; + xasprintf(&cmdline, "root=%s", root); } else if (extra) { cmdline = strdup(extra); } @@ -2335,14 +2354,11 @@ static int handle_domain_death(uint32_t *r_domid, char *corefile; int rc; - if (asprintf(&corefile, XEN_DUMP_DIR "/%s", d_config->c_info.name) < 0) { - LOG("failed to construct core dump path"); - } else { - LOG("dumping core to %s", corefile); - rc=libxl_domain_core_dump(ctx, *r_domid, corefile, NULL); - if (rc) LOG("core dump failed (rc=%d).", rc); - free(corefile); - } + xasprintf(&corefile, XEN_DUMP_DIR "/%s", d_config->c_info.name); + LOG("dumping core to %s", corefile); + rc = libxl_domain_core_dump(ctx, *r_domid, corefile, NULL); + if (rc) LOG("core dump failed (rc=%d).", rc); + free(corefile); /* No point crying over spilled milk, continue on failure. */ if (action == LIBXL_ACTION_ON_SHUTDOWN_COREDUMP_DESTROY) @@ -2689,11 +2705,7 @@ static uint32_t create_domain(struct domain_create *dom_info) common_domname = d_config.c_info.name; d_config.c_info.name = 0; /* steals allocation from config */ - if (asprintf(&d_config.c_info.name, - "%s--incoming", common_domname) < 0) { - fprintf(stderr, "Failed to allocate memory in asprintf\n"); - exit(1); - } + xasprintf(&d_config.c_info.name, "%s--incoming", common_domname); *dom_info->migration_domname_r = strdup(d_config.c_info.name); } } @@ -2777,10 +2789,7 @@ start: if (need_daemon) { char *name; - if (asprintf(&name, "xl-%s", d_config.c_info.name) < 0) { - LOG("Failed to allocate memory in asprintf"); - exit(1); - } + xasprintf(&name, "xl-%s", d_config.c_info.name); ret = do_daemonize(name); free(name); if (ret) { @@ -3173,11 +3182,8 @@ static int cd_insert(uint32_t domid, const char *virtdev, char *phys) struct stat b; int rc = 0; - if (asprintf(&buf, "vdev=%s,access=r,devtype=cdrom,target=%s", - virtdev, phys ? phys : "") < 0) { - fprintf(stderr, "out of memory\n"); - return 1; - } + xasprintf(&buf, "vdev=%s,access=r,devtype=cdrom,target=%s", + virtdev, phys ? phys : ""); parse_disk_config(&config, buf, &disk); @@ -4178,8 +4184,7 @@ static void migrate_domain(uint32_t domid, const char *rune, int debug, fprintf(stderr, "migration sender: Target has acknowledged transfer.\n"); if (common_domname) { - if (asprintf(&away_domname, "%s--migratedaway", common_domname) < 0) - goto failed_resume; + xasprintf(&away_domname, "%s--migratedaway", common_domname); rc = libxl_domain_rename(ctx, domid, common_domname, away_domname); if (rc) goto failed_resume; } @@ -4587,13 +4592,12 @@ int main_migrate(int argc, char **argv) } else { verbose_len = (minmsglevel_default - minmsglevel) + 2; } - if (asprintf(&rune, "exec %s %s xl%s%.*s migrate-receive%s%s", - ssh_command, host, - pass_tty_arg ? " -t" : "", - verbose_len, verbose_buf, - daemonize ? "" : " -e", - debug ? " -d" : "") < 0) - return 1; + xasprintf(&rune, "exec %s %s xl%s%.*s migrate-receive%s%s", + ssh_command, host, + pass_tty_arg ? " -t" : "", + verbose_len, verbose_buf, + daemonize ? "" : " -e", + debug ? " -d" : ""); } migrate_domain(domid, rune, debug, config_filename); @@ -6862,7 +6866,6 @@ static char *uptime_to_string(unsigned long uptime, int short_mode) { int sec, min, hour, day; char *time_string; - int ret; day = (int)(uptime / 86400); uptime -= (day * 86400); @@ -6874,21 +6877,19 @@ static char *uptime_to_string(unsigned long uptime, int short_mode) if (short_mode) if (day > 1) - ret = asprintf(&time_string, "%d days, %2d:%02d", day, hour, min); + xasprintf(&time_string, "%d days, %2d:%02d", day, hour, min); else if (day == 1) - ret = asprintf(&time_string, "%d day, %2d:%02d", day, hour, min); + xasprintf(&time_string, "%d day, %2d:%02d", day, hour, min); else - ret = asprintf(&time_string, "%2d:%02d", hour, min); + xasprintf(&time_string, "%2d:%02d", hour, min); else if (day > 1) - ret = asprintf(&time_string, "%d days, %2d:%02d:%02d", day, hour, min, sec); + xasprintf(&time_string, "%d days, %2d:%02d:%02d", day, hour, min, sec); else if (day == 1) - ret = asprintf(&time_string, "%d day, %2d:%02d:%02d", day, hour, min, sec); + xasprintf(&time_string, "%d day, %2d:%02d:%02d", day, hour, min, sec); else - ret = asprintf(&time_string, "%2d:%02d:%02d", hour, min, sec); + xasprintf(&time_string, "%2d:%02d:%02d", hour, min, sec); - if (ret < 0) - return NULL; return time_string; } @@ -8040,10 +8041,9 @@ int main_remus(int argc, char **argv) if (!ssh_command[0]) { rune = host; } else { - if (asprintf(&rune, "exec %s %s xl migrate-receive -r %s", - ssh_command, host, - daemonize ? "" : " -e") < 0) - return 1; + xasprintf(&rune, "exec %s %s xl migrate-receive -r %s", + ssh_command, host, + daemonize ? "" : " -e"); } save_domain_core_begin(domid, NULL, &config_data, &config_len); -- 1.7.10.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |