diff -ur dump-0.4b41.orig/restore/dirs.c dump-0.4b41/restore/dirs.c
--- dump-0.4b41.orig/restore/dirs.c 2005-05-28 13:34:47.000000000 -0500
+++ dump-0.4b41/restore/dirs.c 2007-01-26 18:32:02.000000000 -0600
@@ -710,6 +710,10 @@
cp = myname(ep);
(void) chown(cp, node.uid, node.gid);
(void) chmod(cp, node.mode);
+ utimes(cp, node.timep);
+ if (node.xattr)
+ xattr_extract(cp, xattr);
+ ep->e_flags &= ~NEW;
if (node.flags)
#ifdef __linux__
(void) lsetflags(cp, node.flags);
@@ -719,10 +723,6 @@
(void) chflags(cp, node.flags);
#endif
#endif
- utimes(cp, node.timep);
- if (node.xattr)
- xattr_extract(cp, xattr);
- ep->e_flags &= ~NEW;
}
}
if (ferror(mf))
diff -ur dump-0.4b41.orig/restore/tape.c dump-0.4b41/restore/tape.c
--- dump-0.4b41.orig/restore/tape.c 2007-01-26 18:14:25.000000000 -0600
+++ dump-0.4b41/restore/tape.c 2007-01-26 18:51:52.000000000 -0600
@@ -908,6 +908,8 @@
}
(void) chown(name, curfile.dip->di_uid, curfile.dip->di_gid);
(void) chmod(name, mode);
+ extractattr(name);
+ utimes(name, timep);
if (flags)
#ifdef __linux__
(void) lsetflags(name, flags);
@@ -922,8 +924,6 @@
#endif
#endif
skipfile();
- extractattr(name);
- utimes(name, timep);
return (GOOD);
case IFCHR:
@@ -944,6 +944,8 @@
}
(void) chown(name, curfile.dip->di_uid, curfile.dip->di_gid);
(void) chmod(name, mode);
+ extractattr(name);
+ utimes(name, timep);
if (flags)
#ifdef __linux__
{
@@ -964,8 +966,6 @@
#endif
#endif
skipfile();
- extractattr(name);
- utimes(name, timep);
return (GOOD);
case IFREG:
@@ -994,6 +994,8 @@
skipfile();
(void) chown(name, luid, lgid);
(void) chmod(name, mode);
+ extractattr(name);
+ utimes(name, timep);
if (flags)
#ifdef __linux__
(void) lsetflags(name, flags);
@@ -1007,8 +1009,6 @@
(void) chflags(name, flags);
#endif
#endif
- extractattr(name);
- utimes(name, timep);
return (GOOD);
}
}
@@ -1216,8 +1216,8 @@
(void) fchown(ofile, uid, gid);
(void) fchmod(ofile, mode);
(void) close(ofile);
- (void) lsetflags(oFileRsrc, flags);
utimes(oFileRsrc, timep);
+ (void) lsetflags(oFileRsrc, flags);
return (GOOD);
}
/* NOTREACHED */