aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2018-02-01 19:13:16 +0000
committerGitHub <noreply@github.com>2018-02-01 19:13:16 +0000
commit2dc69e84613617444e45268ff5d9c12bc43ca716 (patch)
tree98e09339ffdd142bc216cf8e8ff0927dfa02b31e /src
parent1fc02ffef13e2848ecfcad48201517cf6aa564cc (diff)
parentf56e8905712eaf17a9dde9f61436eaec21c8a108 (diff)
downloadrspamd-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.c26
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;