summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/proto.h5
-rw-r--r--mbbsd/admin.c2
-rw-r--r--mbbsd/board.c1
-rw-r--r--mbbsd/name.c9
4 files changed, 16 insertions, 1 deletions
diff --git a/include/proto.h b/include/proto.h
index df2c372b..a84c2fbb 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -386,6 +386,7 @@ int generalnamecomplete(char *prompt, char *data, int len, size_t nmemb,
gnc_getname_func getname);
int completeboard_compar(int where, char *str, int len);
int completeboard_permission(int where);
+int complete_board_and_group_permission(int where);
char *completeboard_getname(int where);
int completeutmp_compar(int where, char *str, int len);
int completeutmp_permission(int where);
@@ -395,6 +396,10 @@ char *completeutmp_getname(int where);
generalnamecomplete(MSG, BUF, sizeof(BUF), SHM->Bnumber, \
&completeboard_compar, &completeboard_permission, \
&completeboard_getname)
+#define CompleteBoardAndGroup(MSG,BUF) \
+ generalnamecomplete(MSG, BUF, sizeof(BUF), SHM->Bnumber, \
+ &completeboard_compar, &complete_board_and_group_permission, \
+ &completeboard_getname)
#define CompleteOnlineUser(MSG,BUF) \
generalnamecomplete(MSG, BUF, sizeof(BUF), SHM->UTMPnumber, \
&completeutmp_compar, &completeutmp_permission, \
diff --git a/mbbsd/admin.c b/mbbsd/admin.c
index 78a0c945..da7a79ca 100644
--- a/mbbsd/admin.c
+++ b/mbbsd/admin.c
@@ -629,7 +629,7 @@ m_board()
char bname[32];
stand_title("看板設定");
- CompleteBoard(msg_bid, bname);
+ CompleteBoardAndGroup(msg_bid, bname);
if (!*bname)
return 0;
m_mod_board(bname);
diff --git a/mbbsd/board.c b/mbbsd/board.c
index b5ab2413..219ca185 100644
--- a/mbbsd/board.c
+++ b/mbbsd/board.c
@@ -1055,6 +1055,7 @@ choose_board(int newflag)
int bid;
move(0, 0);
clrtoeol();
+ /* use CompleteBoard or CompleteBoardAndGroup ? */
CompleteBoard("\033[7m【 增加我的最愛 】\033[m\n"
"請輸入欲加入的看板名稱(按空白鍵自動搜尋):",
bname);
diff --git a/mbbsd/name.c b/mbbsd/name.c
index b657e854..60afab03 100644
--- a/mbbsd/name.c
+++ b/mbbsd/name.c
@@ -716,6 +716,15 @@ completeboard_permission(int where)
!(bptr->brdattr & BRD_GROUPBOARD));
}
+int
+complete_board_and_group_permission(int where)
+{
+ boardheader_t *bptr = &bcache[SHM->bsorted[0][where]];
+ return (!(bptr->brdattr & BRD_SYMBOLIC) &&
+ (GROUPOP() || HasPerm(bptr)));
+
+}
+
char *
completeboard_getname(int where)
{