From a2306446c86b3333e69b082e41ae76ba71a42d9d Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Thu, 24 Mar 2011 13:57:13 -0700 Subject: Optimize common objects, and adjust other objects accordingly. Major changes still need to be made to each of the servers. --- src/common/lock.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) (limited to 'src/common/lock.c') 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 #include #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; } } -- cgit v1.2.3-70-g09d2