aboutsummaryrefslogtreecommitdiffstats
path: root/util-src
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2017-03-02 23:03:02 +0100
committerKim Alvefur <zash@zash.se>2017-03-02 23:03:02 +0100
commit8b9646fee679b47520503b7eaafff9539a3ea3f2 (patch)
tree4b71bdc7622635a101579c04b2d9e0c56991df2c /util-src
parent55ba289bedc1580f49af034b8a849958b698de77 (diff)
parentc0937dcdb42f9ac2fc928aa91f1474607b735590 (diff)
downloadprosody-8b9646fee679b47520503b7eaafff9539a3ea3f2.tar.gz
prosody-8b9646fee679b47520503b7eaafff9539a3ea3f2.zip
Merge 0.10->trunk
Diffstat (limited to 'util-src')
-rw-r--r--util-src/crand.c21
-rw-r--r--util-src/net.c1
-rw-r--r--util-src/pposix.c29
-rw-r--r--util-src/ringbuffer.c4
-rw-r--r--util-src/signal.c2
-rw-r--r--util-src/table.c3
6 files changed, 37 insertions, 23 deletions
diff --git a/util-src/crand.c b/util-src/crand.c
index f3fa00ea..ef9da4d2 100644
--- a/util-src/crand.c
+++ b/util-src/crand.c
@@ -19,6 +19,8 @@
*
*/
+#define _DEFAULT_SOURCE
+
#include "lualib.h"
#include "lauxlib.h"
@@ -26,21 +28,22 @@
#include <errno.h>
#if defined(WITH_GETRANDOM)
+
+#if ! __GLIBC_PREREQ(2,25)
#include <unistd.h>
#include <sys/syscall.h>
-#include <linux/random.h>
#ifndef SYS_getrandom
#error getrandom() requires Linux 3.17 or later
#endif
-/*
- * This acts like a read from /dev/urandom with the exception that it
- * *does* block if the entropy pool is not yet initialized.
- */
-int getrandom(void *buf, size_t len, int flags) {
- return syscall(SYS_getrandom, buf, len, flags);
+/* This wasn't present before glibc 2.25 */
+int getrandom(void *buf, size_t buflen, unsigned int flags) {
+ return syscall(SYS_getrandom, buf, buflen, flags);
}
+#else
+#include <sys/random.h>
+#endif
#elif defined(WITH_ARC4RANDOM)
#include <stdlib.h>
@@ -56,6 +59,10 @@ int Lrandom(lua_State *L) {
void *buf = lua_newuserdata(L, len);
#if defined(WITH_GETRANDOM)
+ /*
+ * This acts like a read from /dev/urandom with the exception that it
+ * *does* block if the entropy pool is not yet initialized.
+ */
ret = getrandom(buf, len, 0);
if(ret < 0) {
diff --git a/util-src/net.c b/util-src/net.c
index 32f69025..35f2c362 100644
--- a/util-src/net.c
+++ b/util-src/net.c
@@ -9,6 +9,7 @@
--
*/
+#define _GNU_SOURCE
#include <stddef.h>
#include <string.h>
#include <errno.h>
diff --git a/util-src/pposix.c b/util-src/pposix.c
index 10edbd71..f9c07e54 100644
--- a/util-src/pposix.c
+++ b/util-src/pposix.c
@@ -15,6 +15,14 @@
#define MODULE_VERSION "0.3.6"
+
+#if defined(__linux__)
+#define _GNU_SOURCE
+#else
+#define _DEFAULT_SOURCE
+#endif
+#define _POSIX_C_SOURCE 200809L
+
#include <stdlib.h>
#include <math.h>
#include <unistd.h>
@@ -40,11 +48,11 @@
#endif
#include <fcntl.h>
-#if defined(__linux__) && defined(_GNU_SOURCE)
+#if defined(__linux__)
#include <linux/falloc.h>
#endif
-#if (defined(_SVID_SOURCE) && !defined(WITHOUT_MALLINFO))
+#if !defined(WITHOUT_MALLINFO)
#include <malloc.h>
#define WITH_MALLINFO
#endif
@@ -663,7 +671,7 @@ int lc_uname(lua_State *L) {
lua_setfield(L, -2, "version");
lua_pushstring(L, uname_info.machine);
lua_setfield(L, -2, "machine");
-#ifdef _GNU_SOURCE
+#ifdef __USE_GNU
lua_pushstring(L, uname_info.domainname);
lua_setfield(L, -2, "domainname");
#endif
@@ -726,7 +734,6 @@ int lc_meminfo(lua_State *L) {
* https://github.com/rrthomas/luaposix/blob/master/lposix.c#L631
* */
-#if _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L || defined(_GNU_SOURCE)
int lc_fallocate(lua_State *L) {
int ret;
off_t offset, len;
@@ -739,7 +746,7 @@ int lc_fallocate(lua_State *L) {
offset = luaL_checkinteger(L, 2);
len = luaL_checkinteger(L, 3);
-#if defined(__linux__) && defined(_GNU_SOURCE)
+#if defined(__linux__)
errno = 0;
ret = fallocate(fileno(f), FALLOC_FL_KEEP_SIZE, offset, len);
@@ -759,10 +766,6 @@ int lc_fallocate(lua_State *L) {
return 2;
}
-#else
-#warning Only using posix_fallocate() fallback.
-#warning Linux fallocate() is strongly recommended if available: recompile with -D_GNU_SOURCE
-#warning Note that posix_fallocate() will still be used on filesystems that dont support fallocate()
#endif
ret = posix_fallocate(fileno(f), offset, len);
@@ -784,7 +787,6 @@ int lc_fallocate(lua_State *L) {
return 2;
}
}
-#endif
/* Register functions */
@@ -825,9 +827,7 @@ int luaopen_util_pposix(lua_State *L) {
{ "meminfo", lc_meminfo },
#endif
-#if _XOPEN_SOURCE >= 600 || _POSIX_C_SOURCE >= 200112L || defined(_GNU_SOURCE)
{ "fallocate", lc_fallocate },
-#endif
{ NULL, NULL }
};
@@ -835,6 +835,11 @@ int luaopen_util_pposix(lua_State *L) {
lua_newtable(L);
luaL_setfuncs(L, exports, 0);
+#ifdef ENOENT
+ lua_pushinteger(L, ENOENT);
+ lua_setfield(L, -2, "ENOENT");
+#endif
+
lua_pushliteral(L, "pposix");
lua_setfield(L, -2, "_NAME");
diff --git a/util-src/ringbuffer.c b/util-src/ringbuffer.c
index 831b1fe2..2a13903c 100644
--- a/util-src/ringbuffer.c
+++ b/util-src/ringbuffer.c
@@ -31,7 +31,7 @@ void modpos(ringbuffer *b) {
b->wpos = b->wpos % b->alen;
}
-int find(ringbuffer *b, const char *s, int l) {
+int find(ringbuffer *b, const char *s, size_t l) {
size_t i, j;
int m;
@@ -74,7 +74,7 @@ int rb_find(lua_State *L) {
int rb_read(lua_State *L) {
ringbuffer *b = luaL_checkudata(L, 1, "ringbuffer_mt");
- int r = luaL_checkinteger(L, 2);
+ size_t r = luaL_checkinteger(L, 2);
int peek = lua_toboolean(L, 3);
if(r > b->blen) {
diff --git a/util-src/signal.c b/util-src/signal.c
index a083df54..2cf68800 100644
--- a/util-src/signal.c
+++ b/util-src/signal.c
@@ -26,6 +26,8 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
+#define _POSIX_C_SOURCE 200809L
+
#include <signal.h>
#include <stdlib.h>
diff --git a/util-src/table.c b/util-src/table.c
index 0e547858..f1cd9e12 100644
--- a/util-src/table.c
+++ b/util-src/table.c
@@ -7,12 +7,11 @@ static int Lcreate_table(lua_State *L) {
}
static int Lpack(lua_State *L) {
- int arg;
unsigned int n_args = lua_gettop(L);
lua_createtable(L, n_args, 1);
lua_insert(L, 1);
- for(arg = n_args; arg >= 1; arg--) {
+ for(int arg = n_args; arg >= 1; arg--) {
lua_rawseti(L, 1, arg);
}