From: Filip Hajny Date: Thu, 1 Feb 2018 13:28:45 +0000 (+0100) Subject: Provide optional fcntl support for flock-less platforms like earlier SunOS. X-Git-Tag: 1.7.0~225^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F2009%2Fhead;p=rspamd.git Provide optional fcntl support for flock-less platforms like earlier SunOS. --- 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;