summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-10-08 22:22:34 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2010-10-08 22:22:34 +0800
commitad2a7732375a559c2356701cfd78c3d131afcd3a (patch)
tree8dd33be0bcb733bbccda47908883ddb4185de2ae
parent74313b15f238890de785b2f29112544cbbdc5746 (diff)
downloadpttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar.gz
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar.bz2
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar.lz
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar.xz
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.tar.zst
pttbbs-ad2a7732375a559c2356701cfd78c3d131afcd3a.zip
set FILE_BM if a folder in announce(man) with mark FILE_BM/FILE_HIDE was deleted
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@5111 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/announce.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/pttbbs/mbbsd/announce.c b/pttbbs/mbbsd/announce.c
index 522c625b..bdbed945 100644
--- a/pttbbs/mbbsd/announce.c
+++ b/pttbbs/mbbsd/announce.c
@@ -770,14 +770,13 @@ a_delete(menu_t * pm)
{
char fpath[PATHLEN], buf[PATHLEN], cmd[PATHLEN];
char ans[4];
- fileheader_t backup;
+ fileheader_t backup, *fhdr = &(pm->header[pm->now - pm->page]);
snprintf(fpath, sizeof(fpath),
- "%s/%s", pm->path, pm->header[pm->now - pm->page].filename);
+ "%s/%s", pm->path, fhdr->filename);
setadir(buf, pm->path);
- if (pm->header[pm->now - pm->page].filename[0] == 'H' &&
- pm->header[pm->now - pm->page].filename[1] == '.') {
+ if (fhdr->filename[0] == 'H' && fhdr->filename[1] == '.') {
getdata(b_lines - 1, 1, "您確定要刪除此精華區連線嗎(Y/N)?[N] ",
ans, sizeof(ans), LCECHO);
if (ans[0] != 'y')
@@ -810,9 +809,7 @@ a_delete(menu_t * pm)
setbpath(buf, save_bn);
stampfile(buf, &backup);
strlcpy(backup.owner, cuser.userid, sizeof(backup.owner));
- strlcpy(backup.title,
- pm->header[pm->now - pm->page].title + 2,
- sizeof(backup.title));
+ strlcpy(backup.title, fhdr->title + 2, sizeof(backup.title));
snprintf(cmd, sizeof(cmd),
"mv -f %s %s", fpath, buf);
@@ -850,9 +847,11 @@ a_delete(menu_t * pm)
strlcpy(backup.owner, cuser.userid, sizeof(backup.owner));
strcpy(backup.title, "◆");
- strlcpy(backup.title + 2,
- pm->header[pm->now - pm->page].title + 2,
- sizeof(backup.title) - 3);
+ strlcpy(backup.title + 2, fhdr->title + 2, sizeof(backup.title) - 3);
+
+ // restrict access if source is hidden
+ if ((fhdr->filemode & FILE_BM) || (fhdr->filemode & FILE_HIDE))
+ backup.filemode |= FILE_BM;
/* merge setapath(buf, save_bn); setadir(buf, buf); */
snprintf(buf, sizeof(buf), "man/boards/%c/%s/" FN_DIR,