]> arthur.barton.de Git - netatalk.git/commitdiff
Create .AppleDB if necessary
authorfranklahm <franklahm>
Tue, 24 Nov 2009 14:48:07 +0000 (14:48 +0000)
committerfranklahm <franklahm>
Tue, 24 Nov 2009 14:48:07 +0000 (14:48 +0000)
etc/cnid_dbd/cmd_dbd.c

index 62df7c019389dc094aa112c5c4a4595c740d7ee8..59b7df6a2cedff5dd7b614a340b2f860479f14d0 100644 (file)
@@ -1,5 +1,5 @@
 /* 
-   $Id: cmd_dbd.c,v 1.13 2009-10-14 01:38:28 didg Exp $
+   $Id: cmd_dbd.c,v 1.14 2009-11-24 14:48:07 franklahm Exp $
 
    Copyright (c) 2009 Frank Lahm <franklahm@gmail.com>
    
@@ -374,6 +374,22 @@ int main(int argc, char **argv)
     strncpy(dbpath, volinfo.v_dbpath, PATH_MAX - 9 - 1);
     strcat(dbpath, "/.AppleDB");
 
+    /* Check or create dbpath */
+    int dbdirfd = open(dbpath, O_RDONLY);
+    if (dbdirfd == -1 && errno == ENOENT) {
+        if (errno == ENOENT) {
+            if ((mkdir(dbpath, 0755)) != 0) {
+                dbd_log( LOGSTD, "Can't create .AppleDB for \"%s\": %s", dbpath, strerror(errno));
+                exit(EXIT_FAILURE);
+            }
+        } else {
+            dbd_log( LOGSTD, "Somethings wrong with .AppleDB for \"%s\", giving up: %s", dbpath, strerror(errno));
+            exit(EXIT_FAILURE);
+        }
+    } else {
+        close(dbdirfd);
+    }
+
     /* 
        Before we do anything else, check if there is an instance of cnid_dbd
        running already and silently exit if yes.