From: Frank Lahm Date: Tue, 31 Jan 2012 11:16:59 +0000 (+0100) Subject: Fix ad_reso_size once more... X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=commitdiff_plain;h=61e09782a5bec443fbc26a7c311a9801860a0866 Fix ad_reso_size once more... --- diff --git a/libatalk/adouble/ad_open.c b/libatalk/adouble/ad_open.c index 3e668082..72250de8 100644 --- a/libatalk/adouble/ad_open.c +++ b/libatalk/adouble/ad_open.c @@ -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));