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