]> git.wh0rd.org - dump.git/blobdiff - compat/include/bsdcompat.h
noos -> popies.net
[dump.git] / compat / include / bsdcompat.h
index 7a3b11e23edf259db31d53062f9534ea8760d032..881f50582b725fb65987aa08e0b7b58483740751 100644 (file)
@@ -2,8 +2,10 @@
  *     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 <stelian@popies.net>, 1999-2000
+ *     Stelian Pop <stelian@popies.net> - AlcĂ´ve <www.alcove.com>, 2000-2002
  *
+ *     $Id: bsdcompat.h,v 1.16 2002/01/16 09:32:14 stelian Exp $
  */
 
 #include <config.h>
@@ -20,7 +22,7 @@
 #define MIN(a,b)       ((a < b) ? a : b)
 #endif
 
-#define        WINO            ((ino_t)1)
+#define        WINO            1
 #define        DEV_BSIZE       512
 #define        DEV_BSHIFT      9
 #define        MAXBSIZE        EXT2_MAX_BLOCK_SIZE
@@ -58,10 +60,9 @@ typedef __u64                u_quad_t;
 /*
  * The BSD dump format reserves 4 bytes for a time_t, but other architectures
  * (notably axp) have larger time_t.  ctime4() is a modified ctime() which
- * always accepts short 4-byte times.  time4() is a similarly modified time().
+ * always accepts short 4-byte times.
  */
 #define ctime4(timep) ({ time_t t = *(timep); ctime(&t); })
-#define time4(timep) ({time_t t; t = time(0); if (timep) *timep=t; t; })
 
 /*
  * This is the ext2_inode structure but the fields have been renamed
@@ -100,6 +101,7 @@ struct dinode {
 #define di_rdev                di_db[0]
 /* #define di_ouid             di_uid */
 /* #define di_ogid             di_gid */
+#define di_size_high   di_dir_acl
 
 /*
  * This is the ext2_dir_entry structure but the fields have been renamed
@@ -112,18 +114,48 @@ struct dinode {
 #define MAXNAMLEN      255
 #endif
 
-struct direct {
+/*
+ * For old libc.
+ */
+#ifndef DT_UNKNOWN
+#define DT_UNKNOWN      0
+#define DT_FIFO                 1
+#define DT_CHR          2
+#define DT_DIR          4
+#define DT_BLK          6
+#define DT_REG          8
+#define DT_LNK         10
+#define DT_SOCK                12
+#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;
-#if 1
-       __u8    d_namlen;
-       __u8    d_type;
-#else
        __u16   d_namlen;
-#endif
-       char            d_name[MAXNAMLEN + 1];
+       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.
  */