2 * Copyright (c) 1990,1993 Regents of The University of Michigan.
3 * All Rights Reserved. See COPYRIGHT.
10 #include <arpa/inet.h>
12 #include <atalk/adouble.h>
14 #include "directory.h"
23 struct adouble *of_ad;
28 struct ofork **prevp, *next;
31 #define OPENFORK_DATA (0)
32 #define OPENFORK_RSCS (1<<7)
34 #define OPENACC_RD (1<<0)
35 #define OPENACC_WR (1<<1)
36 #define OPENACC_DRD (1<<4)
37 #define OPENACC_DWR (1<<5)
39 /* ofork.of_flags bits */
40 #define AFPFORK_DATA (1<<0) /* open datafork */
41 #define AFPFORK_RSRC (1<<1) /* open rsrcfork */
42 #define AFPFORK_META (1<<2) /* open metadata */
43 #define AFPFORK_DIRTY (1<<3)
44 #define AFPFORK_ACCRD (1<<4)
45 #define AFPFORK_ACCWR (1<<5)
46 #define AFPFORK_ACCMASK (AFPFORK_ACCRD | AFPFORK_ACCWR)
47 #define AFPFORK_MODIFIED (1<<6) /* used in FCE for modified files */
48 #define AFPFORK_ERROR (1<<7) /* used to indicate an error in opening the fork */
51 extern struct ofork *writtenfork;
54 #define of_name(a) (a)->of_ad->ad_name
56 extern struct ofork *of_alloc (struct vol *, struct dir *,
57 char *, uint16_t *, const int,
60 extern void of_dealloc (struct ofork *);
61 extern struct ofork *of_find (const uint16_t);
62 extern struct ofork *of_findname (struct path *);
63 extern int of_rename (const struct vol *,
65 struct dir *, const char *,
66 struct dir *, const char *);
67 extern int of_flush (const struct vol *);
68 extern int of_stat (struct path *);
69 extern int of_statdir (struct vol *vol, struct path *);
70 extern int of_closefork (const AFPObj *obj, struct ofork *ofork);
71 extern void of_closevol (const AFPObj *obj, const struct vol *vol);
72 extern void of_close_all_forks(const AFPObj *obj);
73 extern struct adouble *of_ad (const struct vol *, struct path *, struct adouble *);
76 extern struct ofork *of_findnameat(int dirfd, struct path *path);
77 extern int of_fstatat(int dirfd, struct path *path);
78 #endif /* HAVE_ATFUNCS */
82 extern int flushfork (struct ofork *);
85 int afp_openfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
86 int afp_bytelock (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
87 int afp_getforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
88 int afp_setforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
89 int afp_read (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
90 int afp_write (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
91 int afp_flushfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
92 int afp_flush (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
93 int afp_closefork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
95 int afp_bytelock_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
96 int afp_read_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
97 int afp_write_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);
98 int afp_syncfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen);