diff options
Diffstat (limited to 'tools/libxl/xl.c')
-rw-r--r-- | tools/libxl/xl.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c index 5bab2ff1b8..1f231a83c2 100644 --- a/tools/libxl/xl.c +++ b/tools/libxl/xl.c @@ -34,6 +34,7 @@ #include "xl.h" xentoollog_logger_stdiostream *logger; +int dryrun_only; int autoballoon = 1; char *lockfile; char *default_vifscript = NULL; @@ -90,11 +91,14 @@ int main(int argc, char **argv) void *config_data = 0; int config_len = 0; - while ((opt = getopt(argc, argv, "+v")) >= 0) { + while ((opt = getopt(argc, argv, "+vN")) >= 0) { switch (opt) { case 'v': if (minmsglevel > 0) minmsglevel--; break; + case 'N': + dryrun_only = 1; + break; default: fprintf(stderr, "unknown global option\n"); exit(2); @@ -138,9 +142,14 @@ int main(int argc, char **argv) optind = 1; cspec = cmdtable_lookup(cmd); - if (cspec) + if (cspec) { + if (dryrun_only && !cspec->can_dryrun) { + fprintf(stderr, "command does not implement -N (dryrun) option\n"); + ret = 1; + goto xit; + } ret = cspec->cmd_impl(argc, argv); - else if (!strcmp(cmd, "help")) { + } else if (!strcmp(cmd, "help")) { help(argv[1]); ret = 0; } else { @@ -148,8 +157,8 @@ int main(int argc, char **argv) ret = 1; } + xit: libxl_ctx_free(ctx); xtl_logger_destroy((xentoollog_logger*)logger); - return ret; } |