summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-07-02 11:25:26 +0800
committerpiaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2014-07-02 11:25:26 +0800
commit0856b6d4493f8f7134db7205765251db86246bd2 (patch)
treee81558ce444105bf8700084425969486de416d02
parentf6c3347b04f9fee4d23f459cb50d68a240d40e48 (diff)
downloadpttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar.gz
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar.bz2
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar.lz
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar.xz
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.tar.zst
pttbbs-0856b6d4493f8f7134db7205765251db86246bd2.zip
Support deleting comments when BRD_ALIGNEDCMT is enabled.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk@6022 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--pttbbs/mbbsd/comments.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/pttbbs/mbbsd/comments.c b/pttbbs/mbbsd/comments.c
index ccea7514..65a17c18 100644
--- a/pttbbs/mbbsd/comments.c
+++ b/pttbbs/mbbsd/comments.c
@@ -197,10 +197,10 @@ int CommentsGetCount(void *ctx)
int CommentsDeleteFromTextFile(void *ctx, int i, const char *reason)
{
- size_t pattern_len;
+ size_t pattern_len, pattern2_len;
CommentsCtx *c = (CommentsCtx *)ctx;
const CommentBodyReq *req;
- char buf[ANSILINELEN], pattern[ANSILINELEN];
+ char buf[ANSILINELEN], pattern[ANSILINELEN], pattern2[ANSILINELEN];
char filename[PATHLEN], tmpfile[PATHLEN];
FILE *in, *out;
int found = 0;
@@ -213,18 +213,25 @@ int CommentsDeleteFromTextFile(void *ctx, int i, const char *reason)
snprintf(tmpfile, sizeof(tmpfile), "%s.tmp", filename);
FormatCommentString(pattern, sizeof(pattern), req->type,
req->userid, 0, req->msg, "");
+ sprintf(buf, "%-*s", IDLEN, req->userid);
+ FormatCommentString(pattern2, sizeof(pattern2), req->type,
+ buf, 0, req->msg, "");
// It's stupid but we have to remove the trailing ANSI_RESET
// for comparison.
*strrchr(pattern, ESC_CHR) = 0;
+ *strrchr(pattern2, ESC_CHR) = 0;
/* Remove the trailing \n for strncmp. */
pattern_len = strlen(pattern);
+ pattern2_len = strlen(pattern2);
// Now, try to construct and filter the message from file.
in = fopen(filename, "rt");
out = fopen(tmpfile, "wt");
while (fgets(buf, sizeof(buf), in)) {
- if (strncmp(buf, pattern, pattern_len) == 0 &&
- (buf[pattern_len] == ' ' || buf[pattern_len] == ESC_CHR) &&
- !found) {
+ if (!found && (
+ (strncmp(buf, pattern, pattern_len) == 0 &&
+ (buf[pattern_len] == ' ' || buf[pattern_len] == ESC_CHR)) ||
+ (strncmp(buf, pattern2, pattern2_len) == 0 &&
+ (buf[pattern2_len] == ' ' || buf[pattern2_len] == ESC_CHR)))) {
// Note reason is 40 chars in length.
fprintf(out, ANSI_COLOR(1;30)
"(%s §R°£ %s ªº±À¤å: %s)" ANSI_RESET "\n",