extern.h revision 1.29
11.29Stv/* $NetBSD: extern.h,v 1.29 2002/01/29 10:20:28 tv Exp $ */ 21.4Scgd 31.1Sjtc/*- 41.1Sjtc * Copyright (c) 1992 Keith Muller. 51.1Sjtc * Copyright (c) 1992, 1993 61.1Sjtc * The Regents of the University of California. All rights reserved. 71.1Sjtc * 81.1Sjtc * This code is derived from software contributed to Berkeley by 91.1Sjtc * Keith Muller of the University of California, San Diego. 101.1Sjtc * 111.1Sjtc * Redistribution and use in source and binary forms, with or without 121.1Sjtc * modification, are permitted provided that the following conditions 131.1Sjtc * are met: 141.1Sjtc * 1. Redistributions of source code must retain the above copyright 151.1Sjtc * notice, this list of conditions and the following disclaimer. 161.1Sjtc * 2. Redistributions in binary form must reproduce the above copyright 171.1Sjtc * notice, this list of conditions and the following disclaimer in the 181.1Sjtc * documentation and/or other materials provided with the distribution. 191.1Sjtc * 3. All advertising materials mentioning features or use of this software 201.1Sjtc * must display the following acknowledgement: 211.1Sjtc * This product includes software developed by the University of 221.1Sjtc * California, Berkeley and its contributors. 231.1Sjtc * 4. Neither the name of the University nor the names of its contributors 241.1Sjtc * may be used to endorse or promote products derived from this software 251.1Sjtc * without specific prior written permission. 261.1Sjtc * 271.1Sjtc * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 281.1Sjtc * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 291.1Sjtc * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 301.1Sjtc * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 311.1Sjtc * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 321.1Sjtc * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 331.1Sjtc * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 341.1Sjtc * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 351.1Sjtc * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 361.1Sjtc * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 371.1Sjtc * SUCH DAMAGE. 381.1Sjtc * 391.4Scgd * @(#)extern.h 8.2 (Berkeley) 4/18/94 401.1Sjtc */ 411.29Stv 421.29Stv#if HAVE_CONFIG_H 431.29Stv#include "config.h" 441.29Stv#else 451.29Stv#define HAVE_ERR_H 1 461.29Stv#define HAVE_FTS_H 1 471.29Stv#define HAVE_STRUCT_STAT_ST_FLAGS 1 481.29Stv#endif 491.29Stv 501.29Stv#if HAVE_ERR_H 511.29Stv#include <err.h> 521.29Stv#endif 531.1Sjtc 541.1Sjtc/* 551.1Sjtc * External references from each source file 561.1Sjtc */ 571.1Sjtc 581.1Sjtc#include <sys/cdefs.h> 591.1Sjtc 601.1Sjtc/* 611.1Sjtc * ar_io.c 621.1Sjtc */ 631.11Smycroftextern const char *arcname; 641.19Sisextern int curdirfd; 651.11Smycroftextern const char *gzip_program; 661.16Schristosextern time_t starttime; 671.23Sthorpejextern int force_one_volume; 681.26Slukemint ar_open(const char *); 691.26Slukemvoid ar_close(void); 701.26Slukemvoid ar_drain(void); 711.26Slukemint ar_set_wr(void); 721.26Slukemint ar_app_ok(void); 731.21Sitohy#ifdef SYS_NO_RESTART 741.26Slukemint read_with_restart(int, void *, int); 751.26Slukemint write_with_restart(int, void *, int); 761.21Sitohy#else 771.21Sitohy#define read_with_restart read 781.21Sitohy#define write_with_restart write 791.21Sitohy#endif 801.26Slukemint xread(int, void *, int); 811.26Slukemint xwrite(int, void *, int); 821.26Slukemint ar_read(char *, int); 831.26Slukemint ar_write(char *, int); 841.26Slukemint ar_rdsync(void); 851.26Slukemint ar_fow(off_t, off_t *); 861.26Slukemint ar_rev(off_t ); 871.26Slukemint ar_next(void); 881.26Slukemvoid ar_summary(int); 891.26Slukemint ar_dochdir(char *); 901.1Sjtc 911.1Sjtc/* 921.1Sjtc * ar_subs.c 931.1Sjtc */ 941.1Sjtcextern u_long flcnt; 951.16Schristosextern ARCHD archd; 961.26Slukemvoid list(void); 971.26Slukemvoid extract(void); 981.26Slukemvoid append(void); 991.26Slukemvoid archive(void); 1001.26Slukemvoid copy(void); 1011.1Sjtc 1021.1Sjtc/* 1031.1Sjtc * buf_subs.c 1041.1Sjtc */ 1051.1Sjtcextern int blksz; 1061.1Sjtcextern int wrblksz; 1071.1Sjtcextern int maxflt; 1081.1Sjtcextern int rdblksz; 1091.1Sjtcextern off_t wrlimit; 1101.1Sjtcextern off_t rdcnt; 1111.1Sjtcextern off_t wrcnt; 1121.26Slukemint wr_start(void); 1131.26Slukemint rd_start(void); 1141.26Slukemvoid cp_start(void); 1151.26Slukemint appnd_start(off_t); 1161.26Slukemint rd_sync(void); 1171.26Slukemvoid pback(char *, int); 1181.26Slukemint rd_skip(off_t); 1191.26Slukemvoid wr_fin(void); 1201.26Slukemint wr_rdbuf(char *, int); 1211.26Slukemint rd_wrbuf(char *, int); 1221.26Slukemint wr_skip(off_t); 1231.26Slukemint wr_rdfile(ARCHD *, int, off_t *); 1241.26Slukemint rd_wrfile(ARCHD *, int, off_t *); 1251.26Slukemvoid cp_file(ARCHD *, int, int); 1261.26Slukemint buf_fill(void); 1271.26Slukemint buf_flush(int); 1281.1Sjtc 1291.1Sjtc/* 1301.1Sjtc * cpio.c 1311.1Sjtc */ 1321.8Smrgextern int cpio_swp_head; 1331.26Slukemint cpio_strd(void); 1341.26Slukemint cpio_subtrail(ARCHD *); 1351.26Slukemint cpio_endwr(void); 1361.26Slukemint cpio_id(char *, int); 1371.26Slukemint cpio_rd(ARCHD *, char *); 1381.26Slukemoff_t cpio_endrd(void); 1391.26Slukemint cpio_stwr(void); 1401.26Slukemint cpio_wr(ARCHD *); 1411.26Slukemint vcpio_id(char *, int); 1421.26Slukemint crc_id(char *, int); 1431.26Slukemint crc_strd(void); 1441.26Slukemint vcpio_rd(ARCHD *, char *); 1451.26Slukemoff_t vcpio_endrd(void); 1461.26Slukemint crc_stwr(void); 1471.26Slukemint vcpio_wr(ARCHD *); 1481.26Slukemint bcpio_id(char *, int); 1491.26Slukemint bcpio_rd(ARCHD *, char *); 1501.26Slukemoff_t bcpio_endrd(void); 1511.26Slukemint bcpio_wr(ARCHD *); 1521.1Sjtc 1531.1Sjtc/* 1541.1Sjtc * file_subs.c 1551.1Sjtc */ 1561.18Smrgextern char *gnu_hack_string; 1571.26Slukemint file_creat(ARCHD *); 1581.26Slukemvoid file_close(ARCHD *, int); 1591.26Slukemint lnk_creat(ARCHD *); 1601.26Slukemint cross_lnk(ARCHD *); 1611.26Slukemint chk_same(ARCHD *); 1621.26Slukemint node_creat(ARCHD *); 1631.26Slukemint unlnk_exist(char *, int); 1641.26Slukemint chk_path(char *, uid_t, gid_t); 1651.26Slukemvoid set_ftime(char *fnm, time_t mtime, time_t atime, int frc); 1661.26Slukemint set_ids(char *, uid_t, gid_t); 1671.26Slukemvoid set_pmode(char *, mode_t); 1681.26Slukemvoid set_chflags(char *fnm, u_int32_t flags); 1691.26Slukemint file_write(int, char *, int, int *, int *, int, char *); 1701.26Slukemvoid file_flush(int, char *, int); 1711.26Slukemvoid rdfile_close(ARCHD *, int *); 1721.26Slukemint set_crc(ARCHD *, int); 1731.1Sjtc 1741.1Sjtc/* 1751.1Sjtc * ftree.c 1761.1Sjtc */ 1771.26Slukemint ftree_start(void); 1781.26Slukemint ftree_add(char *, int); 1791.26Slukemvoid ftree_sel(ARCHD *); 1801.26Slukemvoid ftree_chk(void); 1811.26Slukemint next_file(ARCHD *); 1821.1Sjtc 1831.1Sjtc/* 1841.1Sjtc * gen_subs.c 1851.1Sjtc */ 1861.26Slukemvoid ls_list(ARCHD *, time_t); 1871.26Slukemvoid ls_tty(ARCHD *); 1881.26Slukemvoid zf_strncpy(char *, const char *, int); 1891.26Slukemint l_strncpy(char *, const char *, int); 1901.26Slukemu_long asc_ul(char *, int, int); 1911.26Slukemint ul_asc(u_long, char *, int, int); 1921.1Sjtc#ifndef NET2_STAT 1931.28Slukemunsigned long long asc_ull(char *, int, int); 1941.28Slukemint ull_asc(unsigned long long, char *, int, int); 1951.1Sjtc#endif 1961.26Slukemint check_Aflag(void); 1971.3Scgd 1981.22Sitohy/* 1991.3Scgd * getoldopt.c 2001.3Scgd */ 2011.24Sthorpejstruct option; 2021.26Slukemint getoldopt(int, char **, const char *, struct option *, int *); 2031.1Sjtc 2041.1Sjtc/* 2051.1Sjtc * options.c 2061.1Sjtc */ 2071.1Sjtcextern FSUB fsub[]; 2081.1Sjtcextern int ford[]; 2091.9Smrgextern int cpio_mode; 2101.26Slukemvoid options(int, char **); 2111.26SlukemOPLIST * opt_next(void); 2121.26Slukemint opt_add(const char *); 2131.26Slukemint opt_chdir(char *); 2141.26Slukemint bad_opt(void); 2151.1Sjtc 2161.1Sjtc/* 2171.1Sjtc * pat_rep.c 2181.1Sjtc */ 2191.26Slukemint rep_add(char *); 2201.26Slukemint pat_add(char *, int); 2211.26Slukemvoid pat_chk(void); 2221.26Slukemint pat_sel(ARCHD *); 2231.26Slukemint pat_match(ARCHD *); 2241.26Slukemint mod_name(ARCHD *); 2251.26Slukemint set_dest(ARCHD *, char *, int); 2261.1Sjtc 2271.1Sjtc/* 2281.1Sjtc * pax.c 2291.1Sjtc */ 2301.1Sjtcextern int act; 2311.1Sjtcextern FSUB *frmt; 2321.17Stronextern int Aflag; 2331.1Sjtcextern int cflag; 2341.1Sjtcextern int dflag; 2351.1Sjtcextern int iflag; 2361.1Sjtcextern int kflag; 2371.1Sjtcextern int lflag; 2381.1Sjtcextern int nflag; 2391.1Sjtcextern int tflag; 2401.1Sjtcextern int uflag; 2411.1Sjtcextern int vflag; 2421.5Smrgextern int zflag; 2431.1Sjtcextern int Dflag; 2441.1Sjtcextern int Hflag; 2451.1Sjtcextern int Lflag; 2461.27Slukemextern int Mflag; 2471.1Sjtcextern int Xflag; 2481.1Sjtcextern int Yflag; 2491.1Sjtcextern int Zflag; 2501.1Sjtcextern int vfpart; 2511.1Sjtcextern int patime; 2521.1Sjtcextern int pmtime; 2531.20Smrgextern int pfflags; 2541.1Sjtcextern int pmode; 2551.1Sjtcextern int pids; 2561.1Sjtcextern int exit_val; 2571.1Sjtcextern int docrc; 2581.1Sjtcextern char *dirptr; 2591.1Sjtcextern char *argv0; 2601.26Slukemint main(int, char **); 2611.26Slukemvoid sig_cleanup(int); 2621.1Sjtc 2631.1Sjtc/* 2641.1Sjtc * sel_subs.c 2651.1Sjtc */ 2661.26Slukemint sel_chk(ARCHD *); 2671.26Slukemint grp_add(char *); 2681.26Slukemint usr_add(char *); 2691.26Slukemint trng_add(char *); 2701.1Sjtc 2711.1Sjtc/* 2721.1Sjtc * tables.c 2731.1Sjtc */ 2741.26Slukemint lnk_start(void); 2751.26Slukemint chk_lnk(ARCHD *); 2761.26Slukemvoid purg_lnk(ARCHD *); 2771.26Slukemvoid lnk_end(void); 2781.26Slukemint ftime_start(void); 2791.26Slukemint chk_ftime(ARCHD *); 2801.26Slukemint name_start(void); 2811.26Slukemint add_name(char *, int, char *); 2821.26Slukemvoid sub_name(char *, int *); 2831.26Slukemint dev_start(void); 2841.26Slukemint add_dev(ARCHD *); 2851.26Slukemint map_dev(ARCHD *, u_long, u_long); 2861.26Slukemint atdir_start(void); 2871.26Slukemvoid atdir_end(void); 2881.26Slukemvoid add_atdir(char *, dev_t, ino_t, time_t, time_t); 2891.26Slukemint get_atdir(dev_t, ino_t, time_t *, time_t *); 2901.26Slukemint dir_start(void); 2911.26Slukemvoid add_dir(char *, int, struct stat *, int); 2921.26Slukemvoid proc_dir(void); 2931.26Slukemu_int st_hash(char *, int, int); 2941.1Sjtc 2951.1Sjtc/* 2961.1Sjtc * tar.c 2971.1Sjtc */ 2981.13Stvextern int is_oldgnutar; 2991.26Slukemint tar_endwr(void); 3001.26Slukemoff_t tar_endrd(void); 3011.26Slukemint tar_trail(char *, int, int *); 3021.26Slukemint tar_id(char *, int); 3031.26Slukemint tar_opt(void); 3041.26Slukemint tar_rd(ARCHD *, char *); 3051.26Slukemint tar_wr(ARCHD *); 3061.26Slukemint ustar_strd(void); 3071.26Slukemint ustar_stwr(void); 3081.26Slukemint ustar_id(char *, int); 3091.26Slukemint ustar_rd(ARCHD *, char *); 3101.26Slukemint ustar_wr(ARCHD *); 3111.26Slukemint tar_gnutar_X_compat(const char *); 3121.1Sjtc 3131.1Sjtc/* 3141.1Sjtc * tty_subs.c 3151.1Sjtc */ 3161.26Slukemint tty_init(void); 3171.26Slukemvoid tty_prnt(const char *, ...) 3181.6Schristos __attribute__((format (printf, 1, 2))); 3191.26Slukemint tty_read(char *, int); 3201.26Slukemvoid tty_warn(int, const char *, ...) 3211.6Schristos __attribute__((format (printf, 2, 3))); 3221.26Slukemvoid syswarn(int, int, const char *, ...) 3231.6Schristos __attribute__((format (printf, 3, 4))); 324