netatalk  4.4.0dev
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
vfs.c File Reference
#include <libgen.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <bstrlib.h>
#include <atalk/acl.h>
#include <atalk/adouble.h>
#include <atalk/afp.h>
#include <atalk/compat.h>
#include <atalk/directory.h>
#include <atalk/ea.h>
#include <atalk/errchk.h>
#include <atalk/logger.h>
#include <atalk/unix.h>
#include <atalk/util.h>
#include <atalk/vfs.h>
#include <atalk/volume.h>

Data Structures

struct  perm

Macros

#define VFS_MFUNC(name, args, vars)

Typedefs

typedef int(* rf_loop) (const struct vol *, struct dirent *, char *, void *, int)

Functions

static int for_each_adouble (const char *from, const char *name, rf_loop fn, const struct vol *vol, void *data, int flag)
static int netatalk_name (const char *name)
static int validupath_adouble (VFS_FUNC_ARGS_VALIDUPATH)
static int RF_chown_adouble (VFS_FUNC_ARGS_CHOWN)
static int RF_renamedir_adouble (VFS_FUNC_ARGS_RENAMEDIR)
static int deletecurdir_adouble_loop (const struct vol *vol _U_, struct dirent *de, char *name, void *data _U_, int flag _U_)
static int RF_deletecurdir_adouble (VFS_FUNC_ARGS_DELETECURDIR)
static int adouble_setfilmode (const struct vol *vol, const char *name, mode_t mode, struct stat *st)
static int RF_setfilmode_adouble (VFS_FUNC_ARGS_SETFILEMODE)
static int RF_setdirunixmode_adouble (VFS_FUNC_ARGS_SETDIRUNIXMODE)
static int setdirmode_adouble_loop (const struct vol *vol, struct dirent *de _U_, char *name, void *data, int flag)
static int RF_setdirmode_adouble (VFS_FUNC_ARGS_SETDIRMODE)
static int RF_setdirowner_adouble (VFS_FUNC_ARGS_SETDIROWNER)
static int RF_deletefile_adouble (VFS_FUNC_ARGS_DELETEFILE)
static int RF_renamefile_adouble (VFS_FUNC_ARGS_RENAMEFILE)
static int RF_copyfile_adouble (VFS_FUNC_ARGS_COPYFILE)
static int validupath_ea (VFS_FUNC_ARGS_VALIDUPATH)
static int RF_chown_ea (VFS_FUNC_ARGS_CHOWN)
static int RF_renamedir_ea (VFS_FUNC_ARGS_RENAMEDIR)
static int deletecurdir_ea_osx_chkifempty_loop (const struct vol *vol, struct dirent *de, char *name, void *data _U_, int flag _U_)
static int deletecurdir_ea_osx_loop (const struct vol *vol _U_, struct dirent *de _U_, char *name, void *data _U_, int flag _U_)
static int RF_deletecurdir_ea (VFS_FUNC_ARGS_DELETECURDIR)
static int RF_setdirunixmode_ea (VFS_FUNC_ARGS_SETDIRUNIXMODE)
static int RF_setfilmode_ea (VFS_FUNC_ARGS_SETFILEMODE)
static int RF_setdirmode_ea (VFS_FUNC_ARGS_SETDIRMODE)
static int RF_setdirowner_ea (VFS_FUNC_ARGS_SETDIROWNER)
static int RF_deletefile_ea (VFS_FUNC_ARGS_DELETEFILE)
static int RF_copyfile_ea (VFS_FUNC_ARGS_COPYFILE)
static int RF_renamefile_ea (VFS_FUNC_ARGS_RENAMEFILE)
 VFS_MFUNC (setdirunixmode, VFS_FUNC_ARGS_SETDIRUNIXMODE, VFS_FUNC_VARS_SETDIRUNIXMODE)
void initvol_vfs (struct vol *vol)

Variables

static struct vfs_ops vfs_master_funcs
static struct vfs_ops netatalk_adouble_v2
static struct vfs_ops netatalk_adouble_ea
static struct vfs_ops netatalk_ea_adouble
static struct vfs_ops netatalk_ea_sys

Macro Definition Documentation

◆ VFS_MFUNC

#define VFS_MFUNC ( name,
args,
vars )
Value:
static int vfs_ ## name(args) \
{ \
int i = 0, ret = AFP_OK, err; \
while (vol->vfs_modules[i]) { \
if (vol->vfs_modules[i]->vfs_ ## name) { \
err = vol->vfs_modules[i]->vfs_ ## name (vars); \
if ((ret == AFP_OK) && (err != AFP_OK)) \
ret = err; \
} \
i ++; \
} \
return ret; \
}
#define AFP_OK
Definition include/atalk/afp.h:64
Definition include/atalk/volume.h:32
const struct vfs_ops * vfs_modules[4]
Definition include/atalk/volume.h:80
static char * args[]
Definition test.c:48

Typedef Documentation

◆ rf_loop

typedef int(* rf_loop) (const struct vol *, struct dirent *, char *, void *, int)

Function Documentation

◆ adouble_setfilmode()

