diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2014-07-02 11:25:26 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2014-07-02 11:25:26 +0800 |
commit | 0856b6d4493f8f7134db7205765251db86246bd2 (patch) | |
tree | e81558ce444105bf8700084425969486de416d02 | |
parent | f6c3347b04f9fee4d23f459cb50d68a240d40e48 (diff) | |
download | pttbbs-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.c | 17 |
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", |