]> arthur.barton.de Git - netatalk.git/commitdiff
ad_open with O_CREAT, thus enumarating a dir will create missing adouble files. Helps...
authorfranklahm <franklahm>
Sat, 25 Apr 2009 06:44:48 +0000 (06:44 +0000)
committerfranklahm <franklahm>
Sat, 25 Apr 2009 06:44:48 +0000 (06:44 +0000)
libatalk/adouble/ad_open.c

index 127651a5ff29b48456db53138f26dfc80c4b7bc4..a7155d59bebbafc782f7e8927072a3bba39b8483 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: ad_open.c,v 1.39 2007-04-11 01:11:10 didg Exp $
+ * $Id: ad_open.c,v 1.40 2009-04-25 06:44:48 franklahm Exp $
  *
  * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu)
  * Copyright (c) 1990,1991 Regents of The University of Michigan.
@@ -1540,7 +1540,9 @@ int ad_metadata(const char *name, int flags, struct adouble *adp)
     int   ret, err;
     int   dir = flags & ADFLAGS_DIR;
 
-    if ((ret = ad_open(name, ADFLAGS_HF | dir, O_RDONLY, 0, adp)) < 0 && errno == EACCES) {
+    /* Open with O_CREAT, thus enumarating a dir will create missing adouble files, see: */
+    /* http://marc.info/?l=netatalk-devel&m=124039156832408&w=2 */
+    if ((ret = ad_open(name, ADFLAGS_HF | dir, O_RDWR | O_CREAT, 0666, adp)) < 0 && errno == EACCES) {
         uid = geteuid();
         if (seteuid(0)) {
             LOG(log_error, logtype_default, "ad_metadata(%s): seteuid failed %s", name, strerror(errno));