]> arthur.barton.de Git - netatalk.git/commitdiff
Run dbpath through variable substitution
authorRalph Boehme <rb@sernet.de>
Sat, 1 Mar 2014 06:00:29 +0000 (07:00 +0100)
committerRalph Boehme <rb@sernet.de>
Sat, 1 Mar 2014 06:01:19 +0000 (07:01 +0100)
libatalk/util/netatalk_conf.c

index 43d31fb874f54db52969e68ac69a84e546d8d43f..78c8f331687df3023afacf6deaeb142a48e24544 100644 (file)
@@ -668,14 +668,19 @@ static struct vol *creatvol(AFPObj *obj,
         if(tmpname[i] == '/') tmpname[i] = ':';
 
 
-    if (!atalk_iniparser_getboolean(obj->iniconfig, INISEC_GLOBAL, "vol dbnest", 0)) {
+    if (atalk_iniparser_getboolean(obj->iniconfig, INISEC_GLOBAL, "vol dbnest", 0)) {
+        EC_NULL( volume->v_dbpath = strdup(path) );
+    } else {
         bstring dbpath;
-        EC_NULL( val = atalk_iniparser_getstring(obj->iniconfig, INISEC_GLOBAL, "vol dbpath", _PATH_STATEDIR "CNID/") );
-        EC_NULL( dbpath = bformat("%s/%s/", val, tmpname) );
-        EC_NULL( volume->v_dbpath = strdup(cfrombstr(dbpath)) );
+        val = atalk_iniparser_getstring(obj->iniconfig, section, "vol dbpath", NULL);
+        if (val == NULL) {
+            EC_NULL( dbpath = bformat("%s/%s/", _PATH_STATEDIR "CNID/", tmpname) );
+        } else {
+            EC_NULL( dbpath = bfromcstr(val));
+        }
+        EC_NULL( volume->v_dbpath = volxlate(obj, NULL, MAXPATHLEN + 1,
+                                             cfrombstr(dbpath), pwd, NULL, NULL) );
         bdestroy(dbpath);
-    } else {
-        EC_NULL( volume->v_dbpath = strdup(path) );
     }
 
     if ((val = getoption(obj->iniconfig, section, "cnid scheme", preset, NULL)))