summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-06-30 01:55:49 +0800
committerptt <ptt@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2004-06-30 01:55:49 +0800
commit4960c6f354132ea0fa0b19382fd8a80fab2b80da (patch)
tree5f0e68470538511ff884c4bc83d7ed62282611d7
parent29e58e53604571944c60b373b23a9790efdc73bd (diff)
downloadpttbbs-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.h2
-rw-r--r--mbbsd/admin.c18
-rw-r--r--mbbsd/merge.c5
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);