]> arthur.barton.de Git - netatalk.git/commitdiff
Fix ad_reso_size once more...
authorFrank Lahm <franklahm@googlemail.com>
Tue, 31 Jan 2012 11:16:59 +0000 (12:16 +0100)
committerFrank Lahm <franklahm@googlemail.com>
Tue, 31 Jan 2012 11:16:59 +0000 (12:16 +0100)
libatalk/adouble/ad_open.c

index 3e6680828597c9abd10595ce30499110a87605cf..72250de8034caca1cacf9422870e0ad2ee0f87a6 100644 (file)
@@ -1046,14 +1046,17 @@ static int ad_reso_size(const char *path, int adflags, struct adouble *ad)
 
 #ifdef HAVE_EAFD
     ssize_t easz;
-    int eafd;
 
-    if ((eafd = ad_reso_fileno(ad)) == -1)
-        if ((eafd = ad_data_fileno(ad)) == -1)
-            EC_FAIL;
+    if (ad_reso_fileno(ad) != -1) {
+        EC_NEG1( fstat(ad_reso_fileno(ad), &st) );
+        ad->ad_rlen = st.st_size;
+    } else if (ad_meta_fileno(ad) != -1) {
+        EC_NEG1( easz = sys_fgetxattr(ad_meta_fileno(ad), AD_EA_RESO, NULL, 0) );
+        ad->ad_rlen = easz;
+    } else {
+        EC_FAIL;
+    }
 
-    EC_NEG1( easz = sys_fgetxattr(eafd, AD_EA_RESO, NULL, 0) );
-    ad->ad_rlen = easz;
 #else
     const char *rfpath;
     EC_NULL_LOG( rfpath = ad->ad_ops->ad_path(path, adflags));