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