/*
 *
 * Copyright (c) 1997 Adrian Sun (asun@zoology.washington.edu)
 * All rights reserved. See COPYRIGHT.
 *
 * if we could depend upon inline functions, this would be one.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */

#include <string.h>

#include <atalk/adouble.h>
#include <atalk/logger.h>

off_t ad_size(const struct adouble *ad, const uint32_t eid)
{
    if (eid == ADEID_DFORK) {
        struct stat st;

        if (ad->ad_data_fork.adf_syml) {
            return strlen(ad->ad_data_fork.adf_syml);
        }

        if (fstat(ad_data_fileno(ad), &st) < 0) {
            return 0;
        }

        return st.st_size;
    }

#if 0
    return ad_getentrylen(ad, eid);
#endif
    return ad->ad_rlen;
}
