/*
* 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
* 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
#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.
*/
__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
__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;