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