diff options
author | Werner Koch <[email protected]> | 2011-09-28 13:41:58 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2011-09-28 13:41:58 +0000 |
commit | ed8e267859a00233fee89a6b1b7fb3d74ceced96 (patch) | |
tree | e74d7b7af18297021f1e7548899d07badb464a0a /common/dotlock.c | |
parent | Allow arbitrary timeouts with dotlock. (diff) | |
download | gnupg-ed8e267859a00233fee89a6b1b7fb3d74ceced96.tar.gz gnupg-ed8e267859a00233fee89a6b1b7fb3d74ceced96.zip |
Add a flag parameter to dotlock_create.
This allows us to extend this function in the future.
Diffstat (limited to 'common/dotlock.c')
-rw-r--r-- | common/dotlock.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/common/dotlock.c b/common/dotlock.c index e3e9fa3d2..37a1df3c6 100644 --- a/common/dotlock.c +++ b/common/dotlock.c @@ -53,7 +53,7 @@ At program initialization time, the module should be explicitly initialized: - dotlock_create (NULL); + dotlock_create (NULL, 0); This installs an atexit handler and may also initialize mutex etc. It is optional for non-threaded applications. Only the first call @@ -64,7 +64,7 @@ dotlock_t h - h = dotlock_create (fname); + h = dotlock_create (fname, 0); if (!h) error ("error creating lock file: %s\n", strerror (errno)); @@ -656,17 +656,19 @@ dotlock_create_w32 (dotlock_t h, const char *file_to_lock) #ifdef HAVE_W32CE_SYSTEM wchar_t *wname = utf8_to_wchar (h->lockname); - h->lockhd = INVALID_HANDLE_VALUE; if (wname) h->lockhd = CreateFile (wname, + GENERIC_READ|GENERIC_WRITE, + FILE_SHARE_READ|FILE_SHARE_WRITE, + NULL, OPEN_ALWAYS, 0, NULL); + else + h->lockhd = INVALID_HANDLE_VALUE; + jnlib_free (wname); #else h->lockhd = CreateFile (h->lockname, -#endif GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_ALWAYS, 0, NULL); -#ifdef HAVE_W32CE_SYSTEM - jnlib_free (wname); #endif } if (h->lockhd == INVALID_HANDLE_VALUE) @@ -696,12 +698,15 @@ dotlock_create_w32 (dotlock_t h, const char *file_to_lock) POSIX systems a temporary file ".#lk.<hostname>.pid[.threadid] is used. + FLAGS must be 0. + The function returns an new handle which needs to be released using destroy_dotlock but gets also released at the termination of the process. On error NULL is returned. */ + dotlock_t -dotlock_create (const char *file_to_lock) +dotlock_create (const char *file_to_lock, unsigned int flags) { static int initialized; dotlock_t h; @@ -715,6 +720,12 @@ dotlock_create (const char *file_to_lock) if ( !file_to_lock ) return NULL; /* Only initialization was requested. */ + if (flags) + { + jnlib_set_errno (EINVAL); + return NULL; + } + h = jnlib_calloc (1, sizeof *h); if (!h) return NULL; |