diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-02-01 19:13:16 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-01 19:13:16 +0000 |
commit | 2dc69e84613617444e45268ff5d9c12bc43ca716 (patch) | |
tree | 98e09339ffdd142bc216cf8e8ff0927dfa02b31e /src | |
parent | 1fc02ffef13e2848ecfcad48201517cf6aa564cc (diff) | |
parent | f56e8905712eaf17a9dde9f61436eaec21c8a108 (diff) | |
download | rspamd-2dc69e84613617444e45268ff5d9c12bc43ca716.tar.gz rspamd-2dc69e84613617444e45268ff5d9c12bc43ca716.zip |
Merge pull request #2009 from mamash/master
Fix endian and flock support on (some) SunOS platforms
Diffstat (limited to 'src')
-rw-r--r-- | src/lua/lua_util.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index cb8d17849..222a48f35 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -1614,6 +1614,15 @@ lua_util_lock_file (lua_State *L) gint fd = -1; gboolean own = FALSE; +#if !HAVE_FLOCK + struct flock fl = { + .l_type = F_WRLCK, + .l_whence = SEEK_SET, + .l_start = 0, + .l_len = 0 + }; +#endif + fpath = luaL_checkstring (L, 1); if (fpath) { @@ -1632,7 +1641,11 @@ lua_util_lock_file (lua_State *L) return 2; } +#if HAVE_FLOCK if (flock (fd, LOCK_EX) == -1) { +#else + if (fcntl (fd, F_SETLKW, &fl) == -1) { +#endif lua_pushnil (L); lua_pushstring (L, strerror (errno)); @@ -1658,6 +1671,15 @@ lua_util_unlock_file (lua_State *L) gint fd = -1, ret, serrno; gboolean do_close = TRUE; +#if !HAVE_FLOCK + struct flock fl = { + .l_type = F_UNLCK, + .l_whence = SEEK_SET, + .l_start = 0, + .l_len = 0 + }; +#endif + if (lua_isnumber (L, 1)) { fd = lua_tonumber (L, 1); @@ -1665,7 +1687,11 @@ lua_util_unlock_file (lua_State *L) do_close = lua_toboolean (L, 2); } +#if HAVE_FLOCK ret = flock (fd, LOCK_UN); +#else + ret = fcntl (fd, F_SETLKW, &fl); +#endif if (do_close) { serrno = errno; |