pax(8): Switch to using libc's pwcache instead of a local implementation.
[dragonfly.git] / bin / pax / extern.h
1 /*-
2  * Copyright (c) 1992 Keith Muller.
3  * Copyright (c) 1992, 1993
4  *      The Regents of the University of California.  All rights reserved.
5  *
6  * This code is derived from software contributed to Berkeley by
7  * Keith Muller of the University of California, San Diego.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  * 3. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  *      @(#)extern.h    8.2 (Berkeley) 4/18/94
34  * $FreeBSD: src/bin/pax/extern.h,v 1.6.2.2 2001/08/01 05:03:11 obrien Exp $
35  */
36
37 /*
38  * External references from each source file
39  */
40
41 #include <sys/cdefs.h>
42
43 /*
44  * ar_io.c
45  */
46 extern char *arcname;
47 extern const char *gzip_program;
48 extern int force_one_volume;
49 int ar_open (char *);
50 void ar_close (void);
51 void ar_drain (void);
52 int ar_set_wr (void);
53 int ar_app_ok (void);
54 int ar_read (char *, int);
55 int ar_write (char *, int);
56 int ar_rdsync (void);
57 int ar_fow (off_t, off_t *);
58 int ar_rev (off_t );
59 int ar_next (void);
60
61 /*
62  * ar_subs.c
63  */
64 extern u_long flcnt;
65 void list (void);
66 void extract (void);
67 void append (void);
68 void archive (void);
69 void copy (void);
70
71 /*
72  * buf_subs.c
73  */
74 extern int blksz;
75 extern int wrblksz;
76 extern int maxflt;
77 extern int rdblksz;
78 extern off_t wrlimit;
79 extern off_t rdcnt;
80 extern off_t wrcnt;
81 int wr_start (void);
82 int rd_start (void);
83 void cp_start (void);
84 int appnd_start (off_t);
85 int rd_sync (void);
86 void pback (char *, int);
87 int rd_skip (off_t);
88 void wr_fin (void);
89 int wr_rdbuf (char *, int);
90 int rd_wrbuf (char *, int);
91 int wr_skip (off_t);
92 int wr_rdfile (ARCHD *, int, off_t *);
93 int rd_wrfile (ARCHD *, int, off_t *);
94 void cp_file (ARCHD *, int, int);
95 int buf_fill (void);
96 int buf_flush (int);
97
98 /*
99  * cache.c
100  */
101 int uidtb_start (void);
102 int gidtb_start (void);
103 int usrtb_start (void);
104 int grptb_start (void);
105 char * name_uid (uid_t, int);
106 char * name_gid (gid_t, int);
107 int uid_name (char *, uid_t *);
108 int gid_name (char *, gid_t *);
109
110 /*
111  * cpio.c
112  */
113 int cpio_strd (void);
114 int cpio_trail (ARCHD *);
115 int cpio_endwr (void);
116 int cpio_id (char *, int);
117 int cpio_rd (ARCHD *, char *);
118 off_t cpio_endrd (void);
119 int cpio_stwr (void);
120 int cpio_wr (ARCHD *);
121 int vcpio_id (char *, int);
122 int crc_id (char *, int);
123 int crc_strd (void);
124 int vcpio_rd (ARCHD *, char *);
125 off_t vcpio_endrd (void);
126 int crc_stwr (void);
127 int vcpio_wr (ARCHD *);
128 int bcpio_id (char *, int);
129 int bcpio_rd (ARCHD *, char *);
130 off_t bcpio_endrd (void);
131 int bcpio_wr (ARCHD *);
132
133 /*
134  * file_subs.c
135  */
136 int file_creat (ARCHD *);
137 void file_close (ARCHD *, int);
138 int lnk_creat (ARCHD *);
139 int cross_lnk (ARCHD *);
140 int chk_same (ARCHD *);
141 int node_creat (ARCHD *);
142 int unlnk_exist (char *, int);
143 int chk_path (char *, uid_t, gid_t);
144 void set_ftime (char *fnm, time_t mtime, time_t atime, int frc);
145 int set_ids (char *, uid_t, gid_t);
146 int set_lids (char *, uid_t, gid_t);
147 void set_pmode (char *, mode_t);
148 int file_write (int, char *, int, int *, int *, int, char *);
149 void file_flush (int, char *, int);
150 void rdfile_close (ARCHD *, int *);
151 int set_crc (ARCHD *, int);
152
153 /*
154  * ftree.c
155  */
156 int ftree_start (void);
157 int ftree_add (char *, int);
158 void ftree_sel (ARCHD *);
159 void ftree_chk (void);
160 int next_file (ARCHD *);
161
162 /*
163  * gen_subs.c
164  */
165 void ls_list (ARCHD *, time_t, FILE *);
166 void ls_tty (ARCHD *);
167 int l_strncpy (char *, const char *, int);
168 u_long asc_ul (char *, int, int);
169 int ul_asc (u_long, char *, int, int);
170 u_quad_t asc_uqd (char *, int, int);
171 int uqd_asc (u_quad_t, char *, int, int);
172
173 /*
174  * getoldopt.c
175  */
176 int getoldopt (int, char **, char *);
177
178 /*
179  * options.c
180  */
181 extern FSUB fsub[];
182 extern int ford[];
183 void options (int, char **);
184 OPLIST * opt_next (void);
185 int opt_add (char *);
186 int bad_opt (void);
187 char *chdname;
188
189 /*
190  * pat_rep.c
191  */
192 int rep_add (char *);
193 int pat_add (char *, char *);
194 void pat_chk (void);
195 int pat_sel (ARCHD *);
196 int pat_match (ARCHD *);
197 int mod_name (ARCHD *);
198 int set_dest (ARCHD *, char *, int);
199
200 /*
201  * pax.c
202  */
203 extern int act;
204 extern FSUB *frmt;
205 extern int cflag;
206 extern int cwdfd;
207 extern int dflag;
208 extern int iflag;
209 extern int kflag;
210 extern int lflag;
211 extern int nflag;
212 extern int tflag;
213 extern int uflag;
214 extern int vflag;
215 extern int Dflag;
216 extern int Hflag;
217 extern int Lflag;
218 extern int Xflag;
219 extern int Yflag;
220 extern int Zflag;
221 extern int vfpart;
222 extern int patime;
223 extern int pmtime;
224 extern int nodirs;
225 extern int pmode;
226 extern int pids;
227 extern int rmleadslash;
228 extern int exit_val;
229 extern int docrc;
230 extern char *dirptr;
231 extern char *argv0;
232 extern FILE *listf;
233 extern char *tempfile;
234 extern char *tempbase;
235
236 int main (int, char **);
237 void sig_cleanup (int) __dead2;
238
239 /*
240  * sel_subs.c
241  */
242 int sel_chk (ARCHD *);
243 int grp_add (char *);
244 int usr_add (char *);
245 int trng_add (char *);
246
247 /*
248  * tables.c
249  */
250 int lnk_start (void);
251 int chk_lnk (ARCHD *);
252 void purg_lnk (ARCHD *);
253 void lnk_end (void);
254 int ftime_start (void);
255 int chk_ftime (ARCHD *);
256 int name_start (void);
257 int add_name (char *, int, char *);
258 void sub_name (char *, int *, size_t);
259 int dev_start (void);
260 int add_dev (ARCHD *);
261 int map_dev (ARCHD *, u_long, u_long);
262 int atdir_start (void);
263 void atdir_end (void);
264 void add_atdir (char *, dev_t, ino_t, time_t, time_t);
265 int get_atdir (dev_t, ino_t, time_t *, time_t *);
266 int dir_start (void);
267 void add_dir (char *, int, struct stat *, int);
268 void proc_dir (void);
269 u_int st_hash (char *, int, int);
270
271 /*
272  * tar.c
273  */
274 int tar_endwr (void);
275 off_t tar_endrd (void);
276 int tar_trail (char *, int, int *);
277 int tar_id (char *, int);
278 int tar_opt (void);
279 int tar_rd (ARCHD *, char *);
280 int tar_wr (ARCHD *);
281 int ustar_strd (void);
282 int ustar_stwr (void);
283 int ustar_id (char *, int);
284 int ustar_rd (ARCHD *, char *);
285 int ustar_wr (ARCHD *);
286
287 /*
288  * tty_subs.c
289  */
290 int tty_init (void);
291 void tty_prnt (const char *, ...) __printflike(1, 2);
292 int tty_read (char *, int);
293 void paxwarn (int, const char *, ...) __printflike(2, 3);
294 void syswarn (int, int, const char *, ...) __printflike(3, 4);