]> arthur.barton.de Git - netatalk.git/blob - libatalk/adouble/ad_lock.h
Fixes and disable ad_tmplock
[netatalk.git] / libatalk / adouble / ad_lock.h
1 #ifndef LIBATALK_ADOUBLE_AD_PRIVATE_H
2 #define LIBATALK_ADOUBLE_AD_PRIVATE_H 1
3
4 #include <atalk/adouble.h>
5
6 /* this is so that we can keep lists of fds referencing the same file                                                                                                                                                                                                         
7  * around. that way, we can honor locks created by the same process                                                                                                                                                                                                           
8  * with the same file. */
9
10 #define adf_lock_init(a) do {   \
11         (a)->adf_lockmax = 0;   \
12         (a)->adf_lockcount = 0; \
13         (a)->adf_lock = NULL;   \
14     } while (0)
15
16 #define adf_lock_free(a) do {                                 \
17         int i;                                                \
18         if (!(a)->adf_lock)                                   \
19             break;                                            \
20         for (i = 0; i < (a)->adf_lockcount; i++) {            \
21             adf_lock_t *lock = (a)->adf_lock + i;             \
22             if (--(*lock->refcount) < 1)free(lock->refcount); \
23         }                                                     \
24         free((a)->adf_lock);                                  \
25         adf_lock_init(a);                                     \
26     } while (0)
27
28 #endif /* libatalk/adouble/ad_private.h */