diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2011-03-24 13:57:13 -0700 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2011-03-24 13:57:13 -0700 |
commit | a2306446c86b3333e69b082e41ae76ba71a42d9d (patch) | |
tree | ac032fc4566d2ae3091a0dc95329ac86d50b9a23 /src/common/lock.c | |
parent | b6fa80d4c17994771cb796317c52cb8fb7a38a16 (diff) | |
download | tmwa-a2306446c86b3333e69b082e41ae76ba71a42d9d.tar.gz tmwa-a2306446c86b3333e69b082e41ae76ba71a42d9d.tar.bz2 tmwa-a2306446c86b3333e69b082e41ae76ba71a42d9d.tar.xz tmwa-a2306446c86b3333e69b082e41ae76ba71a42d9d.zip |
Optimize common objects, and adjust other objects accordingly.
Major changes still need to be made to each of the servers.
Diffstat (limited to 'src/common/lock.c')
-rw-r--r-- | src/common/lock.c | 27 |
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; } } |