]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/adouble/ad_read.c
Writing metadata xattr on directories with sticky bit set, FR#94
[netatalk.git] / libatalk / adouble / ad_read.c
index 5766ad9d8fec0b5dea430c008b5792fa68e28af6..852a6e963b94f964e3b47d1ea8b67df6cac0717e 100644 (file)
@@ -62,7 +62,6 @@ ssize_t adf_pread(struct ad_fd *ad_fd, void *buf, size_t count, off_t offset)
 ssize_t ad_read( struct adouble *ad, const uint32_t eid, off_t off, char *buf, const size_t buflen)
 {
     ssize_t     cc;
-    ssize_t     rlen;
     off_t r_off = 0;
 
     /* We're either reading the data fork (and thus the data file)
@@ -83,16 +82,14 @@ ssize_t ad_read( struct adouble *ad, const uint32_t eid, off_t off, char *buf, c
             /* resource fork is not open ( cf etc/afp/fork.c) */
             return 0;
 
-        switch (ad->ad_vers) {
-        case AD_VERSION2:
-#ifndef HAVE_EAFD
-        case AD_VERSION_EA:
+        if (ad->ad_vers == AD_VERSION_EA) {
+#ifdef HAVE_EAFD
+            r_off = off;
+#else
+            r_off = off + ADEDOFF_RFORK_OSX;
 #endif
+        } else {
             r_off = ad_getentryoff(ad, eid) + off;
-            break;
-        default:
-            r_off = 0;
-            break;
         }
 
         if (( cc = adf_pread( &ad->ad_resource_fork, buf, buflen, r_off )) < 0 )