netatalk  4.5.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/server_ipc.h>
#include <atalk/spotlight.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 "ad_cache.h"
#include "fork.h"
#include "unix.h"
#include "virtual_icon.h"
#include "volume.h"

Functions

int set_utc_offset (uint32_t *aint_p, int offset_dir)
 Convert an AFP date-time value between local time and UTC.
 
static int virtual_icon_reply (const AFPObj *obj, struct vol *vol, uint16_t fbitmap, uint16_t dbitmap, char *rbuf, size_t *rbuflen)
 
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()

static 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

◆ set_utc_offset()

int set_utc_offset ( uint32_t *  aint_p,
int  offset_dir 
)

Convert an AFP date-time value between local time and UTC.

Parameters
aint_pAFP date-time to be converted.
offset_dirWhich direction we want to convert the timestamp.

◆ 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.

◆ virtual_icon_reply()

static int virtual_icon_reply ( const AFPObj obj,
struct vol vol,
uint16_t  fbitmap,
uint16_t  dbitmap,
char *  rbuf,
size_t *  rbuflen 
)
static