source: rtems/cpukit/libmisc/shell/fts.h @ 2649eef

4.104.115
Last change on this file since 2649eef was 1ff9922, checked in by Chris Johns <chrisj@…>, on 12/22/07 at 08:27:18

2007-12-22 Chris Johns <chrisj@…>

  • configure.ac: fixed bug that always enabled strict order mutexes.
  • score/inline/rtems/score/coremutex.inl: Fixed coding standard.
  • score/src/coremutex.c: Add the holder's thread to the lock_mutex list if the mutex is initialised locked.
  • libnetworking/rtems/rtems_glue.c: Changed semaphore error message to show the error is an rtems-net error.
  • libmisc/monitor/mon-network.c: Removed warnings.
  • telnetd/icmds.c: Changed shell_* to rtems_shell_*.
  • score/Makefile.am: Fixed typo that stopped 'make tags' working.
  • libmisc/shell/err.c, libmisc/shell/err.h, libmisc/shell/errx.c, libmisc/shell/extern-cp.h, libmisc/shell/fts.c, libmisc/shell/fts.h, libmisc/shell/main_cp.c, libmisc/shell/utils-cp.c, libmisc/shell/verr.c, libmisc/shell/verrx.c, libmisc/shell/vwarn.c, libmisc/shell/vwarnx.c, libmisc/shell/warn.c, libmisc/shell/warnx.c: New. Ported from BSD.
  • libmisc/shell/shellconfig.h: Add the cp command.
  • libmisc/Makefile.am: Add the new files to the shell.
  • libmisc/shell/shell.c, libmisc/shell/shell.h: Add scripting support.
  • libblock/src/flashdisk.c: Fixed disk drive count size setting bug.
  • Property mode set to 100644
File size: 5.6 KB
Line 
1/*      $NetBSD: fts.h,v 1.14 2005/09/13 01:44:32 christos Exp $        */
2
3/*
4 * Copyright (c) 1989, 1993
5 *      The Regents of the University of California.  All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 *    notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 *    notice, this list of conditions and the following disclaimer in the
14 *    documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the University nor the names of its contributors
16 *    may be used to endorse or promote products derived from this software
17 *    without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 *      @(#)fts.h       8.3 (Berkeley) 8/14/94
32 */
33
34#ifndef _FTS_H_
35#define _FTS_H_
36
37#ifndef __fts_stat_t
38#define __fts_stat_t    struct stat
39#endif
40#ifndef __fts_nlink_t
41#define __fts_nlink_t   nlink_t
42#endif
43#ifndef __fts_ino_t
44#define __fts_ino_t     ino_t
45#endif
46
47typedef struct {
48        struct _ftsent *fts_cur;        /* current node */
49        struct _ftsent *fts_child;      /* linked list of children */
50        struct _ftsent **fts_array;     /* sort array */
51        dev_t fts_dev;                  /* starting device # */
52        char *fts_path;                 /* path for this descent */
53        int fts_rfd;                    /* fd for root */
54        u_int fts_pathlen;              /* sizeof(path) */
55        u_int fts_nitems;               /* elements in the sort array */
56        int (*fts_compar)               /* compare function */
57                (const struct _ftsent **, const struct _ftsent **);
58
59#define FTS_COMFOLLOW   0x001           /* follow command line symlinks */
60#define FTS_LOGICAL     0x002           /* logical walk */
61#define FTS_NOCHDIR     0x004           /* don't change directories */
62#define FTS_NOSTAT      0x008           /* don't get stat info */
63#define FTS_PHYSICAL    0x010           /* physical walk */
64#define FTS_SEEDOT      0x020           /* return dot and dot-dot */
65#define FTS_XDEV        0x040           /* don't cross devices */
66#define FTS_WHITEOUT    0x080           /* return whiteout information */
67#define FTS_OPTIONMASK  0x0ff           /* valid user option mask */
68
69#define FTS_NAMEONLY    0x100           /* (private) child names only */
70#define FTS_STOP        0x200           /* (private) unrecoverable error */
71        int fts_options;                /* fts_open options, global flags */
72} FTS;
73
74typedef struct _ftsent {
75        struct _ftsent *fts_cycle;      /* cycle node */
76        struct _ftsent *fts_parent;     /* parent directory */
77        struct _ftsent *fts_link;       /* next file in directory */
78        long fts_number;                /* local numeric value */
79        void *fts_pointer;              /* local address value */
80        char *fts_accpath;              /* access path */
81        char *fts_path;                 /* root path */
82        int fts_errno;                  /* errno for this node */
83        int fts_symfd;                  /* fd for symlink */
84        u_short fts_pathlen;            /* strlen(fts_path) */
85        u_short fts_namelen;            /* strlen(fts_name) */
86
87        __fts_ino_t fts_ino;            /* inode */
88        dev_t fts_dev;                  /* device */
89        __fts_nlink_t fts_nlink;        /* link count */
90
91#define FTS_ROOTPARENTLEVEL     -1
92#define FTS_ROOTLEVEL            0
93        short fts_level;                /* depth (-1 to N) */
94
95#define FTS_D            1              /* preorder directory */
96#define FTS_DC           2              /* directory that causes cycles */
97#define FTS_DEFAULT      3              /* none of the above */
98#define FTS_DNR          4              /* unreadable directory */
99#define FTS_DOT          5              /* dot or dot-dot */
100#define FTS_DP           6              /* postorder directory */
101#define FTS_ERR          7              /* error; errno is set */
102#define FTS_F            8              /* regular file */
103#define FTS_INIT         9              /* initialized only */
104#define FTS_NS          10              /* stat(2) failed */
105#define FTS_NSOK        11              /* no stat(2) requested */
106#define FTS_SL          12              /* symbolic link */
107#define FTS_SLNONE      13              /* symbolic link without target */
108#define FTS_W           14              /* whiteout object */
109        u_short fts_info;               /* user flags for FTSENT structure */
110
111#define FTS_DONTCHDIR    0x01           /* don't chdir .. to the parent */
112#define FTS_SYMFOLLOW    0x02           /* followed a symlink to get here */
113#define FTS_ISW          0x04           /* this is a whiteout object */
114        u_short fts_flags;              /* private flags for FTSENT structure */
115
116#define FTS_AGAIN        1              /* read node again */
117#define FTS_FOLLOW       2              /* follow symbolic link */
118#define FTS_NOINSTR      3              /* no instructions */
119#define FTS_SKIP         4              /* discard node */
120        u_short fts_instr;              /* fts_set() instructions */
121
122        __fts_stat_t *fts_statp;        /* stat(2) information */
123        char fts_name[1];               /* file name */
124} FTSENT;
125
126#include <sys/cdefs.h>
127
128#define __RENAME(n)
129#define fts_children rtems_shell_fts_children
130#define fts_close    rtems_shell_fts_close
131#define fts_open     rtems_shell_fts_open
132#define fts_read     rtems_shell_fts_read
133#define fts_set      rtems_shell_fts_set
134
135__BEGIN_DECLS
136#ifndef __LIBC12_SOURCE__
137FTSENT  *fts_children(FTS *, int)               __RENAME(__fts_children30);
138int      fts_close(FTS *)                       __RENAME(__fts_close30);
139FTS     *fts_open(char * const *, int,
140    int (*)(const FTSENT **, const FTSENT **))  __RENAME(__fts_open30);
141FTSENT  *fts_read(FTS *)                        __RENAME(__fts_read30);
142int      fts_set(FTS *, FTSENT *, int)          __RENAME(__fts_set30);
143#endif
144__END_DECLS
145
146#endif /* !_FTS_H_ */
Note: See TracBrowser for help on using the repository browser.