From: Tomas Krizek Date: Mon, 22 Nov 2021 16:52:19 +0000 (+0100) Subject: kluautil: kr_string2c function X-Git-Tag: v5.5.0~26^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66ba783b4a443bee88d6cb6996f23a67a86ecf02;p=thirdparty%2Fknot-resolver.git kluautil: kr_string2c function --- diff --git a/daemon/lua/kluautil.lua b/daemon/lua/kluautil.lua index e73e952cf..d8569b9a2 100644 --- a/daemon/lua/kluautil.lua +++ b/daemon/lua/kluautil.lua @@ -1,5 +1,6 @@ -- SPDX-License-Identifier: GPL-3.0-or-later +local ffi = require('ffi') local kluautil = {} -- Get length of table @@ -79,6 +80,15 @@ function kluautil.kr_https_fetch(url, out_file, ca_file) return true end +-- Copy a lua string to C (to knot_mm_t or nil=malloc, zero-terminated). +function kluautil.kr_string2c(str, mempool) + if str == nil then return nil end + local result = ffi.C.mm_realloc(mempool, nil, #str + 1, 0) + if result == nil then panic("not enough memory") end + ffi.copy(result, str) + return ffi.cast('const char *', result) +end + kluautil.list_dir = kluautil_list_dir return kluautil