summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pttbbs/common/sys/file.c4
-rw-r--r--pttbbs/include/proto.h2
-rw-r--r--pttbbs/mbbsd/friend.c4
-rw-r--r--pttbbs/mbbsd/mbbsd.c91
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)