]> arthur.barton.de Git - netatalk.git/blob - etc/afpd/fork.h
BUGFIX: deny mode, tmp lock, byte lock when length is -1, setforkparams,
[netatalk.git] / etc / afpd / fork.h
1 /*
2  * $Id: fork.h,v 1.8 2003-01-16 21:18:15 didg Exp $
3  *
4  * Copyright (c) 1990,1993 Regents of The University of Michigan.
5  * All Rights Reserved.  See COPYRIGHT.
6  */
7
8 #ifndef AFPD_FORK_H
9 #define AFPD_FORK_H 1
10
11 #include <stdio.h>
12 #include <sys/cdefs.h>
13
14 #include <netatalk/endian.h>
15 #include <atalk/adouble.h>
16 #include "volume.h"
17 #include "directory.h"
18
19 struct file_key {
20     dev_t               dev;
21     ino_t               inode;
22 };
23
24 struct ofork {
25     struct adouble      *of_ad;
26     struct vol          *of_vol;
27     struct dir          *of_dir;
28     char                *of_name;
29     int                 of_namelen;
30
31     u_int16_t           of_refnum;
32     int                 of_flags;
33
34     struct file_key     key;
35     struct ofork        **prevp, *next;
36     struct ofork        *of_d_prev, *of_d_next;
37 };
38
39 #define OPENFORK_DATA   (0)
40 #define OPENFORK_RSCS   (1<<7)
41
42 #define OPENACC_RD      (1<<0)
43 #define OPENACC_WR      (1<<1)
44 #define OPENACC_DRD     (1<<4)
45 #define OPENACC_DWR     (1<<5)
46
47 /* ofork.of_flags bits */
48 #define AFPFORK_OPEN    (1<<0)
49 #define AFPFORK_RSRC    (1<<1)
50 #define AFPFORK_DATA    (1<<2)
51 #define AFPFORK_DIRTY   (1<<3)
52 #define AFPFORK_ACCRD   (1<<4)
53 #define AFPFORK_ACCWR   (1<<5)
54 #define AFPFORK_ACCMASK (AFPFORK_ACCRD | AFPFORK_ACCWR)
55
56 /* in ofork.c */
57 extern struct ofork *of_alloc    __P((struct vol *, struct dir *,
58                                                       char *, u_int16_t *, const int,
59                                                       struct adouble *,
60                                                       struct stat *));
61 extern void         of_dealloc   __P((struct ofork *));
62 extern struct ofork *of_find     __P((const u_int16_t));
63 extern struct ofork *of_findname __P((struct path *));
64 extern int          of_rename    __P((const struct vol *,
65                                           struct ofork *,
66                                           struct dir *, const char *,
67                                           struct dir *, const char *));
68 extern int          of_flush     __P((const struct vol *));
69 extern void         of_pforkdesc __P((FILE *));
70 extern int          of_stat      __P((struct path *));
71 /* in fork.c */
72 extern int          flushfork    __P((struct ofork *));
73
74 /* FP functions */
75 extern int      afp_openfork __P((AFPObj *, char *, int, char *, int *));
76 extern int      afp_bytelock __P((AFPObj *, char *, int, char *, int *));
77 extern int      afp_getforkparams __P((AFPObj *, char *, int, char *, int *));
78 extern int      afp_setforkparams __P((AFPObj *, char *, int, char *, int *));
79 extern int      afp_read __P((AFPObj *, char *, int, char *, int *));
80 extern int      afp_write __P((AFPObj *, char *, int, char *, int *));
81 extern int      afp_flushfork __P((AFPObj *, char *, int, char *, int *));
82 extern int      afp_flush __P((AFPObj *, char *, int, char *, int *));
83 extern int      afp_closefork __P((AFPObj *, char *, int, char *, int *));
84
85 extern int      afp_bytelock_ext __P((AFPObj *, char *, int, char *, int *));
86 extern int      afp_read_ext __P((AFPObj *, char *, int, char *, int *));
87 extern int      afp_write_ext __P((AFPObj *, char *, int, char *, int *));
88 #endif