X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Frestore.h;h=3d2a5de310c517ca8f3ac5608dbdb84c6ab635ca;hp=0ae65ba8829e613134f30a985988c7d05751ee3e;hb=df3d2ef98b911ebb7a7b7c6137e60e28eb39e5f1;hpb=c534413c6ada5778ccbb76f36bdcff672037d0cc diff --git a/restore/restore.h b/restore/restore.h index 0ae65ba..3d2a5de 100644 --- a/restore/restore.h +++ b/restore/restore.h @@ -2,10 +2,10 @@ * Ported to Linux's Second Extended File System as part of the * dump and restore backup suit * Remy Card , 1994-1997 - * Stelian Pop , 1999-2000 - * Stelian Pop - Alcôve , 2000 + * Stelian Pop , 1999-2000 + * Stelian Pop - Alcôve , 2000-2002 * - * $Id: restore.h,v 1.16 2001/07/18 12:54:06 stelian Exp $ + * $Id: restore.h,v 1.33 2005/07/07 09:16:08 stelian Exp $ */ /* @@ -25,11 +25,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -51,21 +47,29 @@ /* * Flags */ +extern int aflag; /* automatic volume increment */ +extern char *Afile; /* archive file */ extern int cvtflag; /* convert from old to new tape format */ extern int bflag; /* set input block size */ extern int dflag; /* print out debugging info */ extern int hflag; /* restore heirarchies */ +extern int lflag; /* assume remote filename is a regular file */ +extern int Lflag; /* compare errors limit */ extern int mflag; /* restore by name instead of inode number */ extern int Mflag; /* multi-volume restore */ +extern int oflag; /* do restore permissions without asking */ +extern int Vflag; /* multi-volume on a single device like CDROM */ extern int Nflag; /* do not write the disk */ extern int uflag; /* unlink symlink targets */ extern int vflag; /* print out actions taken */ extern int yflag; /* always try to recover from tape errors */ extern int zflag; /* tape is in compressed format */ +extern int ufs2flag; /* tape is a FreeBSD UFS2 dump */ extern char* bot_script; /* beginning of tape script */ /* * Global variables */ +extern char *host; /* name of the remote host */ extern char *dumpmap; /* map of inodes on this dump tape */ extern char *usedinomap; /* map of inodes that are in use on this fs */ extern dump_ino_t maxino; /* highest numbered inode in this file system */ @@ -76,6 +80,7 @@ extern time_t dumptime; /* time that this dump begins */ extern time_t dumpdate; /* time that this dump was made */ extern char command; /* opration being performed */ extern FILE *terminal; /* file descriptor for the terminal input */ +extern int pipein; /* input is from a pipe */ extern char *tmpdir; /* name of temp directory */ extern int oldinofmt; /* reading tape with old format inodes */ extern int Bcvt; /* need byte swapping on inodes and dirs */ @@ -85,6 +90,9 @@ extern int compare_ignore_not_found; /* isn't seen. */ extern int compare_errors; /* did we encounter any compare errors? */ extern char filesys[NAMELEN];/* name of dumped filesystem */ +extern dump_ino_t volinfo[]; /* which inode on which volume archive info */ +extern int wdfd; /* original working directory */ +extern int dirhash_size; /* size of the directory hash table */ /* * Each file in the file system is described by one of these entries @@ -99,7 +107,7 @@ struct entry { struct entry *e_parent; /* pointer to parent directory (..) */ struct entry *e_sibling; /* next element in this directory (.) */ struct entry *e_links; /* hard links to this inode */ - struct entry *e_entries; /* for directories, their entries */ + struct entry **e_entries; /* for directories, their entries */ struct entry *e_next; /* hash chain list */ }; /* types */ @@ -127,7 +135,7 @@ struct entry { struct context { char *name; /* name of file */ dump_ino_t ino; /* inumber of file */ -#ifdef __linux__ +#if defined(__linux__) || defined(sunos) struct new_bsd_inode *dip; /* pointer to inode */ #else struct dinode *dip; /* pointer to inode */ @@ -166,9 +174,26 @@ typedef struct rstdirdesc RST_DIR; #ifdef USE_QFA #define QFA_MAGIC "495115637697" #define QFA_VERSION "1.0" -FILE *gTapeposfp; -char *gTapeposfile; -char gTps[255]; -long gSeekstart; -int tapeposflag; +extern FILE *gTapeposfp; +extern char *gTapeposfile; +extern char gTps[255]; +extern long gSeekstart; +extern int tapeposflag; +extern int gTapeposfd; +extern int createtapeposflag; +extern unsigned long qfadumpdate; +extern long long curtapepos; +#ifdef sunos +int fdsmtc; +long scsiid; +char smtcpath[2048]; +#endif #endif /* USE_QFA */ + +#define do_compare_error \ + if (++compare_errors >= Lflag && Lflag) { \ + printf("Compare errors limit reached, exiting...\n"); \ + exit(2); \ + } + +#define XATTR_MAXSIZE 4096