netatalk  4.5.0
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
ftw.c File Reference
#include <alloca.h>
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <search.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <unistd.h>
#include <atalk/util.h>
#include "ftw.h"
#include <assert.h>

Data Structures

struct  dir_data
 
struct  known_object
 
struct  ftw_data
 
struct  node_t
 

Macros

#define NAMLEN(dirent)   strlen ((dirent)->d_name)
 
#define mempcpy(D, S, N)   ((void *) ((char *) memcpy (D, S, N) + (N)))
 
#define NDEBUG   1
 
#define __chdir   chdir
 
#define __closedir   closedir
 
#define __fchdir   fchdir
 
#define __getcwd(P, N)   xgetcwd ()
 
#define __mempcpy   mempcpy
 
#define __opendir   opendir
 
#define __readdir64   readdir
 
#define __tdestroy   tdestroy
 
#define __tfind   tfind
 
#define __tsearch   tsearch
 
#define internal_function   /* empty */
 
#define dirent64   dirent
 
#define __set_errno(Val)   errno = (Val)
 
#define FTW_NAME   ftw
 
#define NFTW_NAME   nftw
 
#define NFTW_OLD_NAME   __old_nftw
 
#define NFTW_NEW_NAME   __new_nftw
 
#define STAT   stat
 
#define LXSTAT(V, f, sb)   lstat (f,sb)
 
#define XSTAT(V, f, sb)   stat (f,sb)
 
#define FXSTATAT(V, d, f, sb, m)   fstatat (d, f, sb, m)
 
#define PATH_MAX   1024
 

Typedefs

typedef void(* __free_fn_t) (void *__nodep)
 
typedef struct node_tnode
 

Functions

static int ftw_dir (struct ftw_data *data, struct STAT *st, struct dir_data *old_dir) internal_function
 
static void tdestroy_recurse (node root, __free_fn_t freefct)
 
static void mytdestroy (void *vroot, __free_fn_t freefct)
 
static char * mystpcpy (char *dest, const char *src, size_t dest_size)
 
static char * xgetcwd (void)
 
static int object_compare (const void *p1, const void *p2)
 
static int add_object (struct ftw_data *data, struct STAT *st)
 
static int find_object (struct ftw_data *data, struct STAT *st)
 
static int open_dir_stream (int *dfdp, struct ftw_data *data, struct dir_data *dirp)
 
static int process_entry (struct ftw_data *data, struct dir_data *dir, const char *name, size_t namlen)
 
static int ftw_startup (const char *dir, int is_nftw, nftw_func_t func, dir_notification_func_t up, int descriptors, int flags)
 
int NFTW_NAME (const char *path, nftw_func_t func, dir_notification_func_t up, int descriptors, int flags)
 

Variables

static const int nftw_arr []
 
static const int ftw_arr []
 
static dir_notification_func_t upfunc
 

Macro Definition Documentation

◆ __chdir

#define __chdir   chdir

◆ __closedir

#define __closedir   closedir

◆ __fchdir

#define __fchdir   fchdir

◆ __getcwd

#define __getcwd (   P,
 
)    xgetcwd ()

◆ __mempcpy

#define __mempcpy   mempcpy

◆ __opendir

#define __opendir   opendir

◆ __readdir64

#define __readdir64   readdir

◆ __set_errno

#define __set_errno (   Val)    errno = (Val)

◆ __tdestroy

#define __tdestroy   tdestroy

◆ __tfind

#define __tfind   tfind

◆ __tsearch

#define __tsearch   tsearch

◆ dirent64

#define dirent64   dirent

◆ FTW_NAME

#define FTW_NAME   ftw

◆ FXSTATAT

#define FXSTATAT (   V,
  d,
  f,
  sb,
 
)    fstatat (d, f, sb, m)

◆ internal_function

#define internal_function   /* empty */

◆ LXSTAT

#define LXSTAT (   V,
  f,
  sb 
)    lstat (f,sb)

◆ mempcpy

#define mempcpy (   D,
  S,
 
)    ((void *) ((char *) memcpy (D, S, N) + (N)))

◆ NAMLEN

#define NAMLEN (   dirent)    strlen ((dirent)->d_name)

◆ NDEBUG

#define NDEBUG   1

◆ NFTW_NAME

#define NFTW_NAME   nftw

◆ NFTW_NEW_NAME

#define NFTW_NEW_NAME   __new_nftw

◆ NFTW_OLD_NAME

#define NFTW_OLD_NAME   __old_nftw

◆ PATH_MAX

#define PATH_MAX   1024

◆ STAT

#define STAT   stat

◆ XSTAT

#define XSTAT (   V,
  f,
  sb 
)    stat (f,sb)

Typedef Documentation

◆ __free_fn_t

typedef void(* __free_fn_t) (void *__nodep)

◆ node

typedef struct node_t * node

Function Documentation

◆ add_object()

static int add_object ( struct ftw_data data,
struct STAT st 
)
static

◆ find_object()

static int find_object ( struct ftw_data data,
struct STAT st 
)
inlinestatic

◆ ftw_dir()

static int ftw_dir ( struct ftw_data data,
struct STAT st,
struct dir_data old_dir 
)
static

◆ ftw_startup()

static int ftw_startup ( const char *  dir,
int  is_nftw,
nftw_func_t  func,
dir_notification_func_t  up,
int  descriptors,
int  flags 
)
static

◆ mystpcpy()

static char * mystpcpy ( char *  dest,
const char *  src,
size_t  dest_size 
)
static

◆ mytdestroy()

static void mytdestroy ( void *  vroot,
__free_fn_t  freefct 
)
static

◆ NFTW_NAME()

int NFTW_NAME ( const char *  path,
nftw_func_t  func,
dir_notification_func_t  up,
int  descriptors,
int  flags 
)

◆ object_compare()

static int object_compare ( const void *  p1,
const void *  p2 
)
static

◆ open_dir_stream()

static int open_dir_stream ( int *  dfdp,
struct ftw_data data,
struct dir_data dirp 
)
inlinestatic

◆ process_entry()

static int process_entry ( struct ftw_data data,
struct dir_data dir,
const char *  name,
size_t  namlen 
)
static

◆ tdestroy_recurse()

static void tdestroy_recurse ( node  root,
__free_fn_t  freefct 
)
static

◆ xgetcwd()

static char * xgetcwd ( void  )
static

Variable Documentation

◆ ftw_arr

const int ftw_arr[]
static
Initial value:
= {
}
#define FTW_NS
Definition ftw.h:36
#define FTW_F
Definition ftw.h:30
#define FTW_D
Definition ftw.h:32
#define FTW_DNR
Definition ftw.h:34

◆ nftw_arr

const int nftw_arr[]
static
Initial value:
= {
}
#define FTW_DP
Definition ftw.h:42
#define FTW_SL
Definition ftw.h:38
#define FTW_SLN
Definition ftw.h:44

◆ upfunc

dir_notification_func_t upfunc ( void  )
static