From 099fe68dba55361c8e3520af05a64c2a4a369501 Mon Sep 17 00:00:00 2001 From: ptt Date: Wed, 12 May 2004 14:53:40 +0000 Subject: read/write recommend with same fd, git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1963 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/bbs.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'mbbsd') diff --git a/mbbsd/bbs.c b/mbbsd/bbs.c index 50094bd3..45a4cfe9 100644 --- a/mbbsd/bbs.c +++ b/mbbsd/bbs.c @@ -1336,15 +1336,18 @@ do_add_recommend(char *direct, fileheader_t *fhdr, int ent, char *buf, int type) if( update ){ int fd; - get_record(direct, fhdr, sizeof(fhdr), ent); - fhdr->recommend += update; //Ptt: update only necessary - if( (fd = open(direct, O_WRONLY)) < 0 ) + if( (fd = open(direct, O_RDWR)) < 0 ) return -1; if( lseek(fd, (off_t)(sizeof(fileheader_t) * (ent - 1) + (int)&fhdr->recommend - (int)fhdr), SEEK_SET) >= 0) // 如果 lseek 失敗就不會 write + { + read(fd, &fhdr->recommend, sizeof(char)); + fhdr->recommend += update; + lseek(fd, -1, SEEK_CUR); write(fd, &fhdr->recommend, sizeof(char)); + } close(fd); } -- cgit v1.2.3