summaryrefslogtreecommitdiff
path: root/src/common/lock.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/lock.c')
-rw-r--r--src/common/lock.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/src/common/lock.c b/src/common/lock.c
index bed657f..dd42ef2 100644
--- a/src/common/lock.c
+++ b/src/common/lock.c
@@ -1,45 +1,36 @@
-
#include <unistd.h>
#include <stdio.h>
#include "lock.h"
#include "socket.h"
-// 書き込みファイルの保護処理
-// (書き込みが終わるまで、旧ファイルを保管しておく)
+/// Protected file writing
+/// (Until the file is closed, it keeps the old file)
-// 新しいファイルの書き込み開始
+// Start writing a tmpfile
FILE *lock_fopen (const char *filename, int *info)
{
char newfile[512];
FILE *fp;
int no = getpid ();
- // 安全なファイル名を得る(手抜き)
+ // Get a filename that doesn't already exist
do
{
sprintf (newfile, "%s_%d.tmp", filename, no++);
}
- while ((fp = fopen_ (newfile, "r")) && fclose_ (fp));
+ while ((fp = fopen_ (newfile, "r")) && (fclose_ (fp), 1));
*info = --no;
return fopen_ (newfile, "w");
}
-// 旧ファイルを削除&新ファイルをリネーム
-int lock_fclose (FILE * fp, const char *filename, int *info)
+// Delete the old file and rename the new file
+void lock_fclose (FILE * fp, const char *filename, int *info)
{
- int ret = 0;
char newfile[512];
- if (fp != NULL)
+ if (fp)
{
- ret = fclose_ (fp);
+ fclose_ (fp);
sprintf (newfile, "%s_%d.tmp", filename, *info);
- remove (filename);
- // このタイミングで落ちると最悪。
rename (newfile, filename);
- return ret;
- }
- else
- {
- return 1;
}
}