看板PttCurrent
標 題fileheader
發信站HKDAY (Mon Dec 6 17:58:53 2004)
轉信站ptt!Group.NCTU!grouppost
由於 hkday 已改用了重新編制的 fileheader, 而 cptt 的版本也有了不同,
且列如下:
ptt (April) ptt (Dec) hkday(Dec)
========================================================================
sizeof(fileheader_t) 128 bytes 128 bytes 128 bytes
fhdr.filename 1 - 33 1 - 33 1 - 33
fhdr.recommend 34 34 34
fhdr.owner 35 - 48 35 - 48 35 - 48
fhdr.date 49 - 54 (char) 49 - 54 (char) 49 - 52 (time_t)
[reserved pad] -- -- 53 - 54
fhdr.title 55 - 119 55 - 119 55 - 119
[alignment pad] 120 120 120 (PostType)
fhdr.money 121- 124 121- 124 --
fhdr.anon_uid -- 121- 124 121- 124
fhdr.vote_limits.posts -- 121 --
fhdr.vote_limits.logins -- 122 --
fhdr.vote_limits.pad -- 123- 124 --
fhdr.refer.ref -- (121 - 124) --
fhdr.refer.flag -- (124) --
fhdr.filemode 125 (uchar) 125 (uchar) 125-128 (uint)
[alignment pad] 126 - 128 126 - 128 --
========================================================================
代碼比較.
========================================================================
#define TTLEN 64 /* Length of title */
#define FNLEN 33 /* Length of filename */
#define IDLEN 12 /* Length of bid/uid */
typedef struct fileheader_hkday {
char filename[FNLEN]; /* M.9876543210.A 33byte 33byte*/
char recommend; /* important level 1byte 34byte*/
char owner[IDLEN + 2]; /* uid[.] 14byte 48byte*/
time_t date; /* timestamp 4byte 52byte*/
char pad1[2]; /* for post type 2byte 54byte*/
char title[TTLEN + 1]; /* title on board 65byte 119byte*/
char pad2; /* for post type 1byte 120byte*/
int money; /* for hidden post 4byte 124byte*/
unsigned filemode; /* extended filemode 4byte 128byte*/
} fileheader_hkday;
typedef struct fileheader_pttold {
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 */
unsigned char filemode; /* must be last field @ boards.c */
} fileheader_pttold;
typedef struct fileheader_pttnew {
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];
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_pttnew;
--
※ 發信站: 香港地(hkday.net)
◆ From: 61.238.143.229