netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
fork.c File Reference
#include <errno.h>
#include <inttypes.h>
#include <stdio.h>
#include <string.h>
#include <sys/param.h>
#include <sys/socket.h>
#include <bstrlib.h>
#include <atalk/adouble.h>
#include <atalk/afp.h>
#include <atalk/asp.h>
#include <atalk/cnid.h>
#include <atalk/dsi.h>
#include <atalk/ea.h>
#include <atalk/globals.h>
#include <atalk/logger.h>
#include <atalk/netatalk_conf.h>
#include <atalk/util.h>
#include "desktop.h"
#include "directory.h"
#include "file.h"
#include "fork.h"
#include "volume.h"

Macros

#define ENDBIT(a)
#define UNLOCKBIT(a)

Functions

static int getforkparams (const AFPObj *obj, struct ofork *ofork, uint16_t bitmap, char *buf, size_t *buflen)
static off_t get_off_t (char **ibuf, int is64)
static int set_off_t (off_t offset, char *rbuf, int is64)
static int is_neg (int is64, off_t val)
static int sum_neg (int is64, off_t offset, off_t reqcount)
static int fork_setmode (const AFPObj *obj _U_, struct adouble *adp, int eid, int access, int ofrefnum)
int afp_openfork (AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)
int afp_setforkparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf _U_, size_t *rbuflen)
static int byte_lock (AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen, int is64)
int afp_bytelock (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)
static int read_file (const struct ofork *ofork, int eid, off_t offset, char *rbuf, size_t *rbuflen)
static int read_fork (AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen, int is64)
int afp_read (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_flush (AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
int afp_flushfork (AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
int afp_syncfork (AFPObj *obj _U_, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
int flushfork (struct ofork *ofork)
int afp_closefork (AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf _U_, size_t *rbuflen)
static ssize_t write_file (struct ofork *ofork, int eid, off_t offset, char *rbuf, size_t rbuflen)
static int write_fork (AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen, int is64)
int afp_write (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_getforkparams (AFPObj *obj, char *ibuf, size_t ibuflen _U_, char *rbuf, size_t *rbuflen)

Macro Definition Documentation

◆ ENDBIT

#define ENDBIT ( a)
Value:
((a) & 0x80)

◆ UNLOCKBIT

#define UNLOCKBIT ( a)
Value:
((a) & 0x01)

Function Documentation

◆ afp_bytelock()

int afp_bytelock ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ afp_bytelock_ext()

int afp_bytelock_ext ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ afp_closefork()

int afp_closefork ( AFPObj * obj,
char * ibuf,
size_t ibuflen _U_,
char *rbuf _U_,
size_t * rbuflen )

◆ afp_flush()

int afp_flush ( AFPObj *obj _U_,
char * ibuf,
size_t ibuflen _U_,
char *rbuf _U_,
size_t * rbuflen )

◆ afp_flushfork()

int afp_flushfork ( AFPObj *obj _U_,
char * ibuf,
size_t ibuflen _U_,
char *rbuf _U_,
size_t * rbuflen )

◆ afp_getforkparams()

int afp_getforkparams ( AFPObj * obj,
char * ibuf,
size_t ibuflen _U_,
char * rbuf,
size_t * rbuflen )

◆ afp_openfork()

int afp_openfork ( AFPObj *obj _U_,
char * ibuf,
size_t ibuflen _U_,
char * rbuf,
size_t * rbuflen )

◆ afp_read()

int afp_read ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ afp_read_ext()

int afp_read_ext ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ afp_setforkparams()

int afp_setforkparams ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char *rbuf _U_,
size_t * rbuflen )

◆ afp_syncfork()

int afp_syncfork ( AFPObj *obj _U_,
char * ibuf,
size_t ibuflen _U_,
char *rbuf _U_,
size_t * rbuflen )

◆ afp_write()

int afp_write ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ afp_write_ext()

int afp_write_ext ( AFPObj * obj,
char * ibuf,
size_t ibuflen,
char * rbuf,
size_t * rbuflen )

◆ byte_lock()

int byte_lock ( AFPObj *obj _U_,
char * ibuf,
size_t ibuflen _U_,
char * rbuf,
size_t * rbuflen,
int is64 )
static

◆ flushfork()

int flushfork ( struct ofork * ofork)

◆ fork_setmode()

int fork_setmode ( const AFPObj *obj _U_,
struct adouble * adp,
int eid,
int access,
int ofrefnum )
static

◆ get_off_t()

off_t get_off_t ( char ** ibuf,
int is64 )
static

◆ getforkparams()

int getforkparams ( const AFPObj * obj,
struct ofork * ofork,
uint16_t bitmap,
char * buf,
size_t * buflen )
static

◆ is_neg()

int is_neg ( int is64,
off_t val )
static

◆ read_file()

int read_file ( const struct ofork * ofork,
int eid,
off_t offset,
char * rbuf,
size_t * rbuflen )
static

Read *rbuflen bytes from fork at offset

Parameters
ofork(r) fork handle
eid(r) data fork or resource fork entry id
offset(r) offset
rbuf(r) data buffer
rbuflen(rw) in: number of bytes to read, out: bytes read
Returns
AFP status code

◆ read_fork()

int read_fork ( AFPObj * obj,
char * ibuf,
size_t ibuflen _U_,
char *rbuf _U_,
size_t * rbuflen,
int is64 )
static

◆ set_off_t()

int set_off_t ( off_t offset,
char * rbuf,
int is64 )
static

◆ sum_neg()

int sum_neg ( int is64,
off_t offset,
off_t reqcount )
static

◆ write_file()

ssize_t write_file ( struct ofork * ofork,
int eid,
off_t offset,
char * rbuf,
size_t rbuflen )
static

◆ write_fork()

int write_fork ( AFPObj * obj,
char * ibuf,
size_t ibuflen _U_,
char * rbuf,
size_t * rbuflen,
int is64 )
static