]> arthur.barton.de Git - netatalk.git/commitdiff
osx adouble format . files are invalid if usedots is not set
authordidg <didg>
Tue, 3 Feb 2009 20:27:23 +0000 (20:27 +0000)
committerdidg <didg>
Tue, 3 Feb 2009 20:27:23 +0000 (20:27 +0000)
etc/afpd/vfs_adouble.c

index c40b1c9fd515883b0096cf19217c4a7b9fd60317..847863e42f1222d3297ce3db9d606626ecb79c9c 100644 (file)
@@ -425,16 +425,19 @@ int RF_renamefile_ads(const struct vol *vol, const char *src, const char *dst)
  classic adouble format 
 */
 
-static int validupath_adouble(const struct vol *vol, const char *name) 
+static int netatalk_name(const char *name)
 {
-     return (vol->v_flags & AFPVOL_USEDOTS) ?
-         strcasecmp(name,".AppleDB") &&
-         strcasecmp(name,".AppleDouble") &&
-         strcasecmp(name,".AppleDesktop") &&
-         strcasecmp(name,".Parent")
-                                           : name[0] != '.';
+    return strcasecmp(name,".AppleDB") &&
+        strcasecmp(name,".AppleDouble") &&
+        strcasecmp(name,".AppleDesktop");
 }
 
+static int validupath_adouble(const struct vol *vol, const char *name) 
+{
+    return (vol->v_flags & AFPVOL_USEDOTS) ? 
+        netatalk_name(name) && strcasecmp(name,".Parent"): name[0] != '.';
+}                                           
+
 /* ----------------- */
 static int RF_chown_adouble(const struct vol *vol, const char *path, uid_t uid, gid_t gid)
 
@@ -723,10 +726,11 @@ struct vfs_ops netatalk_adouble = {
 /* =======================================
  osx adouble format 
  */
-static int validupath_osx(const struct vol *vol _U_, const char *name) 
+static int validupath_osx(const struct vol *vol, const char *name) 
 {
-    return strncasecmp(name,".Apple", 6) && strncasecmp(name,"._", 2);
-}
+    return strncmp(name,"._", 2) && (
+      (vol->v_flags & AFPVOL_USEDOTS) ? netatalk_name(name): name[0] != '.');
+}             
 
 /* ---------------- */
 int RF_renamedir_osx(const struct vol *vol, const char *oldpath, const char *newpath)