From df7dc203c47ecc39e3492cc2c2ba9a0128171646 Mon Sep 17 00:00:00 2001 From: Ron Koenderink Date: Mon, 28 Feb 2005 23:21:05 +0000 Subject: [PATCH] (turn): Change to stdio. (turn): Always close the file after attempting to write. Fixes bug where the file is not close when there is writing error. --- src/lib/commands/turn.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/lib/commands/turn.c b/src/lib/commands/turn.c index 0dd80caa9..84deb6780 100644 --- a/src/lib/commands/turn.c +++ b/src/lib/commands/turn.c @@ -46,7 +46,7 @@ int turn(void) { - int fd; + FILE *fptr; struct telstr tgm; char *p; char buf[MAXTELSIZE]; @@ -95,8 +95,8 @@ turn(void) pr("Writing empty no-login message.\n"); } - fd = open(msgfilepath, O_RDWR | O_CREAT | O_TRUNC, 0660); - if (fd == -1) { + fptr = fopen(msgfilepath, "w"); + if (fptr == NULL) { pr("Something went wrong opening the message file.\n"); logerror("Could not open message file (%s).\n", msgfilepath); return RET_SYS; @@ -105,14 +105,15 @@ turn(void) if (msgfilepath == downfil) pr("Logins disabled.\n"); - if ((write(fd, &tgm, sizeof(tgm)) < (ssize_t)sizeof(tgm)) || - (write(fd, buf, tgm.tel_length) < tgm.tel_length) || - (close(fd) == -1)) { + if ((fwrite((void *)&tgm, sizeof(tgm), 1, fptr) != 1) || + (fwrite((void *)buf, tgm.tel_length, 1, fptr) != 1)) { + fclose(fptr); pr("Something went wrong writing the message file.\n"); logerror("Could not properly write message file (%s).\n", msgfilepath); return RET_SYS; } + fclose(fptr); pr("\n"); return RET_OK; -- 2.43.0