From 011c20190d1584a43153c11c29d64a1668f6870e Mon Sep 17 00:00:00 2001
From: victor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>
Date: Sat, 22 Nov 2003 10:56:32 +0000
Subject: fix 't' for admin

git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@1361 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
---
 mbbsd/board.c | 50 +++++++++++++++++++++++++++-----------------------
 mbbsd/fav.c   |  4 ++++
 2 files changed, 31 insertions(+), 23 deletions(-)

(limited to 'mbbsd')

diff --git a/mbbsd/board.c b/mbbsd/board.c
index a1c93c78..112c12b5 100644
--- a/mbbsd/board.c
+++ b/mbbsd/board.c
@@ -1002,7 +1002,13 @@ choose_board(int newflag)
 	case 't':
 	    ptr = &nbrd[num];
 	    if (yank_flag == 0 && get_fav_type(&nbrd[0]) != 0) {
-		fav_tag(nbrd[num].bid, get_fav_type(ptr), 2);
+		fav_tag(ptr->bid, get_fav_type(ptr), 2);
+	    }
+	    else if (yank_flag != 0) {
+		/* �����޲z�Ϊ� tag */
+		fav_type_t *ft = fav_add_board(ptr->bid);
+		set_attr(ft, FAVH_FAV, 0);	// turn off FAVH_FAV
+		set_attr(ft, FAVH_ADM_TAG, 1);	// turn on  FAVH_ADM_TAG
 	    }
 	    ptr->myattr ^= BRD_TAG;
 	    head = 9999;
@@ -1082,16 +1088,14 @@ choose_board(int newflag)
 	case Ctrl('P'):
 	    if (class_bid != 0 &&
 		(HAS_PERM(PERM_SYSOP) || (currmode & MODE_MENU))) {
-		for (tmp = 0; tmp < brdnum; tmp++) {
-		    short   bid = nbrd[tmp].bid;
+		fav_t *fav = get_current_fav();
+		for (tmp = 0; tmp < fav->DataTail; tmp++) {
+		    short   bid;
 		    boardheader_t  *bh = &bcache[ bid - 1 ];
-		    /*
-		    if (!(fav->b[tmp].attr & BRD_TAG) || bh->gid == class_bid)
-			continue;
-		    */
-		    if( !(nbrd[tmp].myattr & BRD_TAG) )
+		    if( !is_set_attr(&fav->favh[tmp], FAVH_ADM_TAG))
 			continue;
-		    nbrd[tmp].myattr &= ~BRD_TAG;
+		    bid = fav_getid(&fav->favh[tmp]);
+		    set_attr(&fav->favh[tmp], FAVH_ADM_TAG, 0);
 		    if (bh->gid != class_bid) {
 			bh->gid = class_bid;
 			substitute_record(FN_BOARD, bh,
@@ -1231,25 +1235,25 @@ choose_board(int newflag)
 	    break;
 #endif
 	case 'Z':
-	    if (!HAS_PERM(PERM_BASIC))
-		break;
-	    char genbuf[256];
-	    sprintf(genbuf, "�T�w�n %s�q�\\ �s�ݪO? [N/y] ", cuser.uflag2 & FAVNEW_FLAG ? "����" : "");
-	    if (getans(genbuf) != 'y')
-		break;
+	    if (HAS_PERM(PERM_BASIC)) {
+		char genbuf[256];
+		sprintf(genbuf, "�T�w�n %s�q�\\ �s�ݪO? [N/y] ", cuser.uflag2 & FAVNEW_FLAG ? "����" : "");
+		if (getans(genbuf) != 'y')
+		    break;
 
-	    cuser.uflag2 ^= FAVNEW_FLAG;
-	    if(cuser.uflag2 & FAVNEW_FLAG){
-		char fname[80];
+		cuser.uflag2 ^= FAVNEW_FLAG;
+		if(cuser.uflag2 & FAVNEW_FLAG){
+		    char fname[80];
 
-		setuserfile(fname, FAVNB);
+		    setuserfile(fname, FAVNB);
 
-		if( (tmp = open(fname, O_RDONLY, 0600)) != -1 ){
-		    close(tmp);
-		    updatenewfav(0);
+		    if( (tmp = open(fname, O_RDONLY, 0600)) != -1 ){
+			close(tmp);
+			updatenewfav(0);
+		    }
 		}
+		vmsg((cuser.uflag2 & FAVNEW_FLAG) ? "�������q�\\�s�ݪO�Ҧ�" : "���������`�Ҧ�");
 	    }
-    	    vmsg((cuser.uflag2 & FAVNEW_FLAG) ? "�������q�\\�s�ݪO�Ҧ�" : "���������`�Ҧ�");
 	    break;
 	case 'v':
 	case 'V':
diff --git a/mbbsd/fav.c b/mbbsd/fav.c
index 9479979e..08b837a6 100644
--- a/mbbsd/fav.c
+++ b/mbbsd/fav.c
@@ -30,6 +30,10 @@ inline static fav_folder_t *cast_folder(fav_type_t *p){
 }
 /* --- */
 
+inline int get_data_tail(fav_t *fp){
+    return fp->DataTail;
+}
+
 inline int get_data_number(fav_t *fp){
     return fp->nBoards + fp->nLines + fp->nFolders;
 }
-- 
cgit v1.2.3