]> xenbits.xensource.com Git - xen.git/commitdiff
libxl: Implement libxl_basename()
authorChristoph Egger <Christoph.Egger@amd.com>
Thu, 6 Jan 2011 14:25:10 +0000 (14:25 +0000)
committerChristoph Egger <Christoph.Egger@amd.com>
Thu, 6 Jan 2011 14:25:10 +0000 (14:25 +0000)
This patch implements libxl_basename() as a portable replacement
for GNU vs. POSIX basename.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/libxl/libxl_utils.c
tools/libxl/libxl_utils.h
tools/libxl/xl_cmdimpl.c

index 413768d758fa3d9bb2367199ce06beecee559c4d..64c884fd77c3d2c9b32f7bf81061cf35630821e1 100644 (file)
@@ -43,6 +43,20 @@ static struct schedid_name schedid_name[] = {
     { NULL, -1 }
 };
 
+const char *libxl_basename(const char *name)
+{
+    const char *filename;
+    if (name == NULL)
+        return strdup(".");
+    if (name[0] == '\0')
+        return strdup(".");
+
+    filename = strrchr(name, '/');
+    if (filename)
+        return strdup(filename+1);
+    return strdup(name);
+}
+
 unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int smp_cpus)
 {
     /* 256 pages (1MB) per vcpu,
index a8f7f105c1957edfb8d45be525aa5a5ca300261f..075197e4cb79a6835ce1c6c24f21288b36e83fa3 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "libxl.h"
 
+const char *libxl_basename(const char *name); /* returns string from strdup */
 unsigned long libxl_get_required_shadow_memory(unsigned long maxmem_kb, unsigned int smp_cpus);
 int libxl_name_to_domid(libxl_ctx *ctx, const char *name, uint32_t *domid);
 char *libxl_domid_to_name(libxl_ctx *ctx, uint32_t domid);
index 1eace780d14b93f82207ae063960e040872dc7d8..9d55259bdfeb8afa5b75313d6ad6747abfcae504 100644 (file)
@@ -5489,7 +5489,7 @@ int main_cpupoolcreate(int argc, char **argv)
     int config_len = 0;
     XLU_Config *config;
     const char *buf;
-    char *name;
+    const char *name;
     const char *sched;
     uint32_t poolid;
     int schedid = -1;
@@ -5581,7 +5581,7 @@ int main_cpupoolcreate(int argc, char **argv)
     if (!xlu_cfg_get_string (config, "name", &buf))
         name = strdup(buf);
     else
-        name = basename(filename);
+        name = libxl_basename(filename);
     if (!libxl_name_to_cpupoolid(&ctx, name, &poolid)) {
         fprintf(stderr, "Pool name \"%s\" already exists\n", name);
         return -ERROR_FAIL;