append given basedir argument with '/' if not given
authorChristian Thaeter <ct@pipapo.org>
Mon, 22 Oct 2007 14:14:22 +0000 (16:14 +0200)
committerChristian Thaeter <ct@pipapo.org>
Mon, 22 Oct 2007 14:14:22 +0000 (16:14 +0200)
src/main.c
src/rxpd.h
src/rxpd_base.c

index 37de058..e3a2173 100644 (file)
@@ -101,7 +101,7 @@ main (int argc, char** argv)
         break;
       case 'b':
         if (!rxpd->basedir)
-          rxpd->basedir = rxpd_strdup (optarg);
+          rxpd_set_basedir (rxpd, optarg);
         else
           rxpd_fail (rxpd, "basedir already set\n");
         break;
index ff81f62..b8885df 100644 (file)
@@ -122,6 +122,8 @@ rxpd_malloc (size_t size);
 char*
 rxpd_strdup (const char* str);
 
+struct rxpd_base*
+rxpd_set_basedir (struct rxpd_base*, const char* basedir);
 
 //
 struct rxpd_rule
index e316b97..1f9da8f 100644 (file)
@@ -116,3 +116,23 @@ rxpd_strdup (const char* str)
   return r;
 }
 
+struct rxpd_base*
+rxpd_set_basedir (struct rxpd_base* self, const char* basedir)
+{
+  if (self && !self->basedir)
+    {
+      size_t sz = strlen (basedir);
+      if (basedir [sz-1] == '/')
+        {
+          self->basedir = rxpd_malloc (sz + 1);
+          strcpy (self->basedir, basedir);
+        }
+      else
+        {
+          self->basedir = rxpd_malloc (sz + 2);
+          strcpy (self->basedir, basedir);
+          self->basedir [sz] = '/';
+        }
+    }
+  return self;
+}