11556Srgrimes/*-
21556Srgrimes * Copyright (c) 1992 Keith Muller.
31556Srgrimes * Copyright (c) 1992, 1993
41556Srgrimes *	The Regents of the University of California.  All rights reserved.
51556Srgrimes *
61556Srgrimes * This code is derived from software contributed to Berkeley by
71556Srgrimes * Keith Muller of the University of California, San Diego.
81556Srgrimes *
91556Srgrimes * Redistribution and use in source and binary forms, with or without
101556Srgrimes * modification, are permitted provided that the following conditions
111556Srgrimes * are met:
121556Srgrimes * 1. Redistributions of source code must retain the above copyright
131556Srgrimes *    notice, this list of conditions and the following disclaimer.
141556Srgrimes * 2. Redistributions in binary form must reproduce the above copyright
151556Srgrimes *    notice, this list of conditions and the following disclaimer in the
161556Srgrimes *    documentation and/or other materials provided with the distribution.
171556Srgrimes * 4. Neither the name of the University nor the names of its contributors
181556Srgrimes *    may be used to endorse or promote products derived from this software
191556Srgrimes *    without specific prior written permission.
201556Srgrimes *
211556Srgrimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
221556Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
231556Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
241556Srgrimes * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
251556Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
261556Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
271556Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
281556Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
291556Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
301556Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
311556Srgrimes * SUCH DAMAGE.
321556Srgrimes *
331556Srgrimes *	@(#)extern.h	8.2 (Berkeley) 4/18/94
3450471Speter * $FreeBSD$
351556Srgrimes */
361556Srgrimes
371556Srgrimes/*
381556Srgrimes * External references from each source file
391556Srgrimes */
401556Srgrimes
411556Srgrimes#include <sys/cdefs.h>
421556Srgrimes
431556Srgrimes/*
441556Srgrimes * ar_io.c
451556Srgrimes */
46114583Smarkmextern const char *arcname;
4776286Skrisextern const char *gzip_program;
48114583Smarkmint ar_open(const char *);
4990110Simpvoid ar_close(void);
5090110Simpvoid ar_drain(void);
5190110Simpint ar_set_wr(void);
5290110Simpint ar_app_ok(void);
5390110Simpint ar_read(char *, int);
5490110Simpint ar_write(char *, int);
5590110Simpint ar_rdsync(void);
5690110Simpint ar_fow(off_t, off_t *);
5790110Simpint ar_rev(off_t );
5890110Simpint ar_next(void);
591556Srgrimes
601556Srgrimes/*
611556Srgrimes * ar_subs.c
621556Srgrimes */
631556Srgrimesextern u_long flcnt;
6490110Simpvoid list(void);
6590110Simpvoid extract(void);
6690110Simpvoid append(void);
6790110Simpvoid archive(void);
6890110Simpvoid copy(void);
691556Srgrimes
701556Srgrimes/*
711556Srgrimes * buf_subs.c
721556Srgrimes */
731556Srgrimesextern int blksz;
741556Srgrimesextern int wrblksz;
751556Srgrimesextern int maxflt;
761556Srgrimesextern int rdblksz;
771556Srgrimesextern off_t wrlimit;
781556Srgrimesextern off_t rdcnt;
791556Srgrimesextern off_t wrcnt;
8090110Simpint wr_start(void);
8190110Simpint rd_start(void);
8290110Simpvoid cp_start(void);
8390110Simpint appnd_start(off_t);
8490110Simpint rd_sync(void);
8590110Simpvoid pback(char *, int);
8690110Simpint rd_skip(off_t);
8790110Simpvoid wr_fin(void);
8890110Simpint wr_rdbuf(char *, int);
8990110Simpint rd_wrbuf(char *, int);
9090110Simpint wr_skip(off_t);
9190110Simpint wr_rdfile(ARCHD *, int, off_t *);
9290110Simpint rd_wrfile(ARCHD *, int, off_t *);
9390110Simpvoid cp_file(ARCHD *, int, int);
9490110Simpint buf_fill(void);
9590110Simpint buf_flush(int);
961556Srgrimes
971556Srgrimes/*
981556Srgrimes * cache.c
991556Srgrimes */
10090110Simpint uidtb_start(void);
10190110Simpint gidtb_start(void);
10290110Simpint usrtb_start(void);
10390110Simpint grptb_start(void);
104114583Smarkmconst char * name_uid(uid_t, int);
105114583Smarkmconst char * name_gid(gid_t, int);
10690110Simpint uid_name(char *, uid_t *);
10790110Simpint gid_name(char *, gid_t *);
1081556Srgrimes
1091556Srgrimes/*
1101556Srgrimes * cpio.c
1111556Srgrimes */
11290110Simpint cpio_strd(void);
11390110Simpint cpio_trail(ARCHD *);
11490110Simpint cpio_endwr(void);
11590110Simpint cpio_id(char *, int);
11690110Simpint cpio_rd(ARCHD *, char *);
11790110Simpoff_t cpio_endrd(void);
11890110Simpint cpio_stwr(void);
11990110Simpint cpio_wr(ARCHD *);
12090110Simpint vcpio_id(char *, int);
12190110Simpint crc_id(char *, int);
12290110Simpint crc_strd(void);
12390110Simpint vcpio_rd(ARCHD *, char *);
12490110Simpoff_t vcpio_endrd(void);
12590110Simpint crc_stwr(void);
12690110Simpint vcpio_wr(ARCHD *);
12790110Simpint bcpio_id(char *, int);
12890110Simpint bcpio_rd(ARCHD *, char *);
12990110Simpoff_t bcpio_endrd(void);
13090110Simpint bcpio_wr(ARCHD *);
1311556Srgrimes
1321556Srgrimes/*
1331556Srgrimes * file_subs.c
1341556Srgrimes */
13590110Simpint file_creat(ARCHD *);
13690110Simpvoid file_close(ARCHD *, int);
13790110Simpint lnk_creat(ARCHD *);
13890110Simpint cross_lnk(ARCHD *);
13990110Simpint chk_same(ARCHD *);
14090110Simpint node_creat(ARCHD *);
14190110Simpint unlnk_exist(char *, int);
14290110Simpint chk_path(char *, uid_t, gid_t);
14390110Simpvoid set_ftime(char *fnm, time_t mtime, time_t atime, int frc);
14490110Simpint set_ids(char *, uid_t, gid_t);
14590110Simpint set_lids(char *, uid_t, gid_t);
14690110Simpvoid set_pmode(char *, mode_t);
14790110Simpint file_write(int, char *, int, int *, int *, int, char *);
14890110Simpvoid file_flush(int, char *, int);
14990110Simpvoid rdfile_close(ARCHD *, int *);
15090110Simpint set_crc(ARCHD *, int);
1511556Srgrimes
1521556Srgrimes/*
1531556Srgrimes * ftree.c
1541556Srgrimes */
15590110Simpint ftree_start(void);
15690110Simpint ftree_add(char *, int);
15790110Simpvoid ftree_sel(ARCHD *);
158140097Sbrianvoid ftree_notsel(void);
15990110Simpvoid ftree_chk(void);
16090110Simpint next_file(ARCHD *);
1611556Srgrimes
1621556Srgrimes/*
1631556Srgrimes * gen_subs.c
1641556Srgrimes */
16590110Simpvoid ls_list(ARCHD *, time_t, FILE *);
16690110Simpvoid ls_tty(ARCHD *);
167114583Smarkmint l_strncpy(char *, const char *, int);
16890110Simpu_long asc_ul(char *, int, int);
16990110Simpint ul_asc(u_long, char *, int, int);
1701556Srgrimes#ifndef NET2_STAT
17190110Simpu_quad_t asc_uqd(char *, int, int);
17290110Simpint uqd_asc(u_quad_t, char *, int, int);
1731556Srgrimes#endif
1741556Srgrimes
1751556Srgrimes/*
17676351Skris * getoldopt.c
17776351Skris */
178114583Smarkmint getoldopt(int, char **, const char *);
17976351Skris
18076351Skris/*
1811556Srgrimes * options.c
1821556Srgrimes */
1831556Srgrimesextern FSUB fsub[];
1841556Srgrimesextern int ford[];
18590110Simpvoid options(int, char **);
18690110SimpOPLIST * opt_next(void);
187114583Smarkmint opt_add(const char *);
18890110Simpint bad_opt(void);
189241720Sedextern char *chdname;
1901556Srgrimes
1911556Srgrimes/*
1921556Srgrimes * pat_rep.c
1931556Srgrimes */
19490110Simpint rep_add(char *);
19590110Simpint pat_add(char *, char *);
19690110Simpvoid pat_chk(void);
19790110Simpint pat_sel(ARCHD *);
19890110Simpint pat_match(ARCHD *);
19990110Simpint mod_name(ARCHD *);
20090110Simpint set_dest(ARCHD *, char *, int);
2011556Srgrimes
2021556Srgrimes/*
2031556Srgrimes * pax.c
2041556Srgrimes */
2051556Srgrimesextern int act;
2061556Srgrimesextern FSUB *frmt;
2071556Srgrimesextern int cflag;
20876351Skrisextern int cwdfd;
2091556Srgrimesextern int dflag;
2101556Srgrimesextern int iflag;
2111556Srgrimesextern int kflag;
2121556Srgrimesextern int lflag;
2131556Srgrimesextern int nflag;
2141556Srgrimesextern int tflag;
2151556Srgrimesextern int uflag;
2161556Srgrimesextern int vflag;
2171556Srgrimesextern int Dflag;
2181556Srgrimesextern int Hflag;
2191556Srgrimesextern int Lflag;
2201556Srgrimesextern int Xflag;
2211556Srgrimesextern int Yflag;
2221556Srgrimesextern int Zflag;
2231556Srgrimesextern int vfpart;
2241556Srgrimesextern int patime;
2251556Srgrimesextern int pmtime;
22676351Skrisextern int nodirs;
2271556Srgrimesextern int pmode;
2281556Srgrimesextern int pids;
22976351Skrisextern int rmleadslash;
2301556Srgrimesextern int exit_val;
2311556Srgrimesextern int docrc;
2321556Srgrimesextern char *dirptr;
233114583Smarkmextern const char *argv0;
234241720Sedextern sigset_t s_mask;
23576351Skrisextern FILE *listf;
23676016Skrisextern char *tempfile;
23776016Skrisextern char *tempbase;
23876016Skris
23990110Simpvoid sig_cleanup(int);
2401556Srgrimes
2411556Srgrimes/*
2421556Srgrimes * sel_subs.c
2431556Srgrimes */
24490110Simpint sel_chk(ARCHD *);
24590110Simpint grp_add(char *);
24690110Simpint usr_add(char *);
24790110Simpint trng_add(char *);
2481556Srgrimes
2491556Srgrimes/*
2501556Srgrimes * tables.c
2511556Srgrimes */
25290110Simpint lnk_start(void);
25390110Simpint chk_lnk(ARCHD *);
25490110Simpvoid purg_lnk(ARCHD *);
25590110Simpvoid lnk_end(void);
25690110Simpint ftime_start(void);
25790110Simpint chk_ftime(ARCHD *);
25890110Simpint name_start(void);
25990110Simpint add_name(char *, int, char *);
26090110Simpvoid sub_name(char *, int *, size_t);
26190110Simpint dev_start(void);
26290110Simpint add_dev(ARCHD *);
26390110Simpint map_dev(ARCHD *, u_long, u_long);
26490110Simpint atdir_start(void);
26590110Simpvoid atdir_end(void);
26690110Simpvoid add_atdir(char *, dev_t, ino_t, time_t, time_t);
26790110Simpint get_atdir(dev_t, ino_t, time_t *, time_t *);
26890110Simpint dir_start(void);
26990110Simpvoid add_dir(char *, int, struct stat *, int);
27090110Simpvoid proc_dir(void);
27190110Simpu_int st_hash(char *, int, int);
2721556Srgrimes
2731556Srgrimes/*
2741556Srgrimes * tar.c
2751556Srgrimes */
27690110Simpint tar_endwr(void);
27790110Simpoff_t tar_endrd(void);
27890110Simpint tar_trail(char *, int, int *);
27990110Simpint tar_id(char *, int);
28090110Simpint tar_opt(void);
28190110Simpint tar_rd(ARCHD *, char *);
28290110Simpint tar_wr(ARCHD *);
28390110Simpint ustar_strd(void);
28490110Simpint ustar_stwr(void);
28590110Simpint ustar_id(char *, int);
28690110Simpint ustar_rd(ARCHD *, char *);
28790110Simpint ustar_wr(ARCHD *);
2881556Srgrimes
2891556Srgrimes/*
2901556Srgrimes * tty_subs.c
2911556Srgrimes */
29290110Simpint tty_init(void);
29390110Simpvoid tty_prnt(const char *, ...) __printflike(1, 2);
29490110Simpint tty_read(char *, int);
29590110Simpvoid paxwarn(int, const char *, ...) __printflike(2, 3);
29690110Simpvoid syswarn(int, int, const char *, ...) __printflike(3, 4);
297