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;
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;
+}