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] | vol | volume handle
  [in] | upath | path of directory
  [in] | in_vetodir | true 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

## ◆ 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_p | AFP date-time to be converted.
  offset_dir | Which 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()

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