[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2] xl: Improve return and exit codes of parse_config_data().



Turning parse_config_data() exit codes towards using the
EXIT_[SUCCESS|FAILURE] constants, instead of arbitrary
numbers or libxl return codes.

Signed-off-by: Harmandeep Kaur <write.harmandeep@xxxxxxxxx>
Reviewed-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
---
v2: Changelog edit.
---
 tools/libxl/xl_cmdimpl.c | 112 +++++++++++++++++++++++------------------------
 1 file changed, 56 insertions(+), 56 deletions(-)

diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index f40af51..116363d 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1279,13 +1279,13 @@ static void parse_config_data(const char *config_source,
     config= xlu_cfg_init(stderr, config_source);
     if (!config) {
         fprintf(stderr, "Failed to allocate for configuration\n");
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     e= xlu_cfg_readdata(config, config_data, config_len);
     if (e) {
         fprintf(stderr, "Failed to parse config: %s\n", strerror(e));
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     if (!xlu_cfg_get_string (config, "init_seclabel", &buf, 0))
@@ -1312,13 +1312,13 @@ static void parse_config_data(const char *config_source,
 
     if (xlu_cfg_replace_string (config, "name", &c_info->name, 0)) {
         fprintf(stderr, "Domain name must be specified.\n");
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     if (!xlu_cfg_get_string (config, "uuid", &buf, 0) ) {
         if ( libxl_uuid_from_string(&c_info->uuid, buf) ) {
             fprintf(stderr, "Failed to parse UUID: %s\n", buf);
-            exit(1);
+            exit(EXIT_FAILURE);
         }
     }else{
         libxl_uuid_generate(&c_info->uuid);
@@ -1358,7 +1358,7 @@ static void parse_config_data(const char *config_source,
         vcpus = l;
         if (libxl_cpu_bitmap_alloc(ctx, &b_info->avail_vcpus, l)) {
             fprintf(stderr, "Unable to allocate cpumap\n");
-            exit(1);
+            exit(EXIT_FAILURE);
         }
         libxl_bitmap_set_none(&b_info->avail_vcpus);
         while (l-- > 0)
@@ -1380,7 +1380,7 @@ static void parse_config_data(const char *config_source,
 
     if (b_info->max_vcpus < vcpus) {
         fprintf(stderr, "xl: maxvcpus < vcpus\n");
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     buf = NULL;
@@ -1399,21 +1399,21 @@ static void parse_config_data(const char *config_source,
         buf = "destroy";
     if (!parse_action_on_shutdown(buf, &d_config->on_poweroff)) {
         fprintf(stderr, "Unknown on_poweroff action \"%s\" specified\n", buf);
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     if (xlu_cfg_get_string (config, "on_reboot", &buf, 0))
         buf = "restart";
     if (!parse_action_on_shutdown(buf, &d_config->on_reboot)) {
         fprintf(stderr, "Unknown on_reboot action \"%s\" specified\n", buf);
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     if (xlu_cfg_get_string (config, "on_watchdog", &buf, 0))
         buf = "destroy";
     if (!parse_action_on_shutdown(buf, &d_config->on_watchdog)) {
         fprintf(stderr, "Unknown on_watchdog action \"%s\" specified\n", buf);
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
 
@@ -1421,14 +1421,14 @@ static void parse_config_data(const char *config_source,
         buf = "destroy";
     if (!parse_action_on_shutdown(buf, &d_config->on_crash)) {
         fprintf(stderr, "Unknown on_crash action \"%s\" specified\n", buf);
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     if (xlu_cfg_get_string (config, "on_soft_reset", &buf, 0))
         buf = "soft-reset";
     if (!parse_action_on_shutdown(buf, &d_config->on_soft_reset)) {
         fprintf(stderr, "Unknown on_soft_reset action \"%s\" specified\n", 
buf);
-        exit(1);
+        exit(EXIT_FAILURE);
     }
 
     /* libxl_get_required_shadow_memory() must be called after final values
@@ -1452,7 +1452,7 @@ static void parse_config_data(const char *config_source,
         if (l < LIBXL_TSC_MODE_DEFAULT ||
             l > LIBXL_TSC_MODE_NATIVE_PARAVIRT) {
             fprintf(stderr, "ERROR: invalid value %ld for \"tsc_mode\"\n", l);
-            exit (1);
+            exit(EXIT_FAILURE);
         }
         b_info->tsc_mode = l;
     } else if (!xlu_cfg_get_string(config, "tsc_mode", &buf, 0)) {
@@ -1460,7 +1460,7 @@ static void parse_config_data(const char *config_source,
         if (libxl_tsc_mode_from_string(buf, &b_info->tsc_mode)) {
             fprintf(stderr, "ERROR: invalid value \"%s\" for \"tsc_mode\"\n",
                     buf);
-            exit (1);
+            exit(EXIT_FAILURE);
         }
     }
 
@@ -1504,7 +1504,7 @@ static void parse_config_data(const char *config_source,
             libxl_bios_type_from_string(buf, &b_info->u.hvm.bios)) {
                 fprintf(stderr, "ERROR: invalid value \"%s\" for \"bios\"\n",
                     buf);
-                exit (1);
+                exit(EXIT_FAILURE);
         }
 
         xlu_cfg_get_defbool(config, "pae", &b_info->u.hvm.pae, 0);
@@ -1549,7 +1549,7 @@ static void parse_config_data(const char *config_source,
                         fprintf(stderr,
                                 "xl: unknown viridian enlightenment '%s'\n",
                                 buf);
-                        exit(-ERROR_FAIL);
+                        exit(EXIT_FAILURE);
                     }
 
                     libxl_bitmap_set(s, v);
@@ -1563,7 +1563,7 @@ static void parse_config_data(const char *config_source,
             break;
         default:
             fprintf(stderr,"xl: Unable to parse viridian enlightenments.\n");
-            exit(-ERROR_FAIL);
+            exit(EXIT_FAILURE);
         }
 
         if (!xlu_cfg_get_long(config, "mmio_hole", &l, 0)) {
@@ -1575,7 +1575,7 @@ static void parse_config_data(const char *config_source,
                 mmio_hole_size > HVM_BELOW_4G_MMIO_START) {
                 fprintf(stderr,
                         "ERROR: invalid value %ld for \"mmio_hole\"\n", l);
-                exit (1);
+                exit(EXIT_FAILURE);
             }
         }
         if (!xlu_cfg_get_long(config, "timer_mode", &l, 1)) {
@@ -1589,14 +1589,14 @@ static void parse_config_data(const char *config_source,
             if (l < LIBXL_TIMER_MODE_DELAY_FOR_MISSED_TICKS ||
                 l > LIBXL_TIMER_MODE_ONE_MISSED_TICK_PENDING) {
                 fprintf(stderr, "ERROR: invalid value %ld for 
\"timer_mode\"\n", l);
-                exit (1);
+                exit(EXIT_FAILURE);
             }
             b_info->u.hvm.timer_mode = l;
         } else if (!xlu_cfg_get_string(config, "timer_mode", &buf, 0)) {
             if (libxl_timer_mode_from_string(buf, &b_info->u.hvm.timer_mode)) {
                 fprintf(stderr, "ERROR: invalid value \"%s\" for 
\"timer_mode\"\n",
                         buf);
-                exit (1);
+                exit(EXIT_FAILURE);
             }
         }
 
@@ -1614,13 +1614,13 @@ static void parse_config_data(const char *config_source,
                 e = libxl_ms_vm_genid_generate(ctx, 
&b_info->u.hvm.ms_vm_genid);
                 if (e) {
                     fprintf(stderr, "ERROR: failed to generate a VM Generation 
ID\n");
-                    exit(1);
+                    exit(EXIT_FAILURE);
                 }
             } else if (!strcmp(buf, "none")) {
                 ;
             } else {
                     fprintf(stderr, "ERROR: \"ms_vm_genid\" option must be 
\"generate\" or \"none\"\n");
-                    exit(1);
+                    exit(EXIT_FAILURE);
             }
         }
 
@@ -1648,12 +1648,12 @@ static void parse_config_data(const char *config_source,
             break;
         default:
             fprintf(stderr,"xl: Unable to parse bootloader_args.\n");
-            exit(-ERROR_FAIL);
+            exit(EXIT_FAILURE);
         }
 
         if (!b_info->u.pv.bootloader && !b_info->kernel) {
             fprintf(stderr, "Neither kernel nor bootloader specified\n");
-            exit(1);
+            exit(EXIT_FAILURE);
         }
 
         break;
@@ -1667,7 +1667,7 @@ static void parse_config_data(const char *config_source,
         b_info->ioports = calloc(num_ioports, sizeof(*b_info->ioports));
         if (b_info->ioports == NULL) {
             fprintf(stderr, "unable to allocate memory for ioports\n");
-            exit(-1);
+            exit(EXIT_FAILURE);
         }
 
         for (i = 0; i < num_ioports; i++) {
@@ -1680,17 +1680,17 @@ static void parse_config_data(const char *config_source,
             if (!buf) {
                 fprintf(stderr,
                         "xl: Unable to get element #%d in ioport list\n", i);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             ul = strtoul(buf, &ep, 16);
             if (ep == buf) {
                 fprintf(stderr, "xl: Invalid argument parsing ioport: %s\n",
                         buf);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             if (ul >= UINT32_MAX) {
                 fprintf(stderr, "xl: ioport %lx too big\n", ul);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             start = end = ul;
 
@@ -1700,11 +1700,11 @@ static void parse_config_data(const char *config_source,
                 if (ep == buf2 || *ep != '\0' || start > end) {
                     fprintf(stderr,
                             "xl: Invalid argument parsing ioport: %s\n", buf);
-                    exit(1);
+                    exit(EXIT_FAILURE);
                 }
                 if (ul >= UINT32_MAX) {
                     fprintf(stderr, "xl: ioport %lx too big\n", ul);
-                    exit(1);
+                    exit(EXIT_FAILURE);
                 }
                 end = ul;
             } else if ( *ep != '\0' )
@@ -1720,7 +1720,7 @@ static void parse_config_data(const char *config_source,
         b_info->irqs = calloc(num_irqs, sizeof(*b_info->irqs));
         if (b_info->irqs == NULL) {
             fprintf(stderr, "unable to allocate memory for ioports\n");
-            exit(-1);
+            exit(EXIT_FAILURE);
         }
         for (i = 0; i < num_irqs; i++) {
             char *ep;
@@ -1729,17 +1729,17 @@ static void parse_config_data(const char *config_source,
             if (!buf) {
                 fprintf(stderr,
                         "xl: Unable to get element %d in irq list\n", i);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             ul = strtoul(buf, &ep, 10);
             if (ep == buf || *ep != '\0') {
                 fprintf(stderr,
                         "xl: Invalid argument parsing irq: %s\n", buf);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             if (ul >= UINT32_MAX) {
                 fprintf(stderr, "xl: irq %lx too big\n", ul);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             b_info->irqs[i] = ul;
         }
@@ -1751,7 +1751,7 @@ static void parse_config_data(const char *config_source,
         b_info->iomem = calloc(num_iomem, sizeof(*b_info->iomem));
         if (b_info->iomem == NULL) {
             fprintf(stderr, "unable to allocate memory for iomem\n");
-            exit(-1);
+            exit(EXIT_FAILURE);
         }
         for (i = 0; i < num_iomem; i++) {
             int used;
@@ -1760,7 +1760,7 @@ static void parse_config_data(const char *config_source,
             if (!buf) {
                 fprintf(stderr,
                         "xl: Unable to get element %d in iomem list\n", i);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             libxl_iomem_range_init(&b_info->iomem[i]);
             ret = sscanf(buf, "%" SCNx64",%" SCNx64"%n@%" SCNx64"%n",
@@ -1770,7 +1770,7 @@ static void parse_config_data(const char *config_source,
             if (ret < 2 || buf[used] != '\0') {
                 fprintf(stderr,
                         "xl: Invalid argument parsing iomem: %s\n", buf);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
         }
     }
@@ -1821,17 +1821,17 @@ static void parse_config_data(const char *config_source,
                      if( libxl_uuid_from_string(&vtpm->uuid, p2 + 1) ) {
                         fprintf(stderr,
                               "Failed to parse vtpm UUID: %s\n", p2 + 1);
-                        exit(1);
+                        exit(EXIT_FAILURE);
                     }
                   } else {
                      fprintf(stderr, "Unknown string `%s' in vtpm spec\n", p);
-                     exit(1);
+                     exit(EXIT_FAILURE);
                   }
                } while ((p = strtok(NULL, ",")) != NULL);
             }
             if(!got_backend) {
                fprintf(stderr, "vtpm spec missing required backend field!\n");
-               exit(1);
+               exit(EXIT_FAILURE);
             }
             free(buf2);
         }
@@ -1861,7 +1861,7 @@ static void parse_config_data(const char *config_source,
                 if (rc != 0) {
                     fprintf(stderr, "failed to parse channel configuration: 
%s",
                             pairs[i]);
-                    exit(1);
+                    exit(EXIT_FAILURE);
                 }
                 trim(isspace, key_untrimmed, &key);
                 trim(isspace, value_untrimmed, &value);
@@ -1880,7 +1880,7 @@ static void parse_config_data(const char *config_source,
                     } else {
                         fprintf(stderr, "unknown channel connection '%s'\n",
                                 value);
-                        exit(1);
+                        exit(EXIT_FAILURE);
                     }
                 } else {
                     fprintf(stderr, "unknown channel parameter '%s',"
@@ -1894,11 +1894,11 @@ static void parse_config_data(const char *config_source,
             switch (chn->connection) {
             case LIBXL_CHANNEL_CONNECTION_UNKNOWN:
                 fprintf(stderr, "channel has unknown 'connection'\n");
-                exit(1);
+                exit(EXIT_FAILURE);
             case LIBXL_CHANNEL_CONNECTION_SOCKET:
                 if (!path) {
                     fprintf(stderr, "channel connection 'socket' requires 
path=..\n");
-                    exit(1);
+                    exit(EXIT_FAILURE);
                 }
                 chn->u.socket.path = xstrdup(path);
                 break;
@@ -1908,7 +1908,7 @@ static void parse_config_data(const char *config_source,
             default:
                 fprintf(stderr, "unknown channel connection: %d",
                         chn->connection);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
             libxl_string_list_dispose(&pairs);
             free(path);
@@ -2055,7 +2055,7 @@ skip_vfb:
                 fprintf(stderr,
                         "unable to parse PCI BDF `%s' for passthrough\n",
                         buf);
-                exit(-e);
+                exit(EXIT_FAILURE);
             }
         }
         if (d_config->num_pcidevs && c_info->type == LIBXL_DOMAIN_TYPE_PV)
@@ -2075,7 +2075,7 @@ skip_vfb:
             dtdev->path = strdup(buf);
             if (dtdev->path == NULL) {
                 fprintf(stderr, "unable to duplicate string for dtdevs\n");
-                exit(-1);
+                exit(EXIT_FAILURE);
             }
         }
     }
@@ -2191,7 +2191,7 @@ skip_vfb:
         } else {
             fprintf(stderr,
                     "Unknown device_model_version \"%s\" specified\n", buf);
-            exit(1);
+            exit(EXIT_FAILURE);
         }
     } else if (b_info->device_model)
         fprintf(stderr, "WARNING: device model override given without specific 
DM version\n");
@@ -2211,7 +2211,7 @@ skip_vfb:
                                     &b_info->extra##type, 0);            \
     if (e && e != ESRCH) {                                                \
         fprintf(stderr,"xl: Unable to parse device_model_args"#type".\n");\
-        exit(-ERROR_FAIL);                                                \
+        exit(EXIT_FAILURE);                                               \
     }
 
     /* parse extra args for qemu, common to both pv, hvm */
@@ -2264,7 +2264,7 @@ skip_vfb:
                 b_info->u.hvm.vga.kind = LIBXL_VGA_INTERFACE_TYPE_QXL;
             } else {
                 fprintf(stderr, "Unknown vga \"%s\" specified\n", buf);
-                exit(1);
+                exit(EXIT_FAILURE);
             }
         } else if (!xlu_cfg_get_long(config, "stdvga", &l, 0))
             b_info->u.hvm.vga.kind = l ? LIBXL_VGA_INTERFACE_TYPE_STD :
@@ -2274,7 +2274,7 @@ skip_vfb:
             libxl_hdtype_from_string(buf, &b_info->u.hvm.hdtype)) {
                 fprintf(stderr, "ERROR: invalid value \"%s\" for \"hdtype\"\n",
                     buf);
-                exit (1);
+                exit(EXIT_FAILURE);
         }
 
         xlu_cfg_replace_string (config, "keymap", &b_info->u.hvm.keymap, 0);
@@ -2310,7 +2310,7 @@ skip_vfb:
                 fprintf(stderr,
                         "ERROR: invalid value \"%s\" for \"gfx_passthru\"\n",
                         buf);
-                exit (1);
+                exit(EXIT_FAILURE);
             }
             libxl_defbool_set(&b_info->u.hvm.gfx_passthru, true);
         }
@@ -2330,7 +2330,7 @@ skip_vfb:
             /* FALLTHRU */
         default:
             fprintf(stderr,"xl: Unable to parse serial.\n");
-            exit(-ERROR_FAIL);
+            exit(EXIT_FAILURE);
         }
         xlu_cfg_replace_string (config, "boot", &b_info->u.hvm.boot, 0);
         xlu_cfg_get_defbool(config, "usb", &b_info->u.hvm.usb, 0);
@@ -2352,7 +2352,7 @@ skip_vfb:
             /* FALLTHRU */
         default:
             fprintf(stderr,"xl: Unable to parse usbdevice.\n");
-            exit(-ERROR_FAIL);
+            exit(EXIT_FAILURE);
         }
         xlu_cfg_replace_string (config, "soundhw", &b_info->u.hvm.soundhw, 0);
         xlu_cfg_get_defbool(config, "xen_platform_pci",
@@ -2364,7 +2364,7 @@ skip_vfb:
             fprintf(stderr,
                     "ERROR: Display specified both in vnclisten"
                     " and vncdisplay!\n");
-            exit (1);
+            exit(EXIT_FAILURE);
 
         }
 
@@ -2376,7 +2376,7 @@ skip_vfb:
                 fprintf(stderr,
                         "xl: unknown vendor_device '%s'\n",
                         buf);
-                exit(-ERROR_FAIL);
+                exit(EXIT_FAILURE);
             }
 
             b_info->u.hvm.vendor_device = d;
@@ -2388,7 +2388,7 @@ skip_vfb:
         if (e) {
             fprintf(stderr,
                     "Unknown gic_version \"%s\" specified\n", buf);
-            exit(-ERROR_FAIL);
+            exit(EXIT_FAILURE);
         }
      }
 
-- 
2.5.0


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.