aboutsummaryrefslogtreecommitdiffstats
path: root/FICS
diff options
context:
space:
mode:
Diffstat (limited to 'FICS')
-rw-r--r--FICS/playerdb.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/FICS/playerdb.c b/FICS/playerdb.c
index f3213e5..909417d 100644
--- a/FICS/playerdb.c
+++ b/FICS/playerdb.c
@@ -3322,15 +3322,15 @@ player_add_comment(int p_by, int p_to, char *comment)
FILE *fp;
char fname[MAX_FILENAME_SIZE] = { '\0' };
int fd;
- int ret;
+ int ret[3];
time_t t = time(NULL);
if (!parray[p_to].registered)
return -1;
- ret = snprintf(fname, sizeof fname, "%s/player_data/%c/%s.%s",
+ ret[0] = snprintf(fname, sizeof fname, "%s/player_data/%c/%s.%s",
stats_dir, parray[p_to].login[0], parray[p_to].login, "comments");
- if (is_too_long(ret, sizeof fname)) {
+ if (is_too_long(ret[0], sizeof fname)) {
warnx("%s: filename too long", __func__);
return -1;
}
@@ -3340,12 +3340,22 @@ player_add_comment(int p_by, int p_to, char *comment)
return -1;
} else if ((fp = fdopen(fd, "a")) == NULL) {
warn("%s: fdopen", __func__);
- close(fd);
+
+ if (close(fd) != 0)
+ warn("%s: error closing file descriptor", __func__);
+
+ return -1;
+ }
+
+ ret[1] = fprintf(fp, "%s at %s: %s\n", parray[p_by].name, strltime(&t),
+ comment);
+ ret[2] = fclose(fp);
+
+ if (ret[1] < 0 || ret[2] != 0) {
+ warnx("%s: certain file operations failed", __func__);
return -1;
}
- fprintf(fp, "%s at %s: %s\n", parray[p_by].name, strltime(&t), comment);
- fclose(fp);
parray[p_to].num_comments = player_num_comments(p_to);
return 0;
}