summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-06-16 12:58:37 +0800
committerwens <wens@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2008-06-16 12:58:37 +0800
commitc4456f1c3aa1f21235559aef7b38820a75cde7a9 (patch)
tree4abdb069264de3b228fbf1bbf77857f79622f454
parenta9d1a59dae2fe2a7997f7d5bf9eea7fe57dba66a (diff)
downloadpttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar.gz
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar.bz2
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar.lz
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar.xz
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.tar.zst
pttbbs-c4456f1c3aa1f21235559aef7b38820a75cde7a9.zip
ToggleNameList like function for Vector
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@4361 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--include/proto.h2
-rw-r--r--mbbsd/name.c25
2 files changed, 27 insertions, 0 deletions
diff --git a/include/proto.h b/include/proto.h
index a38579fd..eb303221 100644
--- a/include/proto.h
+++ b/include/proto.h
@@ -429,6 +429,8 @@ typedef int (*gnc_perm_func)(int);
typedef char* (*gnc_getname_func)(int);
extern void namecomplete2(struct Vector *namelist, const char *prompt, char *data);
+extern void ShowVector(struct Vector *self, int row, int column, const char *prompt);
+extern void ToggleVector(struct Vector *list, int *recipient, const char *listfile, const char *msg);
void usercomplete(const char *prompt, char *data);
void namecomplete(const char *prompt, char *data);
diff --git a/mbbsd/name.c b/mbbsd/name.c
index 064985c9..fd5a1976 100644
--- a/mbbsd/name.c
+++ b/mbbsd/name.c
@@ -209,6 +209,31 @@ ShowNameList(int row, int column, const char *prompt)
}
void
+ToggleVector(struct Vector *list, int *recipient, const char *listfile, const char *msg)
+{
+ FILE *fp;
+ char genbuf[STRLEN];
+
+ if ((fp = fopen(listfile, "r"))) {
+ while (fgets(genbuf, sizeof(genbuf), fp)) {
+ char *space = strpbrk(genbuf, str_space);
+ if (space) *space = '\0';
+ if (!genbuf[0])
+ continue;
+ if (!Vector_search(list, genbuf)) {
+ Vector_add(list, genbuf);
+ (*recipient)++;
+ } else {
+ Vector_remove(list, genbuf);
+ (*recipient)--;
+ }
+ }
+ fclose(fp);
+ ShowVector(list, 3, 0, msg);
+ }
+}
+
+void
ToggleNameList(int *reciper, const char *listfile, const char *msg)
{
FILE *fp;