int adouble_setfilmode ( const struct vol * vol,
const char * name,
mode_t mode,
struct stat * st )
static

◆ deletecurdir_adouble_loop()

int deletecurdir_adouble_loop ( const struct vol *vol _U_,
struct dirent * de,
char * name,
void *data _U_,
int flag _U_ )
static

◆ deletecurdir_ea_osx_chkifempty_loop()

int deletecurdir_ea_osx_chkifempty_loop ( const struct vol * vol,
struct dirent * de,
char * name,
void *data _U_,
int flag _U_ )
static

◆ deletecurdir_ea_osx_loop()

int deletecurdir_ea_osx_loop ( const struct vol *vol _U_,
struct dirent *de _U_,
char * name,
void *data _U_,
int flag _U_ )
static

◆ for_each_adouble()

int for_each_adouble ( const char * from,
const char * name,
rf_loop fn,
const struct vol * vol,
void * data,
int flag )
static

◆ initvol_vfs()

void initvol_vfs ( struct vol * vol)

◆ netatalk_name()

int netatalk_name ( const char * name)
static

◆ RF_chown_adouble()

int RF_chown_adouble ( VFS_FUNC_ARGS_CHOWN )
static

◆ RF_chown_ea()

int RF_chown_ea ( VFS_FUNC_ARGS_CHOWN )
static

◆ RF_copyfile_adouble()

int RF_copyfile_adouble ( VFS_FUNC_ARGS_COPYFILE )
static

◆ RF_copyfile_ea()

int RF_copyfile_ea ( VFS_FUNC_ARGS_COPYFILE )
static

◆ RF_deletecurdir_adouble()

int RF_deletecurdir_adouble ( VFS_FUNC_ARGS_DELETECURDIR )
static

◆ RF_deletecurdir_ea()

int RF_deletecurdir_ea ( VFS_FUNC_ARGS_DELETECURDIR )
static

◆ RF_deletefile_adouble()

int RF_deletefile_adouble ( VFS_FUNC_ARGS_DELETEFILE )
static

◆ RF_deletefile_ea()

int RF_deletefile_ea ( VFS_FUNC_ARGS_DELETEFILE )
static

◆ RF_renamedir_adouble()

int RF_renamedir_adouble ( VFS_FUNC_ARGS_RENAMEDIR )
static

◆ RF_renamedir_ea()

int RF_renamedir_ea ( VFS_FUNC_ARGS_RENAMEDIR )
static

◆ RF_renamefile_adouble()

int RF_renamefile_adouble ( VFS_FUNC_ARGS_RENAMEFILE )
static

◆ RF_renamefile_ea()

int RF_renamefile_ea ( VFS_FUNC_ARGS_RENAMEFILE )
static

◆ RF_setdirmode_adouble()

int RF_setdirmode_adouble ( VFS_FUNC_ARGS_SETDIRMODE )
static

◆ RF_setdirmode_ea()

int RF_setdirmode_ea ( VFS_FUNC_ARGS_SETDIRMODE )
static

◆ RF_setdirowner_adouble()

int RF_setdirowner_adouble ( VFS_FUNC_ARGS_SETDIROWNER )
static

◆ RF_setdirowner_ea()

int RF_setdirowner_ea ( VFS_FUNC_ARGS_SETDIROWNER )
static

◆ RF_setdirunixmode_adouble()

int RF_setdirunixmode_adouble ( VFS_FUNC_ARGS_SETDIRUNIXMODE )
static

◆ RF_setdirunixmode_ea()

int RF_setdirunixmode_ea ( VFS_FUNC_ARGS_SETDIRUNIXMODE )
static

◆ RF_setfilmode_adouble()

int RF_setfilmode_adouble ( VFS_FUNC_ARGS_SETFILEMODE )
static

◆ RF_setfilmode_ea()

int RF_setfilmode_ea ( VFS_FUNC_ARGS_SETFILEMODE )
static

◆ setdirmode_adouble_loop()

int setdirmode_adouble_loop ( const struct vol * vol,
struct dirent *de _U_,
char * name,
void * data,
int flag )
static

◆ validupath_adouble()

int validupath_adouble ( VFS_FUNC_ARGS_VALIDUPATH )
static

◆ validupath_ea()

int validupath_ea ( VFS_FUNC_ARGS_VALIDUPATH )
static

◆ VFS_MFUNC()

Variable Documentation

◆ netatalk_adouble_ea

