"Fossies" - the Fresh Open Source Software Archive

Member "amavisd-milter-1.7.2/compat/fts_compat.h" (6 Jan 2019, 5594 Bytes) of package /linux/privat/amavisd-milter-1.7.2.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /* TNFTPD ORIGINAL: libnetbsd/ftpfts.h */
    2 
    3 /* $NetBSD: ftpfts.h,v 1.5 2008/03/09 20:54:13 lukem Exp $ */
    4 /*  from NetBSD: fts.h,v 1.17 2008/03/07 10:38:31 lukem Exp */
    5 
    6 /*
    7  * Copyright (c) 1989, 1993
    8  *  The Regents of the University of California.  All rights reserved.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. Neither the name of the University nor the names of its contributors
   19  *    may be used to endorse or promote products derived from this software
   20  *    without specific prior written permission.
   21  *
   22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   32  * SUCH DAMAGE.
   33  *
   34  *  @(#)fts.h   8.3 (Berkeley) 8/14/94
   35  */
   36 
   37 #ifndef _FTS_H_
   38 #define _FTS_H_
   39 
   40 #ifndef __fts_stat_t
   41 #define __fts_stat_t    struct stat
   42 #endif
   43 #ifndef __fts_nlink_t
   44 #define __fts_nlink_t   nlink_t
   45 #endif
   46 #ifndef __fts_ino_t
   47 #define __fts_ino_t ino_t
   48 #endif
   49 #ifndef __fts_length_t
   50 #define __fts_length_t  unsigned int
   51 #endif
   52 #ifndef __fts_number_t
   53 #define __fts_number_t  int64_t
   54 #endif
   55 
   56 typedef struct {
   57     struct _ftsent *fts_cur;    /* current node */
   58     struct _ftsent *fts_child;  /* linked list of children */
   59     struct _ftsent **fts_array; /* sort array */
   60     dev_t fts_dev;          /* starting device # */
   61     char *fts_path;         /* path for this descent */
   62     int fts_rfd;            /* fd for root */
   63     unsigned int fts_pathlen;   /* sizeof(path) */
   64     unsigned int fts_nitems;    /* elements in the sort array */
   65     int (*fts_compar)       /* compare function */
   66         (const struct _ftsent **, const struct _ftsent **);
   67 
   68 #define FTS_COMFOLLOW   0x001       /* follow command line symlinks */
   69 #define FTS_LOGICAL 0x002       /* logical walk */
   70 #define FTS_NOCHDIR 0x004       /* don't change directories */
   71 #define FTS_NOSTAT  0x008       /* don't get stat info */
   72 #define FTS_PHYSICAL    0x010       /* physical walk */
   73 #define FTS_SEEDOT  0x020       /* return dot and dot-dot */
   74 #define FTS_XDEV    0x040       /* don't cross devices */
   75 #define FTS_WHITEOUT    0x080       /* return whiteout information */
   76 #define FTS_OPTIONMASK  0x0ff       /* valid user option mask */
   77 
   78 #define FTS_NAMEONLY    0x100       /* (private) child names only */
   79 #define FTS_STOP    0x200       /* (private) unrecoverable error */
   80     int fts_options;        /* fts_open options, global flags */
   81 } FTS;
   82 
   83 typedef struct _ftsent {
   84     struct _ftsent *fts_cycle;  /* cycle node */
   85     struct _ftsent *fts_parent; /* parent directory */
   86     struct _ftsent *fts_link;   /* next file in directory */
   87     __fts_number_t fts_number;      /* local numeric value */
   88     void *fts_pointer;          /* local address value */
   89     char *fts_accpath;      /* access path */
   90     char *fts_path;         /* root path */
   91     int fts_errno;          /* errno for this node */
   92     int fts_symfd;          /* fd for symlink */
   93     __fts_length_t fts_pathlen; /* strlen(fts_path) */
   94     __fts_length_t fts_namelen; /* strlen(fts_name) */
   95 
   96     __fts_ino_t fts_ino;        /* inode */
   97     dev_t fts_dev;          /* device */
   98     __fts_nlink_t fts_nlink;    /* link count */
   99 
  100 #define FTS_ROOTPARENTLEVEL -1
  101 #define FTS_ROOTLEVEL        0
  102     short fts_level;        /* depth (-1 to N) */
  103 
  104 #define FTS_D        1      /* preorder directory */
  105 #define FTS_DC       2      /* directory that causes cycles */
  106 #define FTS_DEFAULT  3      /* none of the above */
  107 #define FTS_DNR      4      /* unreadable directory */
  108 #define FTS_DOT      5      /* dot or dot-dot */
  109 #define FTS_DP       6      /* postorder directory */
  110 #define FTS_ERR      7      /* error; errno is set */
  111 #define FTS_F        8      /* regular file */
  112 #define FTS_INIT     9      /* initialized only */
  113 #define FTS_NS      10      /* stat(2) failed */
  114 #define FTS_NSOK    11      /* no stat(2) requested */
  115 #define FTS_SL      12      /* symbolic link */
  116 #define FTS_SLNONE  13      /* symbolic link without target */
  117 #define FTS_W       14      /* whiteout object */
  118     unsigned short fts_info;    /* user flags for FTSENT structure */
  119 
  120 #define FTS_DONTCHDIR    0x01       /* don't chdir .. to the parent */
  121 #define FTS_SYMFOLLOW    0x02       /* followed a symlink to get here */
  122 #define FTS_ISW      0x04       /* this is a whiteout object */
  123     unsigned short fts_flags;   /* private flags for FTSENT structure */
  124 
  125 #define FTS_AGAIN    1      /* read node again */
  126 #define FTS_FOLLOW   2      /* follow symbolic link */
  127 #define FTS_NOINSTR  3      /* no instructions */
  128 #define FTS_SKIP     4      /* discard node */
  129     unsigned short fts_instr;   /* fts_set() instructions */
  130 
  131     __fts_stat_t *fts_statp;    /* stat(2) information */
  132     char fts_name[1];       /* file name */
  133 } FTSENT;
  134 
  135 FTSENT  *fts_children(FTS *, int);
  136 int  fts_close(FTS *);
  137 FTS *fts_open(char * const *, int,
  138         int (*)(const FTSENT **, const FTSENT **));
  139 FTSENT  *fts_read(FTS *);
  140 int  fts_set(FTS *, FTSENT *, int);
  141 
  142 #endif /* !_FTS_H_ */