diff options
author | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-06-30 01:55:49 +0800 |
---|---|---|
committer | ptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2004-06-30 01:55:49 +0800 |
commit | 4960c6f354132ea0fa0b19382fd8a80fab2b80da (patch) | |
tree | 5f0e68470538511ff884c4bc83d7ed62282611d7 | |
parent | 29e58e53604571944c60b373b23a9790efdc73bd (diff) | |
download | pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar.gz pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar.bz2 pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar.lz pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar.xz pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.tar.zst pttbbs-4960c6f354132ea0fa0b19382fd8a80fab2b80da.zip |
debug of losting the last post
git-svn-id: http://opensvn.csie.org/pttbbs/branches/ptt.fpg@2104 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r-- | include/proto.h | 2 | ||||
-rw-r--r-- | mbbsd/admin.c | 18 | ||||
-rw-r--r-- | mbbsd/merge.c | 5 |
3 files changed, 17 insertions, 8 deletions
diff --git a/include/proto.h b/include/proto.h index c439b708..b0307d54 100644 --- a/include/proto.h +++ b/include/proto.h @@ -24,7 +24,7 @@ void setup_man(boardheader_t * board); void delete_symbolic_link(boardheader_t *bh, int bid); int make_symbolic_link(char *bname, int gid); int make_symbolic_link_interactively(int gid); -void merge_dir(char *dir1, char *dir2); +void merge_dir(char *dir1, char *dir2, int isoutter); /* announce */ int a_menu(char *maintitle, char *path, int lastlevel); diff --git a/mbbsd/admin.c b/mbbsd/admin.c index d9211c74..09c608cd 100644 --- a/mbbsd/admin.c +++ b/mbbsd/admin.c @@ -271,7 +271,7 @@ int dir_cmp(const void *a, const void *b) atoi( &((fileheader_t *)b)->filename[2] )); } -void merge_dir(char *dir1, char *dir2) +void merge_dir(char *dir1, char *dir2, int isoutter) { int i, pn, sn; fileheader_t *fh; @@ -293,13 +293,19 @@ void merge_dir(char *dir1, char *dir2) fh= (fileheader_t *)malloc( (pn+sn)*sizeof(fileheader_t)); get_records(dir1, fh, sizeof(fileheader_t), 1, pn); get_records(dir2, fh+pn, sizeof(fileheader_t), 1, sn); + if(isoutter) + { + for(i=0; i<sn; i++) + if(fh[pn+i].owner[0]) + strcat(fh[pn+i].owner, "."); + } qsort(fh, pn+sn, sizeof(fileheader_t), dir_cmp); sprintf(bakdir,"%s.bak", dir1); Rename(dir1, bakdir); - for(i=1; i<pn+sn; i++ ) + for(i=1; i<=pn+sn; i++ ) { - if(!fh[i].title[0] || !fh[i].filename[0]) continue; - if( strcmp(fh[i-1].filename, fh[i].filename)) + if(!fh[i-1].title[0] || !fh[i-1].filename[0]) continue; + if(i == pn+sn || strcmp(fh[i-1].filename, fh[i].filename)) { fh[i-1].recommend =0; fh[i-1].filemode |= 1; @@ -314,6 +320,7 @@ void merge_dir(char *dir1, char *dir2) else fh[i].filemode |= fh[i-1].filemode; } + free(fh); } @@ -367,6 +374,7 @@ m_mod_board(char *bname) setbdir(genbuf, bname); m_fpg_brd(bname, fromdir); if(!fromdir[0]) break; + merge_dir(genbuf, fromdir, 1); } else{ #endif @@ -380,10 +388,10 @@ m_mod_board(char *bname) break; setbdir(genbuf, bname); setbdir(fromdir, frombname); + merge_dir(genbuf, fromdir, 0); #ifdef MERGEBBS } #endif - merge_dir(genbuf, fromdir); touchbtotal(bid); } break; diff --git a/mbbsd/merge.c b/mbbsd/merge.c index 82cfb23e..2cc7f5b1 100644 --- a/mbbsd/merge.c +++ b/mbbsd/merge.c @@ -147,13 +147,14 @@ m_fpg() sethomedir(buf, cuser.userid); sprintf(genbuf, "fpg/home/bbs/home/%c/%s/.DIR", userid[0], userid); - merge_dir(buf, genbuf); + merge_dir(buf, genbuf, 1); strcat(msg, "匯入個人信箱\n"); } if(getans("是否匯入個人信箱精華區? (Y/n)")!='n') { sprintf(buf, - "mv fpg/home/bbs/home/%c/%s/man home/%c/%s/man", + "rm -rd home/%c/%s/man>/dev/null ; mv fpg/home/bbs/home/%c/%s/man home/%c/%s", + cuser.userid[0], cuser.userid, userid[0], userid, cuser.userid[0], cuser.userid); system(buf); |