X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Fdirs.c;h=60f5b23673b15eebe42576aa3887ded3b2e8c894;hp=3d91c3cc15ffb311a1766a580e4e66d41979d71b;hb=5d2a3d246d400d45dfd4c49ddb588c69fb60873d;hpb=42bcc624fe21059d5e550e90befb3553c17e2858 diff --git a/restore/dirs.c b/restore/dirs.c index 3d91c3c..60f5b23 100644 --- a/restore/dirs.c +++ b/restore/dirs.c @@ -2,8 +2,8 @@ * 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 */ /* @@ -46,15 +46,20 @@ #ifndef lint static const char rcsid[] = - "$Id: dirs.c,v 1.12 2000/12/05 15:43:49 stelian Exp $"; + "$Id: dirs.c,v 1.17 2002/01/25 15:08:59 stelian Exp $"; #endif /* not lint */ +#include #include #include #include #ifdef __linux__ +#ifdef HAVE_EXT2FS_EXT2_FS_H +#include +#else #include +#endif #include #else /* __linux__ */ #include @@ -86,7 +91,7 @@ static const char rcsid[] = #define INOHASH(val) (val % HASHSIZE) struct inotab { struct inotab *t_next; - ino_t t_ino; + dump_ino_t t_ino; int32_t t_seekpt; int32_t t_size; }; @@ -96,7 +101,7 @@ static struct inotab *inotab[HASHSIZE]; * Information retained about directories. */ struct modeinfo { - ino_t ino; + dump_ino_t ino; struct timeval timep[2]; mode_t mode; uid_t uid; @@ -136,19 +141,19 @@ struct odirect { }; #ifdef __linux__ -static struct inotab *allocinotab __P((ino_t, struct new_bsd_inode *, long)); +static struct inotab *allocinotab __P((dump_ino_t, struct new_bsd_inode *, long)); #else -static struct inotab *allocinotab __P((ino_t, struct dinode *, long)); +static struct inotab *allocinotab __P((dump_ino_t, struct dinode *, long)); #endif static void dcvt __P((struct odirect *, struct direct *)); static void flushent __P((void)); -static struct inotab *inotablookup __P((ino_t)); +static struct inotab *inotablookup __P((dump_ino_t)); static RST_DIR *opendirfile __P((const char *)); static void putdir __P((char *, size_t)); static void putent __P((struct direct *)); static void rst_seekdir __P((RST_DIR *, long, long)); static long rst_telldir __P((RST_DIR *)); -static struct direct *searchdir __P((ino_t, char *)); +static struct direct *searchdir __P((dump_ino_t, char *)); /* * Extract directory contents, building up a directory structure @@ -159,11 +164,11 @@ static struct direct *searchdir __P((ino_t, char *)); void extractdirs(int genmode) { - register int i; + int i; #ifdef __linux__ - register struct new_bsd_inode *ip; + struct new_bsd_inode *ip; #else - register struct dinode *ip; + struct dinode *ip; #endif struct inotab *itp; struct direct nulldir; @@ -245,10 +250,10 @@ skipdirs(void) * pname and pass them off to be processed. */ void -treescan(char *pname, ino_t ino, long (*todo) __P((char *, ino_t, int))) +treescan(char *pname, dump_ino_t ino, long (*todo) __P((char *, dump_ino_t, int))) { - register struct inotab *itp; - register struct direct *dp; + struct inotab *itp; + struct direct *dp; int namelen; long bpt; char locname[MAXPATHLEN + 1]; @@ -310,7 +315,7 @@ treescan(char *pname, ino_t ino, long (*todo) __P((char *, ino_t, int))) struct direct * pathsearch(const char *pathname) { - ino_t ino; + dump_ino_t ino; struct direct *dp; char *path, *name, buffer[MAXPATHLEN]; @@ -333,10 +338,10 @@ pathsearch(const char *pathname) * Return its inode number if found, zero if it does not exist. */ static struct direct * -searchdir(ino_t inum, char *name) +searchdir(dump_ino_t inum, char *name) { - register struct direct *dp; - register struct inotab *itp; + struct direct *dp; + struct inotab *itp; int len; itp = inotablookup(inum); @@ -359,9 +364,9 @@ static void putdir(char *buf, size_t size) { struct direct cvtbuf; - register struct odirect *odp; + struct odirect *odp; struct odirect *eodp; - register struct direct *dp; + struct direct *dp; long loc, i; if (cvtflag) { @@ -504,7 +509,7 @@ rst_seekdir(RST_DIR *dirp, long loc, long base) struct direct * rst_readdir(RST_DIR *dirp) { - register struct direct *dp; + struct direct *dp; for (;;) { if (dirp->dd_loc == 0) { @@ -546,7 +551,7 @@ rst_opendir(const char *name) { struct inotab *itp; RST_DIR *dirp; - ino_t ino; + dump_ino_t ino; if ((ino = dirlookup(name)) > 0 && (itp = inotablookup(ino)) != NULL) { @@ -585,8 +590,8 @@ rst_telldir(RST_DIR *dirp) static RST_DIR * opendirfile(const char *name) { - register RST_DIR *dirp; - register int fd; + RST_DIR *dirp; + int fd; if ((fd = open(name, O_RDONLY)) == -1) return (NULL); @@ -667,9 +672,9 @@ setdirmodes(int flags) * Generate a literal copy of a directory. */ int -genliteraldir(char *name, ino_t ino) +genliteraldir(char *name, dump_ino_t ino) { - register struct inotab *itp; + struct inotab *itp; int ofile, dp, i, size; char buf[BUFSIZ]; @@ -704,7 +709,7 @@ genliteraldir(char *name, ino_t ino) * Determine the type of an inode */ int -inodetype(ino_t ino) +inodetype(dump_ino_t ino) { struct inotab *itp; @@ -720,12 +725,12 @@ inodetype(ino_t ino) */ static struct inotab * #ifdef __linux__ -allocinotab(ino_t ino, struct new_bsd_inode *dip, long seekpt) +allocinotab(dump_ino_t ino, struct new_bsd_inode *dip, long seekpt) #else -allocinotab(ino_t ino, struct dinode *dip, long seekpt) +allocinotab(dump_ino_t ino, struct dinode *dip, long seekpt) #endif { - register struct inotab *itp; + struct inotab *itp; struct modeinfo node; itp = calloc(1, sizeof(struct inotab)); @@ -762,9 +767,9 @@ allocinotab(ino_t ino, struct dinode *dip, long seekpt) * Look up an inode in the table of directories */ static struct inotab * -inotablookup(ino_t ino) +inotablookup(dump_ino_t ino) { - register struct inotab *itp; + struct inotab *itp; for (itp = inotab[INOHASH(ino)]; itp != NULL; itp = itp->t_next) if (itp->t_ino == ino)