1 /*- 2 * Copyright (c) 1992 Keith Muller. 3 * Copyright (c) 1992, 1993 4 * The Regents of the University of California. All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * Keith Muller of the University of California, San Diego. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by the University of 20 * California, Berkeley and its contributors. 21 * 4. Neither the name of the University nor the names of its contributors 22 * may be used to endorse or promote products derived from this software 23 * without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * @(#)extern.h 8.2 (Berkeley) 4/18/94 38 * $FreeBSD$ 39 */ 40 41 /* 42 * External references from each source file 43 */ 44 45 #include <sys/cdefs.h> 46 47 /* 48 * ar_io.c 49 */ 50 extern const char *arcname; 51 extern const char *gzip_program; 52 int ar_open(const char *); 53 void ar_close(void); 54 void ar_drain(void); 55 int ar_set_wr(void); 56 int ar_app_ok(void); 57 int ar_read(char *, int); 58 int ar_write(char *, int); 59 int ar_rdsync(void); 60 int ar_fow(off_t, off_t *); 61 int ar_rev(off_t ); 62 int ar_next(void); 63 64 /* 65 * ar_subs.c 66 */ 67 extern u_long flcnt; 68 void list(void); 69 void extract(void); 70 void append(void); 71 void archive(void); 72 void copy(void); 73 74 /* 75 * buf_subs.c 76 */ 77 extern int blksz; 78 extern int wrblksz; 79 extern int maxflt; 80 extern int rdblksz; 81 extern off_t wrlimit; 82 extern off_t rdcnt; 83 extern off_t wrcnt; 84 int wr_start(void); 85 int rd_start(void); 86 void cp_start(void); 87 int appnd_start(off_t); 88 int rd_sync(void); 89 void pback(char *, int); 90 int rd_skip(off_t); 91 void wr_fin(void); 92 int wr_rdbuf(char *, int); 93 int rd_wrbuf(char *, int); 94 int wr_skip(off_t); 95 int wr_rdfile(ARCHD *, int, off_t *); 96 int rd_wrfile(ARCHD *, int, off_t *); 97 void cp_file(ARCHD *, int, int); 98 int buf_fill(void); 99 int buf_flush(int); 100 101 /* 102 * cache.c 103 */ 104 int uidtb_start(void); 105 int gidtb_start(void); 106 int usrtb_start(void); 107 int grptb_start(void); 108 const char * name_uid(uid_t, int); 109 const char * name_gid(gid_t, int); 110 int uid_name(char *, uid_t *); 111 int gid_name(char *, gid_t *); 112 113 /* 114 * cpio.c 115 */ 116 int cpio_strd(void); 117 int cpio_trail(ARCHD *); 118 int cpio_endwr(void); 119 int cpio_id(char *, int); 120 int cpio_rd(ARCHD *, char *); 121 off_t cpio_endrd(void); 122 int cpio_stwr(void); 123 int cpio_wr(ARCHD *); 124 int vcpio_id(char *, int); 125 int crc_id(char *, int); 126 int crc_strd(void); 127 int vcpio_rd(ARCHD *, char *); 128 off_t vcpio_endrd(void); 129 int crc_stwr(void); 130 int vcpio_wr(ARCHD *); 131 int bcpio_id(char *, int); 132 int bcpio_rd(ARCHD *, char *); 133 off_t bcpio_endrd(void); 134 int bcpio_wr(ARCHD *); 135 136 /* 137 * file_subs.c 138 */ 139 int file_creat(ARCHD *); 140 void file_close(ARCHD *, int); 141 int lnk_creat(ARCHD *); 142 int cross_lnk(ARCHD *); 143 int chk_same(ARCHD *); 144 int node_creat(ARCHD *); 145 int unlnk_exist(char *, int); 146 int chk_path(char *, uid_t, gid_t); 147 void set_ftime(char *fnm, time_t mtime, time_t atime, int frc); 148 int set_ids(char *, uid_t, gid_t); 149 int set_lids(char *, uid_t, gid_t); 150 void set_pmode(char *, mode_t); 151 int file_write(int, char *, int, int *, int *, int, char *); 152 void file_flush(int, char *, int); 153 void rdfile_close(ARCHD *, int *); 154 int set_crc(ARCHD *, int); 155 156 /* 157 * ftree.c 158 */ 159 int ftree_start(void); 160 int ftree_add(char *, int); 161 void ftree_sel(ARCHD *); 162 void ftree_chk(void); 163 int next_file(ARCHD *); 164 165 /* 166 * gen_subs.c 167 */ 168 void ls_list(ARCHD *, time_t, FILE *); 169 void ls_tty(ARCHD *); 170 int l_strncpy(char *, const char *, int); 171 u_long asc_ul(char *, int, int); 172 int ul_asc(u_long, char *, int, int); 173 #ifndef NET2_STAT 174 u_quad_t asc_uqd(char *, int, int); 175 int uqd_asc(u_quad_t, char *, int, int); 176 #endif 177 178 /* 179 * getoldopt.c 180 */ 181 int getoldopt(int, char **, const char *); 182 183 /* 184 * options.c 185 */ 186 extern FSUB fsub[]; 187 extern int ford[]; 188 void options(int, char **); 189 OPLIST * opt_next(void); 190 int opt_add(const char *); 191 int bad_opt(void); 192 char *chdname; 193 194 /* 195 * pat_rep.c 196 */ 197 int rep_add(char *); 198 int pat_add(char *, char *); 199 void pat_chk(void); 200 int pat_sel(ARCHD *); 201 int pat_match(ARCHD *); 202 int mod_name(ARCHD *); 203 int set_dest(ARCHD *, char *, int); 204 205 /* 206 * pax.c 207 */ 208 extern int act; 209 extern FSUB *frmt; 210 extern int cflag; 211 extern int cwdfd; 212 extern int dflag; 213 extern int iflag; 214 extern int kflag; 215 extern int lflag; 216 extern int nflag; 217 extern int tflag; 218 extern int uflag; 219 extern int vflag; 220 extern int Dflag; 221 extern int Hflag; 222 extern int Lflag; 223 extern int Xflag; 224 extern int Yflag; 225 extern int Zflag; 226 extern int vfpart; 227 extern int patime; 228 extern int pmtime; 229 extern int nodirs; 230 extern int pmode; 231 extern int pids; 232 extern int rmleadslash; 233 extern int exit_val; 234 extern int docrc; 235 extern char *dirptr; 236 extern const char *argv0; 237 extern FILE *listf; 238 extern char *tempfile; 239 extern char *tempbase; 240 241 void sig_cleanup(int); 242 243 /* 244 * sel_subs.c 245 */ 246 int sel_chk(ARCHD *); 247 int grp_add(char *); 248 int usr_add(char *); 249 int trng_add(char *); 250 251 /* 252 * tables.c 253 */ 254 int lnk_start(void); 255 int chk_lnk(ARCHD *); 256 void purg_lnk(ARCHD *); 257 void lnk_end(void); 258 int ftime_start(void); 259 int chk_ftime(ARCHD *); 260 int name_start(void); 261 int add_name(char *, int, char *); 262 void sub_name(char *, int *, size_t); 263 int dev_start(void); 264 int add_dev(ARCHD *); 265 int map_dev(ARCHD *, u_long, u_long); 266 int atdir_start(void); 267 void atdir_end(void); 268 void add_atdir(char *, dev_t, ino_t, time_t, time_t); 269 int get_atdir(dev_t, ino_t, time_t *, time_t *); 270 int dir_start(void); 271 void add_dir(char *, int, struct stat *, int); 272 void proc_dir(void); 273 u_int st_hash(char *, int, int); 274 275 /* 276 * tar.c 277 */ 278 int tar_endwr(void); 279 off_t tar_endrd(void); 280 int tar_trail(char *, int, int *); 281 int tar_id(char *, int); 282 int tar_opt(void); 283 int tar_rd(ARCHD *, char *); 284 int tar_wr(ARCHD *); 285 int ustar_strd(void); 286 int ustar_stwr(void); 287 int ustar_id(char *, int); 288 int ustar_rd(ARCHD *, char *); 289 int ustar_wr(ARCHD *); 290 291 /* 292 * tty_subs.c 293 */ 294 int tty_init(void); 295 void tty_prnt(const char *, ...) __printflike(1, 2); 296 int tty_read(char *, int); 297 void paxwarn(int, const char *, ...) __printflike(2, 3); 298 void syswarn(int, int, const char *, ...) __printflike(3, 4); 299