netatalk  4.4.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
filedir.c File Reference
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <bstrlib.h>
#include <atalk/acl.h>
#include <atalk/adouble.h>
#include <atalk/afp.h>
#include <atalk/cnid.h>
#include <atalk/errchk.h>
#include <atalk/fce_api.h>
#include <atalk/globals.h>
#include <atalk/logger.h>
#include <atalk/netatalk_conf.h>
#include <atalk/unix.h>
#include <atalk/util.h>
#include <atalk/vfs.h>
#include "desktop.h"
#include "dircache.h"
#include "directory.h"
#include "file.h"
#include "filedir.h"
#include "fork.h"
#include "unix.h"
#include "volume.h"

Functions

int afp_getfildirparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
int afp_setfildirparams (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
int check_name (const struct vol *vol, char *name)
static int moveandrename (const AFPObj *obj, struct vol *vol, struct dir *sdir, int sdir_fd, char *oldname, char *newname, int isdir)
 move and rename sdir:oldname to curdir:newname in volume vol
int afp_rename (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
int delete_vetoed_files (struct vol *vol, const char *upath, bool in_vetodir)
 Recursivley delete vetoed files and directories if the volume option is set.
int afp_delete (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
char * absupath (const struct vol *vol, struct dir *dir, char *u)
char * ctoupath (const struct vol *vol, struct dir *dir, char *name)
int afp_moveandrename (AFPObj *obj, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen)
int veto_file (const char *veto_str, const char *path)
 given a veto_str like "abc/zxc/" and path "abc", return 1

Function Documentation

◆ absupath()

char * absupath ( const struct vol * vol,
struct dir * dir,
char * u )

◆ afp_delete()

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

◆ afp_getfildirparams()

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

◆ afp_moveandrename()

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

◆ afp_rename()

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

◆ afp_setfildirparams()

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

◆ check_name()

int check_name ( const struct vol * vol,
char * name )

Factorise some checks on a pathname

◆ ctoupath()

char * ctoupath ( const struct vol * vol,
struct dir * dir,
char * name )

◆ delete_vetoed_files()

int delete_vetoed_files ( struct vol * vol,
const char * upath,
bool in_vetodir )

Recursivley delete vetoed files and directories if the volume option is set.

Parameters
[in]volvolume handle
[in]upathpath of directory
[in]in_vetodirtrue if we are already in a vetoed directory

If the volume option delete veto files is set, this function recursively scans the directory "upath" for vetoed files and tries deletes these, the it will try to delete the directory. That may fail if the directory contains normal files that aren't vetoed.

Returns
0 if the directory upath and all of its contents were deleted, otherwise -1.
If the volume option is not set it returns -1.

◆ moveandrename()

int moveandrename ( const AFPObj * obj,
struct vol * vol,
struct dir * sdir,
int sdir_fd,
char * oldname,
char * newname,
int isdir )
static

move and rename sdir:oldname to curdir:newname in volume vol

Note
special care is needed for lock

◆ veto_file()

int veto_file ( const char * veto_str,
const char * path )

given a veto_str like "abc/zxc/" and path "abc", return 1

Note
veto_str should be '/' delimited
Returns
if path matches any one of the veto_str elements exactly, then 1 is returned otherwise, 0 is returned.