]> git.wh0rd.org - dump.git/blobdiff - compat/include/bsdcompat.h
Compatibility between dumps made on little endian machines vs. big endian machines...
[dump.git] / compat / include / bsdcompat.h
index c697cabf617023123382b37d49ad3e30aba2e76c..bb39fe8a292bfd49c20d08880492b079d043bad6 100644 (file)
@@ -1,11 +1,15 @@
 /*
  *     Ported to Linux's Second Extended File System as part of the
  *     dump and restore backup suit
- *     Remy Card <card@Linux.EU.Org>, 1994, 1995, 1996
+ *     Remy Card <card@Linux.EU.Org>, 1994-1997
+ *     Stelian Pop <pop@cybercable.fr>, 1999-2000
  *
+ *     $Id: bsdcompat.h,v 1.10 2000/02/10 09:42:32 stelian Exp $
  */
 
 #include <config.h>
+#include <sys/time.h>
+#include <dirent.h>
 
 #define        __dead          volatile
 
@@ -105,23 +109,14 @@ struct dinode {
  * This is the 4.4BSD directory entry structure
  */
 #define DIRBLKSIZ      DEV_BSIZE
+#ifndef MAXNAMLEN
 #define MAXNAMLEN      255
-
-struct direct {
-       __u32   d_ino;
-       __u16   d_reclen;
-#if 1
-       __u8    d_namlen;
-       __u8    d_type;
-#else
-       __u16   d_namlen;
 #endif
-       char            d_name[MAXNAMLEN + 1];
-};
 
 /*
- * File types
+ * For old libc.
  */
+#ifndef DT_UNKNOWN
 #define DT_UNKNOWN      0
 #define DT_FIFO                 1
 #define DT_CHR          2
@@ -130,8 +125,36 @@ struct direct {
 #define DT_REG          8
 #define DT_LNK         10
 #define DT_SOCK                12
-#define        DT_WHT          14
+#endif
+
+#ifndef d_fileno
+#define d_fileno d_ino
+#endif
 
+/*
+ * This is the direct structure used by dump. In needs to be
+ * different from direct because linux dump generates only
+ * 'old inode format' dumps. And BSD supposes that the old
+ * inode dumps have the d_namelen field written in machine byte
+ * order...
+ */
+struct olddirect {
+       __u32   d_ino;
+       __u16   d_reclen;
+       __u16   d_namlen;
+       char    d_name[MAXNAMLEN + 1];
+};
+
+/*
+ * The direct structure used by restore.
+ */
+struct direct {
+       __u32   d_ino;
+       __u16   d_reclen;
+       __u8    d_type;
+       __u8    d_namlen;
+       char    d_name[MAXNAMLEN + 1];
+};
 /*
  * Convert between stat structure types and directory types.
  */
@@ -203,6 +226,11 @@ struct old_bsd_inode {
        __u32           di_spare[4];
 };
 
+struct bsdtimeval {    /* XXX alpha-*-linux is deviant */
+       __u32   tv_sec;
+       __u32   tv_usec;
+};
+
 /*
  * This is the new (4.4) BSD inode structure
  * copied from the FreeBSD 2.0 <ufs/ufs/dinode.h> include file
@@ -215,9 +243,9 @@ struct new_bsd_inode {
                __u32           inumber;
        }               di_u;
        u_quad_t        di_size;
-       struct timeval  di_atime;
-       struct timeval  di_mtime;
-       struct timeval  di_ctime;
+       struct bsdtimeval       di_atime;
+       struct bsdtimeval       di_mtime;
+       struct bsdtimeval       di_ctime;
        daddr_t         di_db[NDADDR];
        daddr_t         di_ib[NIADDR];
        __u32           di_flags;