Blob Blame History Raw
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 */