2 * $Id: ad_date.c,v 1.5 2006-09-29 09:39:16 didg Exp $
7 #endif /* HAVE_CONFIG_H */
10 #include <atalk/adouble.h>
12 int ad_setdate(const struct adouble *ad,
13 unsigned int dateoff, u_int32_t date)
15 int xlate = (dateoff & AD_DATE_UNIX);
17 dateoff &= AD_DATE_MASK;
19 date = AD_DATE_FROM_UNIX(date);
21 if (ad->ad_version == AD_VERSION1) {
23 if (!ad_getentryoff(ad, ADEID_FILEI))
26 if (dateoff > AD_DATE_BACKUP)
28 memcpy(ad_entry(ad, ADEID_FILEI) + dateoff, &date, sizeof(date));
30 } else if (ad->ad_version == AD_VERSION2) {
31 if (!ad_getentryoff(ad, ADEID_FILEDATESI))
34 if (dateoff > AD_DATE_ACCESS)
36 memcpy(ad_entry(ad, ADEID_FILEDATESI) + dateoff, &date, sizeof(date));
44 int ad_getdate(const struct adouble *ad,
45 unsigned int dateoff, u_int32_t *date)
47 int xlate = (dateoff & AD_DATE_UNIX);
49 dateoff &= AD_DATE_MASK;
50 if (ad->ad_version == AD_VERSION1) {
51 if (dateoff > AD_DATE_BACKUP)
53 if (!ad_getentryoff(ad, ADEID_FILEI))
55 memcpy(date, ad_entry(ad, ADEID_FILEI) + dateoff, sizeof(u_int32_t));
57 } else if (ad->ad_version == AD_VERSION2) {
58 if (!ad_getentryoff(ad, ADEID_FILEDATESI))
61 if (dateoff > AD_DATE_ACCESS)
63 memcpy(date, ad_entry(ad, ADEID_FILEDATESI) + dateoff, sizeof(u_int32_t));
69 *date = AD_DATE_TO_UNIX(*date);