]> git.wh0rd.org - dump.git/blobdiff - restore/dirs.c
Compatibility between dumps made on little endian machines vs. big endian machines...
[dump.git] / restore / dirs.c
index 30cec66e4a88a0df239ac1eb2ad38b0fd3a22591..558b2b681a6718ab6e0a8fd8e3df853c4970ddd5 100644 (file)
@@ -2,8 +2,7 @@
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
  *     Remy Card <card@Linux.EU.Org>, 1994-1997
- *      Stelian Pop <pop@cybercable.fr>, 1999 
- *
+ *     Stelian Pop <pop@cybercable.fr>, 1999-2000
  */
 
 /*
  */
 
 #ifndef lint
-#if 0
-static char sccsid[] = "@(#)dirs.c     8.7 (Berkeley) 5/1/95";
-#endif
 static const char rcsid[] =
-       "$Id: dirs.c,v 1.3 1999/10/11 12:59:19 stelian Exp $";
+       "$Id: dirs.c,v 1.8 2000/02/10 09:42:32 stelian Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -383,10 +379,6 @@ putdir(char *buf, size_t size)
                        if (Bcvt)
                                swabst((u_char *)"is", (u_char *) dp);
                        if (oldinofmt && dp->d_ino != 0) {
-#ifdef __linux__
-                               if (Bcvt)
-                                       swabst((u_char *)"s", (u_char *)&dp->d_namlen);
-#else
 #                              if BYTE_ORDER == BIG_ENDIAN
                                        if (Bcvt)
                                                dp->d_namlen = dp->d_type;
@@ -394,16 +386,8 @@ putdir(char *buf, size_t size)
                                        if (!Bcvt)
                                                dp->d_namlen = dp->d_type;
 #                              endif
-#endif /* __linux__ */
                                dp->d_type = DT_UNKNOWN;
                        }
-#ifdef __linux__
-                       /*
-                        * Horrible hack to read FreeBSD 2.0 dumps
-                        */
-                       if (!oldinofmt)
-                               swabst((u_char *)"6bs", (u_char *) dp);
-#endif /* __linux__ */
 #ifdef DIRDEBUG
                        printf ("reclen = %d, namlen = %d, type = %d\n",
                                dp->d_reclen, dp->d_namlen, dp->d_type);
@@ -658,10 +642,11 @@ setdirmodes(int flags)
                        cp = myname(ep);
                        (void) chown(cp, node.uid, node.gid);
                        (void) chmod(cp, node.mode);
+                       if (node.flags)
 #ifdef __linux__
-                       (void) setflags(cp, node.flags);
+                               (void) fsetflags(cp, node.flags);
 #else
-                       (void) chflags(cp, node.flags);
+                               (void) chflags(cp, node.flags);
 #endif
                        utimes(cp, node.timep);
                        ep->e_flags &= ~NEW;