summaryrefslogtreecommitdiff
path: root/dln.c
diff options
context:
space:
mode:
authorNobuyoshi Nakada <[email protected]>2024-02-22 13:24:42 +0900
committerNobuyoshi Nakada <[email protected]>2024-02-22 15:43:46 +0900
commit97a39ccc2cada2eb5d25ec74169d6a513356ff38 (patch)
tree9a6ee4eac5095552540fb5b89dc73bf2dce76b9b /dln.c
parent9f8f32bf9f3758ba67dd2afe7e07d9eccb68bbc7 (diff)
Split `init_funcname`
Extract `build_funcname` that takes the prefix as an argument, and `concat_funcname` that concats the parts.
Diffstat (limited to 'dln.c')
-rw-r--r--dln.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/dln.c b/dln.c
index eb6d918f0a..fb490ea791 100644
--- a/dln.c
+++ b/dln.c
@@ -122,21 +122,27 @@ init_funcname_len(const char **file)
return (dot ? dot : p) - base;
}
-static const char funcname_prefix[sizeof(FUNCNAME_PREFIX) - 1] = FUNCNAME_PREFIX;
+static inline char *
+concat_funcname(char *buf, const char *prefix, size_t plen, const char *base, size_t flen)
+{
+ if (!buf) {
+ dln_memerror();
+ }
+ memcpy(buf, prefix, plen);
+ memcpy(buf + plen, base, flen);
+ buf[plen + flen] = '\0';
+ return buf;
+}
-#define init_funcname(buf, file) do {\
+#define build_funcname(prefix, buf, file) do {\
const char *base = (file);\
const size_t flen = init_funcname_len(&base);\
- const size_t plen = sizeof(funcname_prefix);\
+ const size_t plen = sizeof(prefix "") - 1;\
char *const tmp = ALLOCA_N(char, plen+flen+1);\
- if (!tmp) {\
- dln_memerror();\
- }\
- memcpy(tmp, funcname_prefix, plen);\
- memcpy(tmp+plen, base, flen);\
- tmp[plen+flen] = '\0';\
- *(buf) = tmp;\
+ *(buf) = concat_funcname(tmp, prefix, plen, base, flen);\
} while (0)
+
+#define init_funcname(buf, file) build_funcname(FUNCNAME_PREFIX, buf, file)
#endif
#ifdef USE_DLN_DLOPEN