extern.h revision 1.56
11.56Sperry/*	$NetBSD: extern.h,v 1.56 2009/04/07 19:52:35 perry Exp $	*/
21.4Scgd
31.1Sjtc/*-
41.40Sagc * Copyright (c) 1992 Keith Muller.
51.1Sjtc * Copyright (c) 1992, 1993
61.1Sjtc *	The Regents of the University of California.  All rights reserved.
71.39Sagc *
81.39Sagc * This code is derived from software contributed to Berkeley by
91.39Sagc * Keith Muller of the University of California, San Diego.
101.39Sagc *
111.39Sagc * Redistribution and use in source and binary forms, with or without
121.39Sagc * modification, are permitted provided that the following conditions
131.39Sagc * are met:
141.39Sagc * 1. Redistributions of source code must retain the above copyright
151.39Sagc *    notice, this list of conditions and the following disclaimer.
161.39Sagc * 2. Redistributions in binary form must reproduce the above copyright
171.39Sagc *    notice, this list of conditions and the following disclaimer in the
181.39Sagc *    documentation and/or other materials provided with the distribution.
191.39Sagc * 3. Neither the name of the University nor the names of its contributors
201.1Sjtc *    may be used to endorse or promote products derived from this software
211.1Sjtc *    without specific prior written permission.
221.1Sjtc *
231.1Sjtc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
241.1Sjtc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
251.1Sjtc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
261.1Sjtc * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
271.1Sjtc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
281.1Sjtc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
291.1Sjtc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
301.1Sjtc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
311.1Sjtc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
321.1Sjtc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
331.1Sjtc * SUCH DAMAGE.
341.1Sjtc *
351.4Scgd *	@(#)extern.h	8.2 (Berkeley) 4/18/94
361.1Sjtc */
371.29Stv
381.1Sjtc/*
391.1Sjtc * External references from each source file
401.1Sjtc */
411.1Sjtc
421.1Sjtc#include <sys/cdefs.h>
431.30Stv#include <err.h>
441.1Sjtc
451.1Sjtc/*
461.1Sjtc * ar_io.c
471.1Sjtc */
481.11Smycroftextern const char *arcname;
491.19Sisextern int curdirfd;
501.11Smycroftextern const char *gzip_program;
511.16Schristosextern time_t starttime;
521.23Sthorpejextern int force_one_volume;
531.31Schristosextern char *chdname;
541.31Schristosextern int forcelocal;
551.33Schristosextern int secure;
561.31Schristos
571.26Slukemint ar_open(const char *);
581.26Slukemvoid ar_close(void);
591.26Slukemvoid ar_drain(void);
601.26Slukemint ar_set_wr(void);
611.26Slukemint ar_app_ok(void);
621.21Sitohy#ifdef SYS_NO_RESTART
631.26Slukemint read_with_restart(int, void *, int);
641.26Slukemint write_with_restart(int, void *, int);
651.21Sitohy#else
661.21Sitohy#define read_with_restart	read
671.21Sitohy#define write_with_restart	write
681.21Sitohy#endif
691.26Slukemint xread(int, void *, int);
701.26Slukemint xwrite(int, void *, int);
711.26Slukemint ar_read(char *, int);
721.26Slukemint ar_write(char *, int);
731.26Slukemint ar_rdsync(void);
741.26Slukemint ar_fow(off_t, off_t *);
751.26Slukemint ar_rev(off_t );
761.26Slukemint ar_next(void);
771.26Slukemvoid ar_summary(int);
781.48Schristosint ar_dochdir(const char *);
791.1Sjtc
801.1Sjtc/*
811.1Sjtc * ar_subs.c
821.1Sjtc */
831.1Sjtcextern u_long flcnt;
841.16Schristosextern ARCHD archd;
851.48Schristosint updatepath(void);
861.48Schristosint dochdir(const char *);
871.48Schristosint fdochdir(int);
881.49Schristosint domkdir(const char *, mode_t);
891.50Sdslint list(void);
901.50Sdslint extract(void);
911.50Sdslint append(void);
921.50Sdslint archive(void);
931.50Sdslint copy(void);
941.1Sjtc
951.1Sjtc/*
961.1Sjtc * buf_subs.c
971.1Sjtc */
981.1Sjtcextern int blksz;
991.1Sjtcextern int wrblksz;
1001.1Sjtcextern int maxflt;
1011.1Sjtcextern int rdblksz;
1021.1Sjtcextern off_t wrlimit;
1031.1Sjtcextern off_t rdcnt;
1041.1Sjtcextern off_t wrcnt;
1051.26Slukemint wr_start(void);
1061.26Slukemint rd_start(void);
1071.26Slukemvoid cp_start(void);
1081.26Slukemint appnd_start(off_t);
1091.26Slukemint rd_sync(void);
1101.26Slukemvoid pback(char *, int);
1111.26Slukemint rd_skip(off_t);
1121.26Slukemvoid wr_fin(void);
1131.26Slukemint wr_rdbuf(char *, int);
1141.26Slukemint rd_wrbuf(char *, int);
1151.26Slukemint wr_skip(off_t);
1161.26Slukemint wr_rdfile(ARCHD *, int, off_t *);
1171.26Slukemint rd_wrfile(ARCHD *, int, off_t *);
1181.26Slukemvoid cp_file(ARCHD *, int, int);
1191.26Slukemint buf_fill(void);
1201.26Slukemint buf_flush(int);
1211.1Sjtc
1221.1Sjtc/*
1231.1Sjtc * cpio.c
1241.1Sjtc */
1251.8Smrgextern int cpio_swp_head;
1261.26Slukemint cpio_strd(void);
1271.26Slukemint cpio_subtrail(ARCHD *);
1281.26Slukemint cpio_endwr(void);
1291.26Slukemint cpio_id(char *, int);
1301.26Slukemint cpio_rd(ARCHD *, char *);
1311.26Slukemoff_t cpio_endrd(void);
1321.26Slukemint cpio_stwr(void);
1331.26Slukemint cpio_wr(ARCHD *);
1341.26Slukemint vcpio_id(char *, int);
1351.26Slukemint crc_id(char *, int);
1361.26Slukemint crc_strd(void);
1371.26Slukemint vcpio_rd(ARCHD *, char *);
1381.26Slukemoff_t vcpio_endrd(void);
1391.26Slukemint crc_stwr(void);
1401.26Slukemint vcpio_wr(ARCHD *);
1411.26Slukemint bcpio_id(char *, int);
1421.26Slukemint bcpio_rd(ARCHD *, char *);
1431.26Slukemoff_t bcpio_endrd(void);
1441.26Slukemint bcpio_wr(ARCHD *);
1451.1Sjtc
1461.1Sjtc/*
1471.1Sjtc * file_subs.c
1481.1Sjtc */
1491.35Schristosextern char *gnu_name_string, *gnu_link_string;
1501.45Schristosextern size_t gnu_name_length, gnu_link_length;
1511.41Smattextern char *xtmp_name;
1521.44Stronint file_creat(ARCHD *, int);
1531.26Slukemvoid file_close(ARCHD *, int);
1541.44Stronint lnk_creat(ARCHD *, int *);
1551.26Slukemint cross_lnk(ARCHD *);
1561.26Slukemint chk_same(ARCHD *);
1571.26Slukemint node_creat(ARCHD *);
1581.26Slukemint unlnk_exist(char *, int);
1591.26Slukemint chk_path(char *, uid_t, gid_t);
1601.54Stlsvoid set_ftime(char *fnm, time_t mtime, time_t atime, int frc, int slk);
1611.26Slukemint set_ids(char *, uid_t, gid_t);
1621.26Slukemvoid set_pmode(char *, mode_t);
1631.26Slukemvoid set_chflags(char *fnm, u_int32_t flags);
1641.26Slukemint file_write(int, char *, int, int *, int *, int, char *);
1651.26Slukemvoid file_flush(int, char *, int);
1661.26Slukemvoid rdfile_close(ARCHD *, int *);
1671.26Slukemint set_crc(ARCHD *, int);
1681.1Sjtc
1691.1Sjtc/*
1701.1Sjtc * ftree.c
1711.1Sjtc */
1721.26Slukemint ftree_start(void);
1731.26Slukemint ftree_add(char *, int);
1741.26Slukemvoid ftree_sel(ARCHD *);
1751.26Slukemvoid ftree_chk(void);
1761.26Slukemint next_file(ARCHD *);
1771.1Sjtc
1781.1Sjtc/*
1791.1Sjtc * gen_subs.c
1801.1Sjtc */
1811.31Schristosvoid ls_list(ARCHD *, time_t, FILE *);
1821.26Slukemvoid ls_tty(ARCHD *);
1831.31Schristosvoid safe_print(const char *, FILE *);
1841.26Slukemu_long asc_ul(char *, int, int);
1851.26Slukemint ul_asc(u_long, char *, int, int);
1861.55Sjoerg#if !defined(_LP64)
1871.28Slukemunsigned long long asc_ull(char *, int, int);
1881.28Slukemint ull_asc(unsigned long long, char *, int, int);
1891.1Sjtc#endif
1901.26Slukemint check_Aflag(void);
1911.3Scgd
1921.22Sitohy/*
1931.3Scgd * getoldopt.c
1941.3Scgd */
1951.24Sthorpejstruct option;
1961.26Slukemint getoldopt(int, char **, const char *, struct option *, int *);
1971.1Sjtc
1981.1Sjtc/*
1991.1Sjtc * options.c
2001.1Sjtc */
2011.1Sjtcextern FSUB fsub[];
2021.1Sjtcextern int ford[];
2031.43Schristosextern int sep;
2041.51Schristosextern int havechd;
2051.26Slukemvoid options(int, char **);
2061.26SlukemOPLIST * opt_next(void);
2071.26Slukemint opt_add(const char *);
2081.26Slukemint bad_opt(void);
2091.31Schristosint mkpath(char *);
2101.31Schristoschar *chdname;
2111.47Sjmc#if !HAVE_NBTOOL_CONFIG_H
2121.46Sdslint do_chroot;
2131.47Sjmc#endif
2141.1Sjtc
2151.1Sjtc/*
2161.1Sjtc * pat_rep.c
2171.1Sjtc */
2181.26Slukemint rep_add(char *);
2191.56Sperryint pat_add(char *, char *, int);
2201.26Slukemvoid pat_chk(void);
2211.26Slukemint pat_sel(ARCHD *);
2221.26Slukemint pat_match(ARCHD *);
2231.53Schristosint mod_name(ARCHD *, int);
2241.26Slukemint set_dest(ARCHD *, char *, int);
2251.1Sjtc
2261.1Sjtc/*
2271.1Sjtc * pax.c
2281.1Sjtc */
2291.1Sjtcextern int act;
2301.1Sjtcextern FSUB *frmt;
2311.17Stronextern int Aflag;
2321.1Sjtcextern int cflag;
2331.31Schristosextern int cwdfd;
2341.1Sjtcextern int dflag;
2351.1Sjtcextern int iflag;
2361.37Swizextern int jflag;
2371.1Sjtcextern int kflag;
2381.1Sjtcextern int lflag;
2391.1Sjtcextern int nflag;
2401.1Sjtcextern int tflag;
2411.1Sjtcextern int uflag;
2421.1Sjtcextern int vflag;
2431.5Smrgextern int zflag;
2441.1Sjtcextern int Dflag;
2451.1Sjtcextern int Hflag;
2461.1Sjtcextern int Lflag;
2471.27Slukemextern int Mflag;
2481.52Schristosextern int Vflag;
2491.1Sjtcextern int Xflag;
2501.1Sjtcextern int Yflag;
2511.1Sjtcextern int Zflag;
2521.1Sjtcextern int vfpart;
2531.1Sjtcextern int patime;
2541.1Sjtcextern int pmtime;
2551.31Schristosextern int nodirs;
2561.20Smrgextern int pfflags;
2571.1Sjtcextern int pmode;
2581.1Sjtcextern int pids;
2591.31Schristosextern int rmleadslash;
2601.1Sjtcextern int exit_val;
2611.1Sjtcextern int docrc;
2621.38Ssimonbextern int to_stdout;
2631.1Sjtcextern char *dirptr;
2641.31Schristosextern char *ltmfrmt;
2651.42Schristosextern const char *argv0;
2661.31Schristosextern FILE *listf;
2671.31Schristosextern char *tempfile;
2681.31Schristosextern char *tempbase;
2691.31Schristos
2701.26Slukemint main(int, char **);
2711.26Slukemvoid sig_cleanup(int);
2721.1Sjtc
2731.1Sjtc/*
2741.1Sjtc * sel_subs.c
2751.1Sjtc */
2761.26Slukemint sel_chk(ARCHD *);
2771.26Slukemint grp_add(char *);
2781.26Slukemint usr_add(char *);
2791.26Slukemint trng_add(char *);
2801.1Sjtc
2811.1Sjtc/*
2821.1Sjtc * tables.c
2831.1Sjtc */
2841.26Slukemint lnk_start(void);
2851.26Slukemint chk_lnk(ARCHD *);
2861.26Slukemvoid purg_lnk(ARCHD *);
2871.26Slukemvoid lnk_end(void);
2881.26Slukemint ftime_start(void);
2891.26Slukemint chk_ftime(ARCHD *);
2901.26Slukemint name_start(void);
2911.26Slukemint add_name(char *, int, char *);
2921.31Schristosvoid sub_name(char *, int *, size_t);
2931.26Slukemint dev_start(void);
2941.26Slukemint add_dev(ARCHD *);
2951.26Slukemint map_dev(ARCHD *, u_long, u_long);
2961.26Slukemint atdir_start(void);
2971.26Slukemvoid atdir_end(void);
2981.26Slukemvoid add_atdir(char *, dev_t, ino_t, time_t, time_t);
2991.26Slukemint get_atdir(dev_t, ino_t, time_t *, time_t *);
3001.26Slukemint dir_start(void);
3011.26Slukemvoid add_dir(char *, int, struct stat *, int);
3021.26Slukemvoid proc_dir(void);
3031.26Slukemu_int st_hash(char *, int, int);
3041.1Sjtc
3051.1Sjtc/*
3061.1Sjtc * tar.c
3071.1Sjtc */
3081.34Schristosextern int is_gnutar;
3091.26Slukemint tar_endwr(void);
3101.26Slukemoff_t tar_endrd(void);
3111.26Slukemint tar_trail(char *, int, int *);
3121.26Slukemint tar_id(char *, int);
3131.26Slukemint tar_opt(void);
3141.26Slukemint tar_rd(ARCHD *, char *);
3151.26Slukemint tar_wr(ARCHD *);
3161.26Slukemint ustar_strd(void);
3171.26Slukemint ustar_stwr(void);
3181.26Slukemint ustar_id(char *, int);
3191.26Slukemint ustar_rd(ARCHD *, char *);
3201.26Slukemint ustar_wr(ARCHD *);
3211.26Slukemint tar_gnutar_X_compat(const char *);
3221.36Smrgint tar_gnutar_minus_minus_exclude(const char *);
3231.1Sjtc
3241.1Sjtc/*
3251.1Sjtc * tty_subs.c
3261.1Sjtc */
3271.26Slukemint tty_init(void);
3281.26Slukemvoid tty_prnt(const char *, ...)
3291.6Schristos    __attribute__((format (printf, 1, 2)));
3301.26Slukemint tty_read(char *, int);
3311.26Slukemvoid tty_warn(int, const char *, ...)
3321.6Schristos    __attribute__((format (printf, 2, 3)));
3331.26Slukemvoid syswarn(int, int, const char *, ...)
3341.6Schristos    __attribute__((format (printf, 3, 4)));
335