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: src/bin/pax/extern.h,v 1.6.2.2 2001/08/01 05:03:11 obrien Exp $ 39 * $DragonFly: src/bin/pax/extern.h,v 1.5 2006/09/27 19:18:00 pavalos Exp $ 40 */ 41 42 /* 43 * External references from each source file 44 */ 45 46 #include <sys/cdefs.h> 47 48 /* 49 * ar_io.c 50 */ 51 extern char *arcname; 52 extern const char *gzip_program; 53 extern int force_one_volume; 54 int ar_open (char *); 55 void ar_close (void); 56 void ar_drain (void); 57 int ar_set_wr (void); 58 int ar_app_ok (void); 59 int ar_read (char *, int); 60 int ar_write (char *, int); 61 int ar_rdsync (void); 62 int ar_fow (off_t, off_t *); 63 int ar_rev (off_t ); 64 int ar_next (void); 65 66 /* 67 * ar_subs.c 68 */ 69 extern u_long flcnt; 70 void list (void); 71 void extract (void); 72 void append (void); 73 void archive (void); 74 void copy (void); 75 76 /* 77 * buf_subs.c 78 */ 79 extern int blksz; 80 extern int wrblksz; 81 extern int maxflt; 82 extern int rdblksz; 83 extern off_t wrlimit; 84 extern off_t rdcnt; 85 extern off_t wrcnt; 86 int wr_start (void); 87 int rd_start (void); 88 void cp_start (void); 89 int appnd_start (off_t); 90 int rd_sync (void); 91 void pback (char *, int); 92 int rd_skip (off_t); 93 void wr_fin (void); 94 int wr_rdbuf (char *, int); 95 int rd_wrbuf (char *, int); 96 int wr_skip (off_t); 97 int wr_rdfile (ARCHD *, int, off_t *); 98 int rd_wrfile (ARCHD *, int, off_t *); 99 void cp_file (ARCHD *, int, int); 100 int buf_fill (void); 101 int buf_flush (int); 102 103 /* 104 * cache.c 105 */ 106 int uidtb_start (void); 107 int gidtb_start (void); 108 int usrtb_start (void); 109 int grptb_start (void); 110 char * name_uid (uid_t, int); 111 char * name_gid (gid_t, int); 112 int uid_name (char *, uid_t *); 113 int gid_name (char *, gid_t *); 114 115 /* 116 * cpio.c 117 */ 118 int cpio_strd (void); 119 int cpio_trail (ARCHD *); 120 int cpio_endwr (void); 121 int cpio_id (char *, int); 122 int cpio_rd (ARCHD *, char *); 123 off_t cpio_endrd (void); 124 int cpio_stwr (void); 125 int cpio_wr (ARCHD *); 126 int vcpio_id (char *, int); 127 int crc_id (char *, int); 128 int crc_strd (void); 129 int vcpio_rd (ARCHD *, char *); 130 off_t vcpio_endrd (void); 131 int crc_stwr (void); 132 int vcpio_wr (ARCHD *); 133 int bcpio_id (char *, int); 134 int bcpio_rd (ARCHD *, char *); 135 off_t bcpio_endrd (void); 136 int bcpio_wr (ARCHD *); 137 138 /* 139 * file_subs.c 140 */ 141 int file_creat (ARCHD *); 142 void file_close (ARCHD *, int); 143 int lnk_creat (ARCHD *); 144 int cross_lnk (ARCHD *); 145 int chk_same (ARCHD *); 146 int node_creat (ARCHD *); 147 int unlnk_exist (char *, int); 148 int chk_path (char *, uid_t, gid_t); 149 void set_ftime (char *fnm, time_t mtime, time_t atime, int frc); 150 int set_ids (char *, uid_t, gid_t); 151 int set_lids (char *, uid_t, gid_t); 152 void set_pmode (char *, mode_t); 153 int file_write (int, char *, int, int *, int *, int, char *); 154 void file_flush (int, char *, int); 155 void rdfile_close (ARCHD *, int *); 156 int set_crc (ARCHD *, int); 157 158 /* 159 * ftree.c 160 */ 161 int ftree_start (void); 162 int ftree_add (char *, int); 163 void ftree_sel (ARCHD *); 164 void ftree_chk (void); 165 int next_file (ARCHD *); 166 167 /* 168 * gen_subs.c 169 */ 170 void ls_list (ARCHD *, time_t, FILE *); 171 void ls_tty (ARCHD *); 172 int l_strncpy (char *, char *, int); 173 u_long asc_ul (char *, int, int); 174 int ul_asc (u_long, char *, int, int); 175 u_quad_t asc_uqd (char *, int, int); 176 int uqd_asc (u_quad_t, char *, int, int); 177 178 /* 179 * getoldopt.c 180 */ 181 int getoldopt (int, char **, 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 (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 char *argv0; 237 extern FILE *listf; 238 extern char *tempfile; 239 extern char *tempbase; 240 241 int main (int, char **); 242 void sig_cleanup (int); 243 244 /* 245 * sel_subs.c 246 */ 247 int sel_chk (ARCHD *); 248 int grp_add (char *); 249 int usr_add (char *); 250 int trng_add (char *); 251 252 /* 253 * tables.c 254 */ 255 int lnk_start (void); 256 int chk_lnk (ARCHD *); 257 void purg_lnk (ARCHD *); 258 void lnk_end (void); 259 int ftime_start (void); 260 int chk_ftime (ARCHD *); 261 int name_start (void); 262 int add_name (char *, int, char *); 263 void sub_name (char *, int *, size_t); 264 int dev_start (void); 265 int add_dev (ARCHD *); 266 int map_dev (ARCHD *, u_long, u_long); 267 int atdir_start (void); 268 void atdir_end (void); 269 void add_atdir (char *, dev_t, ino_t, time_t, time_t); 270 int get_atdir (dev_t, ino_t, time_t *, time_t *); 271 int dir_start (void); 272 void add_dir (char *, int, struct stat *, int); 273 void proc_dir (void); 274 u_int st_hash (char *, int, int); 275 276 /* 277 * tar.c 278 */ 279 int tar_endwr (void); 280 off_t tar_endrd (void); 281 int tar_trail (char *, int, int *); 282 int tar_id (char *, int); 283 int tar_opt (void); 284 int tar_rd (ARCHD *, char *); 285 int tar_wr (ARCHD *); 286 int ustar_strd (void); 287 int ustar_stwr (void); 288 int ustar_id (char *, int); 289 int ustar_rd (ARCHD *, char *); 290 int ustar_wr (ARCHD *); 291 292 /* 293 * tty_subs.c 294 */ 295 int tty_init (void); 296 void tty_prnt (const char *, ...) __printflike(1, 2); 297 int tty_read (char *, int); 298 void paxwarn (int, const char *, ...) __printflike(2, 3); 299 void syswarn (int, int, const char *, ...) __printflike(3, 4); 300