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