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