X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=compat%2Finclude%2Fbsdcompat.h;h=ce7d6538544999f99e5b8a8285908f107adc3851;hb=3e8961b70386c298ef95b85171ec9bb5dea9649a;hp=7a3b11e23edf259db31d53062f9534ea8760d032;hpb=8d4197bb9ba5bbcef21409231ed8903b0cac353a;p=dump.git diff --git a/compat/include/bsdcompat.h b/compat/include/bsdcompat.h index 7a3b11e..ce7d653 100644 --- a/compat/include/bsdcompat.h +++ b/compat/include/bsdcompat.h @@ -2,8 +2,10 @@ * Ported to Linux's Second Extended File System as part of the * dump and restore backup suit * Remy Card , 1994-1997 - * Stelian Pop , 1999 + * Stelian Pop , 1999-2000 + * Stelian Pop - AlcĂ´ve , 2000-2002 * + * $Id: bsdcompat.h,v 1.21 2003/11/22 16:52:16 stelian Exp $ */ #include @@ -11,6 +13,7 @@ #include #define __dead volatile +#define UNUSED(x) x __attribute__ ((unused)) #ifndef NBBY #define NBBY 8 @@ -20,11 +23,16 @@ #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 + +#ifndef sunos #define MAXBSIZE EXT2_MAX_BLOCK_SIZE #define ROOTINO EXT2_ROOT_INO +#else +#define ROOTINO 2 +#endif #ifdef EXT2_NODUMP_FL #define UF_NODUMP EXT2_NODUMP_FL #endif @@ -33,8 +41,8 @@ #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) #define powerof2(x) ((((x)-1)&(x))==0) -#define dbtob(b) ((unsigned)(b) << DEV_BSHIFT) -#define fsbtodb(sb,b) ((int)(((long long)b * EXT2_BLOCK_SIZE(sb->super)) / DEV_BSIZE)) +#define fsbtodb(sb,b) ((int)(((long long)(b) * EXT2_BLOCK_SIZE((sb)->super)) / DEV_BSIZE)) +#define dbtofsb(sb,b) ((int)(((long long)(b) * DEV_BSIZE) / EXT2_BLOCK_SIZE((sb)->super))) #define sblock fs #define fs_fsize fragsize @@ -58,10 +66,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 @@ -72,6 +79,25 @@ typedef __u64 u_quad_t; #define NINDIR(fs) EXT2_ADDR_PER_BLOCK(fs->super) +#ifdef sunos +typedef uint8_t __u8; +typedef uint16_t __u16; +typedef uint32_t __u32; +typedef int8_t __s8; +typedef int16_t __s16; +typedef int32_t __s32; +#ifndef u_int +typedef unsigned int u_int; +#endif +#ifndef u_int16_t +typedef unsigned short u_int16_t; +#endif +#ifndef u_char +typedef unsigned char u_char; +#endif +typedef int64_t quad_t; +#endif /* sunos */ + struct dinode { __u16 di_mode; __u16 di_uid; @@ -94,12 +120,15 @@ struct dinode { __u8 di_frag; __u8 di_fsize; __u16 di_pad1; - __u32 di_spare[2]; + __u16 di_uidhigh; + __u16 di_gidhigh; + __u32 di_spare; }; #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 +141,42 @@ struct dinode { #define MAXNAMLEN 255 #endif +#ifdef sunos +#define MAXNAMLEN 255 +#endif + +/* + * 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 + +#ifdef sunos +#define DT_WHT 14 +#endif +#endif + +#ifndef d_fileno +#define d_fileno d_ino +#endif + +/* + * The direct structure used by dump/restore. + */ 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]; + __u8 d_namlen; + char d_name[MAXNAMLEN + 1]; }; - /* * Convert between stat structure types and directory types. */ @@ -136,20 +189,23 @@ struct direct { * without the d_name field, plus enough space for the name with a terminating * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary. */ +#ifdef __linux__ #if 0 #if (BYTE_ORDER == LITTLE_ENDIAN) #define DIRSIZ(oldfmt, dp) \ ((oldfmt) ? \ ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_type+1 + 3) &~ 3)) : \ ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3))) -#else +#else /* BYTE_ORDER */ #define DIRSIZ(oldfmt, dp) \ ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) #endif -#else - +#else /* 0 */ #define DIRSIZ(oldfmt,dp) EXT2_DIR_REC_LEN(((dp)->d_namlen & 0xff) + 1) - +#endif +#else /* __linux__ */ +#define DIRSIZ(oldfmt, dp) \ + ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) #endif /*