diff options
Diffstat (limited to 'include/pttstruct.h')
-rw-r--r-- | include/pttstruct.h | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/include/pttstruct.h b/include/pttstruct.h index fcdb77bb..23979723 100644 --- a/include/pttstruct.h +++ b/include/pttstruct.h @@ -219,15 +219,39 @@ typedef struct boardheader_t { #define TTLEN 64 /* Length of title */ #define FNLEN 33 /* Length of filename */ -#define FHR_REFERENCE (1<<31) - typedef struct fileheader_t { char filename[FNLEN]; /* M.9876543210.A */ char recommend; /* important level */ char owner[IDLEN + 2]; /* uid[.] */ char date[6]; /* [02/02] or space(5) */ char title[TTLEN + 1]; - int money; /* rocker: if bit32 on ==> reference */ /* XXX dirty, split into flag and money if money of each file is less than 16bit? */ + union { + int money; + int anon_uid; + /* different order to match alignment */ +#ifdef _BIG_ENDIAN + struct { + unsigned char pad[2]; /* money & 0xffff0000 */ + unsigned char logins; /* money & 0xff00 */ + unsigned char posts; /* money & 0xff */ + } vote_limits; + struct { + unsigned int flag:1; + unsigned int ref:31; + } refer; +#else + struct { + unsigned char posts; /* money & 0xff */ + unsigned char logins; /* money & 0xff00 */ + unsigned char pad[2]; /* money & 0xffff0000 */ + } vote_limits; + struct { + unsigned int ref:31; + unsigned int flag:1; + } refer; +#endif + } multi; /* rocker: if bit32 on ==> reference */ + /* XXX dirty, split into flag and money if money of each file is less than 16bit? */ unsigned char filemode; /* must be last field @ boards.c */ } fileheader_t; |