]> arthur.barton.de Git - netatalk.git/blob - libatalk/adouble/ad_attr.c
Initial revision
[netatalk.git] / libatalk / adouble / ad_attr.c
1 #include <string.h>
2 #include <atalk/adouble.h>
3
4 #define FILEIOFF_ATTR 14
5 #define AFPFILEIOFF_ATTR 2
6
7 int ad_getattr(const struct adouble *ad, u_int16_t *attr)
8 {
9   if (ad->ad_version == AD_VERSION1)
10     memcpy(attr, ad_entry(ad, ADEID_FILEI) + FILEIOFF_ATTR,
11            sizeof(u_int16_t));
12   else if (ad->ad_version == AD_VERSION2)
13     memcpy(attr, ad_entry(ad, ADEID_AFPFILEI) + AFPFILEIOFF_ATTR,
14            sizeof(u_int16_t));
15   else 
16     return -1;
17
18   return 0;
19 }
20
21 int ad_setattr(const struct adouble *ad, const u_int16_t attr)
22 {
23   if (ad->ad_version == AD_VERSION1)
24     memcpy(ad_entry(ad, ADEID_FILEI) + FILEIOFF_ATTR, &attr,
25            sizeof(attr));
26   else if (ad->ad_version == AD_VERSION2)
27     memcpy(ad_entry(ad, ADEID_AFPFILEI) + AFPFILEIOFF_ATTR, &attr,
28            sizeof(attr));
29   else 
30     return -1;
31
32   return 0;
33 }