2 * File types as returned by find_files()
7 Copyright (C) 2000, 2001 Kern Sibbald and John Walker
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 #include "lib/fnmatch.h"
35 * NOTE!!! These go on the tape, so don't change them. If
36 * need be, add to them.
38 #define FT_LNKSAVED 1 /* hard link to file already saved */
39 #define FT_REGE 2 /* Regular file but empty */
40 #define FT_REG 3 /* Regular file */
41 #define FT_LNK 4 /* Soft Link */
42 #define FT_DIR 5 /* Directory */
43 #define FT_SPEC 6 /* Special file -- chr, blk, fifo, sock */
44 #define FT_NOACCESS 7 /* Not able to access */
45 #define FT_NOFOLLOW 8 /* Could not follow link */
46 #define FT_NOSTAT 9 /* Could not stat file */
47 #define FT_NOCHG 10 /* Incremental option, file not changed */
48 #define FT_DIRNOCHG 11 /* Incremental option, directory not changed */
49 #define FT_ISARCH 12 /* Trying to save archive file */
50 #define FT_NORECURSE 13 /* No recursion into directory */
51 #define FT_NOFSCHG 14 /* Different file system, prohibited */
52 #define FT_NOOPEN 15 /* Could not open directory */
55 #define FO_MD5 0x1 /* Do MD5 checksum */
56 #define FO_GZIP 0x2 /* Do Zlib compression */
59 #define OPT_compute_MD5 0x01 /* compute MD5 of file's data */
60 #define OPT_GZIP_compression 0x02 /* use GZIP compression */
61 #define OPT_no_recursion 0x04 /* no recursion in directories */
62 #define OPT_multifs 0x08 /* multiple file systems */
65 struct s_included_file {
66 struct s_included_file *next;
67 int options; /* backup options */
68 int level; /* compression level */
69 int len; /* length of fname */
70 int pattern; /* set if pattern */
71 char VerifyOpts[20]; /* Options for verify */
75 struct s_excluded_file {
76 struct s_excluded_file *next;
83 * Definition of the find_files packet passed as the
84 * first argument to the find_files callback subroutine.
87 char *fname; /* filename */
88 char *link; /* link if file linked */
89 struct stat statp; /* stat packet */
90 int type; /* FT_ type from above */
91 int flags; /* control flags */
92 int ff_errno; /* errno */
93 int incremental; /* do incremental save */
94 time_t save_time; /* start of incremental time */
95 int no_recursion; /* do not recurse into sub directories */
96 int mtime_only; /* incremental on mtime_only */
97 int dereference; /* follow links */
98 int compute_MD5; /* compute MD5 checksum */
99 int GZIP_compression; /* compress the file */
100 int GZIP_level; /* compression level */
101 int one_file_system; /* do not traverse file systems */
102 int atime_preserve; /* preserve access times */
103 int null_output_device; /* using null output device */
105 struct s_included_file *included_files_list;
106 struct s_excluded_file *excluded_files_list;
107 struct s_excluded_file *excluded_paths_list;
109 struct f_link *linklist; /* hard linked files */
113 FF_PKT *init_find_files();
114 void set_find_options(FF_PKT *ff, int incremental, time_t mtime);
115 int find_files(FF_PKT *ff, int sub(FF_PKT *ff_pkt, void *hpkt), void *pkt);
116 void term_find_files(FF_PKT *ff);
119 void init_include_exclude_files(FF_PKT *ff);
120 void term_include_exclude_files(FF_PKT *ff);
121 void add_fname_to_include_list(FF_PKT *ff, int prefixed, char *fname);
122 void add_fname_to_exclude_list(FF_PKT *ff, char *fname);
123 struct s_included_file *get_next_included_file(
124 FF_PKT *ff, struct s_included_file *inc);
125 int file_is_excluded(FF_PKT *ff, char *file);
126 int file_is_included(FF_PKT *ff, char *file);
128 #endif /* __FILES_H */