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