]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/adouble/ad_write.c
adouble:ea symlink handling
[netatalk.git] / libatalk / adouble / ad_write.c
index f5a5c9355b5d57603351f1e3ff64c074c3a8264a..d7bef2fd7f666301f731f9420df3f9c0a6f586c8 100644 (file)
@@ -78,13 +78,15 @@ ssize_t ad_write(struct adouble *ad, uint32_t eid, off_t off, int end, const cha
                 return(-1);
             off = st.st_size - off - ad_getentryoff(ad, eid);
         }
-#ifdef HAVE_EAFD
         if (ad->ad_vers == AD_VERSION_EA) {
-            r_off = 0;
-        } else
+#ifdef HAVE_EAFD
+            r_off = off;
+#else
+            r_off = ADEDOFF_RFORK_OSX + off;
 #endif
+        } else {
             r_off = ad_getentryoff(ad, eid) + off;
-
+        }
         cc = adf_pwrite(&ad->ad_resource_fork, buf, buflen, r_off);
 
         if ( ad->ad_rlen < off + cc )
@@ -160,9 +162,8 @@ char            c = 0;
 /* ------------------------ */
 int ad_rtruncate( struct adouble *ad, const off_t size)
 {
-    if (ad->ad_vers != AD_VERSION_EA)
-        if (sys_ftruncate(ad_reso_fileno(ad), size + ad->ad_eid[ ADEID_RFORK ].ade_off ) < 0 )
-            return -1;
+    if (sys_ftruncate(ad_reso_fileno(ad), size + ad->ad_eid[ ADEID_RFORK ].ade_off ) < 0 )
+        return -1;
 
     ad->ad_rlen = size;