diff options
-rw-r--r-- | pttbbs/common/sys/file.c | 4 | ||||
-rw-r--r-- | pttbbs/include/proto.h | 2 | ||||
-rw-r--r-- | pttbbs/mbbsd/friend.c | 4 | ||||
-rw-r--r-- | pttbbs/mbbsd/mbbsd.c | 91 |
4 files changed, 6 insertions, 95 deletions
diff --git a/pttbbs/common/sys/file.c b/pttbbs/common/sys/file.c index 3d8d0b12..a59c5123 100644 --- a/pttbbs/common/sys/file.c +++ b/pttbbs/common/sys/file.c @@ -489,6 +489,10 @@ file_delete_record(const char *file, const char *string, int case_sensitive) } // other wise, keep the line. fputs(buf, nfp); + // Fix broken records (ex, deprecated "distinct" files in format + // "%s\0#%s\n". + if (*buf && buf[strlen(buf) - 1] != '\n') + fputc('\n', nfp); } fclose(nfp); nfp = NULL; if (i > 0) diff --git a/pttbbs/include/proto.h b/pttbbs/include/proto.h index 6a505563..32ac3f3c 100644 --- a/pttbbs/include/proto.h +++ b/pttbbs/include/proto.h @@ -393,8 +393,6 @@ void mkuserdir(const char *userid); void log_usies(const char *mode, const char *mesg); void system_abort(void); void abort_bbs(int sig) GCC_NORETURN; -void del_distinct(const char *fname, const char *line, int casesensitive); -void add_distinct(const char *fname, const char *line); void u_exit(const char *mode); void talk_request(int sig); int establish_talk_connection(const userinfo_t *uip); diff --git a/pttbbs/mbbsd/friend.c b/pttbbs/mbbsd/friend.c index fdbba9e7..5b7992b2 100644 --- a/pttbbs/mbbsd/friend.c +++ b/pttbbs/mbbsd/friend.c @@ -596,7 +596,7 @@ friend_edit(int type) while (fgets(line, sizeof(line), fp)) { sscanf(line, "%" toSTR(IDLEN) "s", uident); sethomefile(genbuf, uident, FN_ALOHA); - del_distinct(genbuf, cuser.userid, 0); + file_delete_record(genbuf, cuser.userid, 0); } fclose(fp); } @@ -605,7 +605,7 @@ friend_edit(int type) while (fgets(line, 80, fp)) { sscanf(line, "%" toSTR(IDLEN) "s", uident); sethomefile(genbuf, uident, FN_ALOHA); - add_distinct(genbuf, cuser.userid); + file_append_record(genbuf, cuser.userid); } fclose(fp); } diff --git a/pttbbs/mbbsd/mbbsd.c b/pttbbs/mbbsd/mbbsd.c index 12ad2d8b..354ee39c 100644 --- a/pttbbs/mbbsd/mbbsd.c +++ b/pttbbs/mbbsd/mbbsd.c @@ -882,97 +882,6 @@ login_query(char *ruid) #endif } -void -add_distinct(const char *fname, const char *line) -{ - FILE *fp; - int n = 0; - - if ((fp = fopen(fname, "a+"))) { - char buffer[80]; - char tmpname[100]; - FILE *fptmp; - - strlcpy(tmpname, fname, sizeof(tmpname)); - strcat(tmpname, "_tmp"); - if (!(fptmp = fopen(tmpname, "w"))) { - fclose(fp); - return; - } - rewind(fp); - while (fgets(buffer, 80, fp)) { - char *p = buffer + strlen(buffer) - 1; - - if (p[-1] == '\n' || p[-1] == '\r') - p[-1] = 0; - if (!strcmp(buffer, line)) - break; - sscanf(buffer + strlen(buffer) + 2, "%d", &n); - fprintf(fptmp, "%s%c#%d\n", buffer, 0, n); - } - - if (feof(fp)) - fprintf(fptmp, "%s%c#1\n", line, 0); - else { - sscanf(buffer + strlen(buffer) + 2, "%d", &n); - fprintf(fptmp, "%s%c#%d\n", buffer, 0, n + 1); - while (fgets(buffer, 80, fp)) { - sscanf(buffer + strlen(buffer) + 2, "%d", &n); - fprintf(fptmp, "%s%c#%d\n", buffer, 0, n); - } - } - fclose(fp); - fclose(fptmp); - rename(tmpname, fname); - } -} - -void -del_distinct(const char *fname, const char *line, int casesensitive) -{ - FILE *fp; - int n = 0; - - if ((fp = fopen(fname, "r"))) { - char buffer[80]; - char tmpname[100]; - FILE *fptmp; - - strlcpy(tmpname, fname, sizeof(tmpname)); - strcat(tmpname, "_tmp"); - if (!(fptmp = fopen(tmpname, "w"))) { - fclose(fp); - return; - } - rewind(fp); - while (fgets(buffer, 80, fp)) { - char *p = buffer + strlen(buffer) - 1; - - if (p[-1] == '\n' || p[-1] == '\r') - p[-1] = 0; - if(casesensitive) - { - if (!strcmp(buffer, line)) - break; - } else { - if (!strcasecmp(buffer, line)) - break; - } - sscanf(buffer + strlen(buffer) + 2, "%d", &n); - fprintf(fptmp, "%s%c#%d\n", buffer, 0, n); - } - - if (!feof(fp)) - while (fgets(buffer, 80, fp)) { - sscanf(buffer + strlen(buffer) + 2, "%d", &n); - fprintf(fptmp, "%s%c#%d\n", buffer, 0, n); - } - fclose(fp); - fclose(fptmp); - rename(tmpname, fname); - } -} - #if defined(WHERE) && !defined(FROMD) static int where(const char *from) |