extern.h revision 1.39
11.39Sagc/*	$NetBSD: extern.h,v 1.39 2003/08/07 09:05:20 agc Exp $	*/
21.4Scgd
31.1Sjtc/*-
41.1Sjtc * Copyright (c) 1992, 1993
51.1Sjtc *	The Regents of the University of California.  All rights reserved.
61.39Sagc *
71.39Sagc * This code is derived from software contributed to Berkeley by
81.39Sagc * Keith Muller of the University of California, San Diego.
91.39Sagc *
101.39Sagc * Redistribution and use in source and binary forms, with or without
111.39Sagc * modification, are permitted provided that the following conditions
121.39Sagc * are met:
131.39Sagc * 1. Redistributions of source code must retain the above copyright
141.39Sagc *    notice, this list of conditions and the following disclaimer.
151.39Sagc * 2. Redistributions in binary form must reproduce the above copyright
161.39Sagc *    notice, this list of conditions and the following disclaimer in the
171.39Sagc *    documentation and/or other materials provided with the distribution.
181.39Sagc * 3. Neither the name of the University nor the names of its contributors
191.39Sagc *    may be used to endorse or promote products derived from this software
201.39Sagc *    without specific prior written permission.
211.39Sagc *
221.39Sagc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
231.39Sagc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
241.39Sagc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
251.39Sagc * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
261.39Sagc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
271.39Sagc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
281.39Sagc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
291.39Sagc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
301.39Sagc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
311.39Sagc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
321.39Sagc * SUCH DAMAGE.
331.39Sagc *
341.39Sagc *	@(#)extern.h	8.2 (Berkeley) 4/18/94
351.39Sagc */
361.39Sagc
371.39Sagc/*-
381.39Sagc * Copyright (c) 1992 Keith Muller.
391.1Sjtc *
401.1Sjtc * This code is derived from software contributed to Berkeley by
411.1Sjtc * Keith Muller of the University of California, San Diego.
421.1Sjtc *
431.1Sjtc * Redistribution and use in source and binary forms, with or without
441.1Sjtc * modification, are permitted provided that the following conditions
451.1Sjtc * are met:
461.1Sjtc * 1. Redistributions of source code must retain the above copyright
471.1Sjtc *    notice, this list of conditions and the following disclaimer.
481.1Sjtc * 2. Redistributions in binary form must reproduce the above copyright
491.1Sjtc *    notice, this list of conditions and the following disclaimer in the
501.1Sjtc *    documentation and/or other materials provided with the distribution.
511.1Sjtc * 3. All advertising materials mentioning features or use of this software
521.1Sjtc *    must display the following acknowledgement:
531.1Sjtc *	This product includes software developed by the University of
541.1Sjtc *	California, Berkeley and its contributors.
551.1Sjtc * 4. Neither the name of the University nor the names of its contributors
561.1Sjtc *    may be used to endorse or promote products derived from this software
571.1Sjtc *    without specific prior written permission.
581.1Sjtc *
591.1Sjtc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
601.1Sjtc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
611.1Sjtc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
621.1Sjtc * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
631.1Sjtc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
641.1Sjtc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
651.1Sjtc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
661.1Sjtc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
671.1Sjtc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
681.1Sjtc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
691.1Sjtc * SUCH DAMAGE.
701.1Sjtc *
711.4Scgd *	@(#)extern.h	8.2 (Berkeley) 4/18/94
721.1Sjtc */
731.29Stv
741.1Sjtc/*
751.1Sjtc * External references from each source file
761.1Sjtc */
771.1Sjtc
781.1Sjtc#include <sys/cdefs.h>
791.30Stv#include <err.h>
801.1Sjtc
811.1Sjtc/*
821.1Sjtc * ar_io.c
831.1Sjtc */
841.11Smycroftextern const char *arcname;
851.19Sisextern int curdirfd;
861.11Smycroftextern const char *gzip_program;
871.16Schristosextern time_t starttime;
881.23Sthorpejextern int force_one_volume;
891.31Schristosextern char *chdname;
901.31Schristosextern int forcelocal;
911.33Schristosextern int secure;
921.31Schristos
931.26Slukemint ar_open(const char *);
941.26Slukemvoid ar_close(void);
951.26Slukemvoid ar_drain(void);
961.26Slukemint ar_set_wr(void);
971.26Slukemint ar_app_ok(void);
981.21Sitohy#ifdef SYS_NO_RESTART
991.26Slukemint read_with_restart(int, void *, int);
1001.26Slukemint write_with_restart(int, void *, int);
1011.21Sitohy#else
1021.21Sitohy#define read_with_restart	read
1031.21Sitohy#define write_with_restart	write
1041.21Sitohy#endif
1051.26Slukemint xread(int, void *, int);
1061.26Slukemint xwrite(int, void *, int);
1071.26Slukemint ar_read(char *, int);
1081.26Slukemint ar_write(char *, int);
1091.26Slukemint ar_rdsync(void);
1101.26Slukemint ar_fow(off_t, off_t *);
1111.26Slukemint ar_rev(off_t );
1121.26Slukemint ar_next(void);
1131.26Slukemvoid ar_summary(int);
1141.26Slukemint ar_dochdir(char *);
1151.1Sjtc
1161.1Sjtc/*
1171.1Sjtc * ar_subs.c
1181.1Sjtc */
1191.1Sjtcextern u_long flcnt;
1201.16Schristosextern ARCHD archd;
1211.26Slukemvoid list(void);
1221.26Slukemvoid extract(void);
1231.26Slukemvoid append(void);
1241.26Slukemvoid archive(void);
1251.26Slukemvoid copy(void);
1261.1Sjtc
1271.1Sjtc/*
1281.1Sjtc * buf_subs.c
1291.1Sjtc */
1301.1Sjtcextern int blksz;
1311.1Sjtcextern int wrblksz;
1321.1Sjtcextern int maxflt;
1331.1Sjtcextern int rdblksz;
1341.1Sjtcextern off_t wrlimit;
1351.1Sjtcextern off_t rdcnt;
1361.1Sjtcextern off_t wrcnt;
1371.26Slukemint wr_start(void);
1381.26Slukemint rd_start(void);
1391.26Slukemvoid cp_start(void);
1401.26Slukemint appnd_start(off_t);
1411.26Slukemint rd_sync(void);
1421.26Slukemvoid pback(char *, int);
1431.26Slukemint rd_skip(off_t);
1441.26Slukemvoid wr_fin(void);
1451.26Slukemint wr_rdbuf(char *, int);
1461.26Slukemint rd_wrbuf(char *, int);
1471.26Slukemint wr_skip(off_t);
1481.26Slukemint wr_rdfile(ARCHD *, int, off_t *);
1491.26Slukemint rd_wrfile(ARCHD *, int, off_t *);
1501.26Slukemvoid cp_file(ARCHD *, int, int);
1511.26Slukemint buf_fill(void);
1521.26Slukemint buf_flush(int);
1531.1Sjtc
1541.1Sjtc/*
1551.1Sjtc * cpio.c
1561.1Sjtc */
1571.8Smrgextern int cpio_swp_head;
1581.26Slukemint cpio_strd(void);
1591.26Slukemint cpio_subtrail(ARCHD *);
1601.26Slukemint cpio_endwr(void);
1611.26Slukemint cpio_id(char *, int);
1621.26Slukemint cpio_rd(ARCHD *, char *);
1631.26Slukemoff_t cpio_endrd(void);
1641.26Slukemint cpio_stwr(void);
1651.26Slukemint cpio_wr(ARCHD *);
1661.26Slukemint vcpio_id(char *, int);
1671.26Slukemint crc_id(char *, int);
1681.26Slukemint crc_strd(void);
1691.26Slukemint vcpio_rd(ARCHD *, char *);
1701.26Slukemoff_t vcpio_endrd(void);
1711.26Slukemint crc_stwr(void);
1721.26Slukemint vcpio_wr(ARCHD *);
1731.26Slukemint bcpio_id(char *, int);
1741.26Slukemint bcpio_rd(ARCHD *, char *);
1751.26Slukemoff_t bcpio_endrd(void);
1761.26Slukemint bcpio_wr(ARCHD *);
1771.1Sjtc
1781.1Sjtc/*
1791.1Sjtc * file_subs.c
1801.1Sjtc */
1811.35Schristosextern char *gnu_name_string, *gnu_link_string;
1821.26Slukemint file_creat(ARCHD *);
1831.26Slukemvoid file_close(ARCHD *, int);
1841.26Slukemint lnk_creat(ARCHD *);
1851.26Slukemint cross_lnk(ARCHD *);
1861.26Slukemint chk_same(ARCHD *);
1871.26Slukemint node_creat(ARCHD *);
1881.26Slukemint unlnk_exist(char *, int);
1891.26Slukemint chk_path(char *, uid_t, gid_t);
1901.26Slukemvoid set_ftime(char *fnm, time_t mtime, time_t atime, int frc);
1911.26Slukemint set_ids(char *, uid_t, gid_t);
1921.26Slukemvoid set_pmode(char *, mode_t);
1931.26Slukemvoid set_chflags(char *fnm, u_int32_t flags);
1941.26Slukemint file_write(int, char *, int, int *, int *, int, char *);
1951.26Slukemvoid file_flush(int, char *, int);
1961.26Slukemvoid rdfile_close(ARCHD *, int *);
1971.26Slukemint set_crc(ARCHD *, int);
1981.1Sjtc
1991.1Sjtc/*
2001.1Sjtc * ftree.c
2011.1Sjtc */
2021.26Slukemint ftree_start(void);
2031.26Slukemint ftree_add(char *, int);
2041.26Slukemvoid ftree_sel(ARCHD *);
2051.26Slukemvoid ftree_chk(void);
2061.26Slukemint next_file(ARCHD *);
2071.1Sjtc
2081.1Sjtc/*
2091.1Sjtc * gen_subs.c
2101.1Sjtc */
2111.31Schristosvoid ls_list(ARCHD *, time_t, FILE *);
2121.26Slukemvoid ls_tty(ARCHD *);
2131.31Schristosvoid safe_print(const char *, FILE *);
2141.26Slukemu_long asc_ul(char *, int, int);
2151.26Slukemint ul_asc(u_long, char *, int, int);
2161.32Smrg#if !defined(NET2_STAT) && !defined(_LP64)
2171.28Slukemunsigned long long asc_ull(char *, int, int);
2181.28Slukemint ull_asc(unsigned long long, char *, int, int);
2191.1Sjtc#endif
2201.26Slukemint check_Aflag(void);
2211.3Scgd
2221.22Sitohy/*
2231.3Scgd * getoldopt.c
2241.3Scgd */
2251.24Sthorpejstruct option;
2261.26Slukemint getoldopt(int, char **, const char *, struct option *, int *);
2271.1Sjtc
2281.1Sjtc/*
2291.1Sjtc * options.c
2301.1Sjtc */
2311.1Sjtcextern FSUB fsub[];
2321.1Sjtcextern int ford[];
2331.26Slukemvoid options(int, char **);
2341.26SlukemOPLIST * opt_next(void);
2351.26Slukemint opt_add(const char *);
2361.26Slukemint bad_opt(void);
2371.31Schristosint mkpath(char *);
2381.31Schristoschar *chdname;
2391.1Sjtc
2401.1Sjtc/*
2411.1Sjtc * pat_rep.c
2421.1Sjtc */
2431.26Slukemint rep_add(char *);
2441.31Schristosint pat_add(char *, char *);
2451.26Slukemvoid pat_chk(void);
2461.26Slukemint pat_sel(ARCHD *);
2471.26Slukemint pat_match(ARCHD *);
2481.26Slukemint mod_name(ARCHD *);
2491.26Slukemint set_dest(ARCHD *, char *, int);
2501.1Sjtc
2511.1Sjtc/*
2521.1Sjtc * pax.c
2531.1Sjtc */
2541.1Sjtcextern int act;
2551.1Sjtcextern FSUB *frmt;
2561.17Stronextern int Aflag;
2571.1Sjtcextern int cflag;
2581.31Schristosextern int cwdfd;
2591.1Sjtcextern int dflag;
2601.1Sjtcextern int iflag;
2611.37Swizextern int jflag;
2621.1Sjtcextern int kflag;
2631.1Sjtcextern int lflag;
2641.1Sjtcextern int nflag;
2651.1Sjtcextern int tflag;
2661.1Sjtcextern int uflag;
2671.1Sjtcextern int vflag;
2681.5Smrgextern int zflag;
2691.1Sjtcextern int Dflag;
2701.1Sjtcextern int Hflag;
2711.1Sjtcextern int Lflag;
2721.27Slukemextern int Mflag;
2731.1Sjtcextern int Xflag;
2741.1Sjtcextern int Yflag;
2751.1Sjtcextern int Zflag;
2761.1Sjtcextern int vfpart;
2771.1Sjtcextern int patime;
2781.1Sjtcextern int pmtime;
2791.31Schristosextern int nodirs;
2801.20Smrgextern int pfflags;
2811.1Sjtcextern int pmode;
2821.1Sjtcextern int pids;
2831.31Schristosextern int rmleadslash;
2841.1Sjtcextern int exit_val;
2851.1Sjtcextern int docrc;
2861.38Ssimonbextern int to_stdout;
2871.1Sjtcextern char *dirptr;
2881.31Schristosextern char *ltmfrmt;
2891.1Sjtcextern char *argv0;
2901.31Schristosextern FILE *listf;
2911.31Schristosextern char *tempfile;
2921.31Schristosextern char *tempbase;
2931.31Schristos
2941.26Slukemint main(int, char **);
2951.26Slukemvoid sig_cleanup(int);
2961.1Sjtc
2971.1Sjtc/*
2981.1Sjtc * sel_subs.c
2991.1Sjtc */
3001.26Slukemint sel_chk(ARCHD *);
3011.26Slukemint grp_add(char *);
3021.26Slukemint usr_add(char *);
3031.26Slukemint trng_add(char *);
3041.1Sjtc
3051.1Sjtc/*
3061.1Sjtc * tables.c
3071.1Sjtc */
3081.26Slukemint lnk_start(void);
3091.26Slukemint chk_lnk(ARCHD *);
3101.26Slukemvoid purg_lnk(ARCHD *);
3111.26Slukemvoid lnk_end(void);
3121.26Slukemint ftime_start(void);
3131.26Slukemint chk_ftime(ARCHD *);
3141.26Slukemint name_start(void);
3151.26Slukemint add_name(char *, int, char *);
3161.31Schristosvoid sub_name(char *, int *, size_t);
3171.26Slukemint dev_start(void);
3181.26Slukemint add_dev(ARCHD *);
3191.26Slukemint map_dev(ARCHD *, u_long, u_long);
3201.26Slukemint atdir_start(void);
3211.26Slukemvoid atdir_end(void);
3221.26Slukemvoid add_atdir(char *, dev_t, ino_t, time_t, time_t);
3231.26Slukemint get_atdir(dev_t, ino_t, time_t *, time_t *);
3241.26Slukemint dir_start(void);
3251.26Slukemvoid add_dir(char *, int, struct stat *, int);
3261.26Slukemvoid proc_dir(void);
3271.26Slukemu_int st_hash(char *, int, int);
3281.1Sjtc
3291.1Sjtc/*
3301.1Sjtc * tar.c
3311.1Sjtc */
3321.34Schristosextern int is_gnutar;
3331.26Slukemint tar_endwr(void);
3341.26Slukemoff_t tar_endrd(void);
3351.26Slukemint tar_trail(char *, int, int *);
3361.26Slukemint tar_id(char *, int);
3371.26Slukemint tar_opt(void);
3381.26Slukemint tar_rd(ARCHD *, char *);
3391.26Slukemint tar_wr(ARCHD *);
3401.26Slukemint ustar_strd(void);
3411.26Slukemint ustar_stwr(void);
3421.26Slukemint ustar_id(char *, int);
3431.26Slukemint ustar_rd(ARCHD *, char *);
3441.26Slukemint ustar_wr(ARCHD *);
3451.26Slukemint tar_gnutar_X_compat(const char *);
3461.36Smrgint tar_gnutar_minus_minus_exclude(const char *);
3471.1Sjtc
3481.1Sjtc/*
3491.1Sjtc * tty_subs.c
3501.1Sjtc */
3511.26Slukemint tty_init(void);
3521.26Slukemvoid tty_prnt(const char *, ...)
3531.6Schristos    __attribute__((format (printf, 1, 2)));
3541.26Slukemint tty_read(char *, int);
3551.26Slukemvoid tty_warn(int, const char *, ...)
3561.6Schristos    __attribute__((format (printf, 2, 3)));
3571.26Slukemvoid syswarn(int, int, const char *, ...)
3581.6Schristos    __attribute__((format (printf, 3, 4)));
359