X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=netatalk.git;a=blobdiff_plain;f=etc%2Fafpd%2Ffork.h;h=ae22b8f7f6b52c1b161808ac027b07948680af97;hp=f1cfca517a263b77e839ed0db5558c402434a881;hb=5116ed2346ea7ee6e5a9858dee94f3eacdc00d7e;hpb=6c1f3cff882955229cb9e0b94eca5e725817633b diff --git a/etc/afpd/fork.h b/etc/afpd/fork.h index f1cfca51..ae22b8f7 100644 --- a/etc/afpd/fork.h +++ b/etc/afpd/fork.h @@ -1,6 +1,4 @@ /* - * $Id: fork.h,v 1.2 2001-06-20 18:33:04 rufustfirefly Exp $ - * * Copyright (c) 1990,1993 Regents of The University of Michigan. * All Rights Reserved. See COPYRIGHT. */ @@ -16,60 +14,89 @@ #include "volume.h" #include "directory.h" +struct file_key { + dev_t dev; + ino_t inode; +}; + struct ofork { - struct adouble *of_ad; + struct file_key key; + struct adouble *of_ad; struct vol *of_vol; - struct dir *of_dir; - char *of_name; - int of_namelen; - u_int16_t of_refnum; + cnid_t of_did; + uint16_t of_refnum; int of_flags; struct ofork **prevp, *next; - struct ofork *of_d_prev, *of_d_next; +// struct ofork *of_d_prev, *of_d_next; }; -#define OPENFORK_DATA (0) -#define OPENFORK_RSCS (1<<7) +#define OPENFORK_DATA (0) +#define OPENFORK_RSCS (1<<7) -#define OPENACC_RD (1<<0) -#define OPENACC_WR (1<<1) -#define OPENACC_DRD (1<<4) -#define OPENACC_DWR (1<<5) +#define OPENACC_RD (1<<0) +#define OPENACC_WR (1<<1) +#define OPENACC_DRD (1<<4) +#define OPENACC_DWR (1<<5) -#define AFPFORK_OPEN (1<<0) -#define AFPFORK_RSRC (1<<1) -#define AFPFORK_DATA (1<<2) +/* ofork.of_flags bits */ +#define AFPFORK_OPEN (1<<0) +#define AFPFORK_RSRC (1<<1) +#define AFPFORK_DATA (1<<2) #define AFPFORK_DIRTY (1<<3) #define AFPFORK_ACCRD (1<<4) #define AFPFORK_ACCWR (1<<5) #define AFPFORK_ACCMASK (AFPFORK_ACCRD | AFPFORK_ACCWR) +#define AFPFORK_MODIFIED (1<<6) /* used in FCE for modified files */ + +#ifdef AFS +extern struct ofork *writtenfork; +#endif +#define of_name(a) (a)->of_ad->ad_m_name /* in ofork.c */ -extern struct ofork *of_alloc __P((struct vol *, struct dir *, - char *, u_int16_t *, const int, - struct adouble *)); -extern void of_dealloc __P((struct ofork *)); -extern struct ofork *of_find __P((const u_int16_t)); -extern struct ofork *of_findname __P((const struct vol *, const struct dir *, - const char *)); -extern int of_rename __P((const struct vol *, - struct dir *, const char *, - struct dir *, const char *)); -extern int of_flush __P((const struct vol *)); -extern void of_pforkdesc __P((FILE *)); +extern struct ofork *of_alloc (struct vol *, struct dir *, + char *, u_int16_t *, const int, + struct adouble *, + struct stat *); +extern void of_dealloc (struct ofork *); +extern struct ofork *of_find (const u_int16_t); +extern struct ofork *of_findname (struct path *); +extern int of_rename (const struct vol *, + struct ofork *, + struct dir *, const char *, + struct dir *, const char *); +extern int of_flush (const struct vol *); +extern void of_pforkdesc (FILE *); +extern int of_stat (struct path *); +extern int of_statdir (struct vol *vol, struct path *); +extern int of_closefork (struct ofork *ofork); +extern void of_closevol (const struct vol *vol); +extern void of_close_all_forks(void); +extern struct adouble *of_ad (const struct vol *, struct path *, struct adouble *); + +#ifdef HAVE_ATFUNCS +extern struct ofork *of_findnameat(int dirfd, struct path *path); +extern int of_fstatat(int dirfd, struct path *path); +#endif /* HAVE_ATFUNCS */ + /* in fork.c */ -extern int flushfork __P((struct ofork *)); +extern int flushfork (struct ofork *); +extern int getforkmode (struct adouble *, int , int ); /* FP functions */ -extern int afp_openfork __P((AFPObj *, char *, int, char *, int *)); -extern int afp_bytelock __P((AFPObj *, char *, int, char *, int *)); -extern int afp_getforkparams __P((AFPObj *, char *, int, char *, int *)); -extern int afp_setforkparams __P((AFPObj *, char *, int, char *, int *)); -extern int afp_read __P((AFPObj *, char *, int, char *, int *)); -extern int afp_write __P((AFPObj *, char *, int, char *, int *)); -extern int afp_flushfork __P((AFPObj *, char *, int, char *, int *)); -extern int afp_flush __P((AFPObj *, char *, int, char *, int *)); -extern int afp_closefork __P((AFPObj *, char *, int, char *, int *)); +int afp_openfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_bytelock (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_getforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_setforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_read (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_write (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_flushfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_flush (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_closefork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_bytelock_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_read_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_write_ext (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); +int afp_syncfork (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen); #endif