struct vfs_ops netatalk_adouble_ea
static
Initial value:
= {
NULL,
NULL,
NULL,
NULL,
NULL
}
static int RF_renamefile_ea(VFS_FUNC_ARGS_RENAMEFILE)
Definition vfs.c:675
static int validupath_ea(VFS_FUNC_ARGS_VALIDUPATH)
Definition vfs.c:493
static int RF_copyfile_ea(VFS_FUNC_ARGS_COPYFILE)
Definition vfs.c:611
static int RF_setdirunixmode_ea(VFS_FUNC_ARGS_SETDIRUNIXMODE)
Definition vfs.c:573
static int RF_deletefile_ea(VFS_FUNC_ARGS_DELETEFILE)
Definition vfs.c:604
static int RF_setfilmode_ea(VFS_FUNC_ARGS_SETFILEMODE)
Definition vfs.c:580
static int RF_setdirmode_ea(VFS_FUNC_ARGS_SETDIRMODE)
Definition vfs.c:589
static int RF_chown_ea(VFS_FUNC_ARGS_CHOWN)
Definition vfs.c:510
static int RF_deletecurdir_ea(VFS_FUNC_ARGS_DELETECURDIR)
Definition vfs.c:556
static int RF_setdirowner_ea(VFS_FUNC_ARGS_SETDIROWNER)
Definition vfs.c:597
static int RF_renamedir_ea(VFS_FUNC_ARGS_RENAMEDIR)
Definition vfs.c:519

◆ netatalk_adouble_v2

struct vfs_ops netatalk_adouble_v2
static
Initial value:
= {
NULL,
NULL,
NULL,
NULL,
NULL
}
static int RF_deletefile_adouble(VFS_FUNC_ARGS_DELETEFILE)
Definition vfs.c:288
static int RF_setdirowner_adouble(VFS_FUNC_ARGS_SETDIROWNER)
Definition vfs.c:277
static int RF_renamedir_adouble(VFS_FUNC_ARGS_RENAMEDIR)
Definition vfs.c:137
static int RF_setdirunixmode_adouble(VFS_FUNC_ARGS_SETDIRUNIXMODE)
Definition vfs.c:190
static int RF_setdirmode_adouble(VFS_FUNC_ARGS_SETDIRMODE)
Definition vfs.c:243
static int RF_deletecurdir_adouble(VFS_FUNC_ARGS_DELETECURDIR)
Definition vfs.c:163
static int RF_copyfile_adouble(VFS_FUNC_ARGS_COPYFILE)
Definition vfs.c:344
static int validupath_adouble(VFS_FUNC_ARGS_VALIDUPATH)
Definition vfs.c:109
static int RF_chown_adouble(VFS_FUNC_ARGS_CHOWN)
Definition vfs.c:120
static int RF_setfilmode_adouble(VFS_FUNC_ARGS_SETFILEMODE)
Definition vfs.c:184
static int RF_renamefile_adouble(VFS_FUNC_ARGS_RENAMEFILE)
Definition vfs.c:294

◆ netatalk_ea_adouble

struct vfs_ops netatalk_ea_adouble
static
Initial value:
= {
NULL,
NULL,
NULL,
NULL,
NULL,
}
int list_eas(VFS_FUNC_ARGS_EA_LIST)
Definition ea_ad.c:1198
int ea_chmod_file(VFS_FUNC_ARGS_SETFILEMODE)
Definition ea_ad.c:1720
int set_ea(VFS_FUNC_ARGS_EA_SET)
Definition ea_ad.c:1285
int ea_deletefile(VFS_FUNC_ARGS_DELETEFILE)
Definition ea_ad.c:1375
int ea_chmod_dir(VFS_FUNC_ARGS_SETDIRUNIXMODE)
Definition ea_ad.c:1795
int remove_ea(VFS_FUNC_ARGS_EA_REMOVE)
Definition ea_ad.c:1337
int get_easize(VFS_FUNC_ARGS_EA_GETSIZE)
Definition ea_ad.c:1038
int ea_copyfile(VFS_FUNC_ARGS_COPYFILE)
Definition ea_ad.c:1558
int get_eacontent(VFS_FUNC_ARGS_EA_GETCONTENT)
Definition ea_ad.c:1101
int ea_renamefile(VFS_FUNC_ARGS_RENAMEFILE)
Definition ea_ad.c:1435
int ea_chown(VFS_FUNC_ARGS_CHOWN)
Definition ea_ad.c:1653

◆ netatalk_ea_sys

struct vfs_ops netatalk_ea_sys
static
Initial value:
= {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
}
int sys_get_easize(VFS_FUNC_ARGS_EA_GETSIZE)
Definition ea_sys.c:64
int sys_remove_ea(VFS_FUNC_ARGS_EA_REMOVE)
Definition ea_sys.c:522
int sys_list_eas(VFS_FUNC_ARGS_EA_LIST)
Definition ea_sys.c:301
int sys_get_eacontent(VFS_FUNC_ARGS_EA_GETCONTENT)
Definition ea_sys.c:163
int sys_ea_copyfile(VFS_FUNC_ARGS_COPYFILE)
Definition ea_sys.c:595
int sys_set_ea(VFS_FUNC_ARGS_EA_SET)
Definition ea_sys.c:402

◆ vfs_master_funcs

struct vfs_ops vfs_master_funcs
static
Initial value:
= {
vfs_validupath,
vfs_chown,
vfs_renamedir,
vfs_deletecurdir,
vfs_setfilmode,
vfs_setdirmode,
vfs_setdirunixmode,
vfs_setdirowner,
vfs_deletefile,
vfs_renamefile,
vfs_copyfile,
vfs_ea_getsize,
vfs_ea_getcontent,
vfs_ea_list,
vfs_ea_set,
vfs_ea_remove
}