Module: kamailio
Branch: master
Commit: c288655278036e5125010ba3b818d2e9ddf5d1a4
URL:
https://github.com/kamailio/kamailio/commit/c288655278036e5125010ba3b818d2e…
Author: Henning Westerholt <hw(a)skalatan.de>
Committer: Henning Westerholt <hw(a)skalatan.de>
Date: 2019-11-23T22:52:13+01:00
core: add two new string handling functions to copy chars and str
- add two new string handling functions to copy chars and str
- shm_str2char_dup: Make a copy from str structure to a char pointer using shm_malloc
- shm_char_dup: Make a copy of a char pointer to a char pointer using shm_malloc
---
Modified: src/core/ut.h
---
Diff:
https://github.com/kamailio/kamailio/commit/c288655278036e5125010ba3b818d2e…
Patch:
https://github.com/kamailio/kamailio/commit/c288655278036e5125010ba3b818d2e…
---
diff --git a/src/core/ut.h b/src/core/ut.h
index 2259aea973..8b64070947 100644
--- a/src/core/ut.h
+++ b/src/core/ut.h
@@ -691,7 +691,7 @@ static inline int str2sint(str* _s, int* _r)
/**
- * \brief Make a copy of a str structure using shm_malloc
+ * \brief Make a copy of a str structure to a str using shm_malloc
* \param dst destination
* \param src source
* \return 0 on success, -1 on failure
@@ -736,6 +736,58 @@ static inline int shm_str_dup(str* dst, const str* src)
return 0;
}
+/**
+ * \brief Make a copy of a char pointer to a char pointer using shm_malloc
+ * \param src source
+ * \return a pointer to the new allocated char on success, 0 on failure
+ */
+static inline char* shm_char_dup(const char *src)
+{
+ char *rval;
+ int len;
+
+ if (!src) {
+ LM_ERR("NULL src or dst\n");
+ return NULL;
+ }
+
+ len = strlen(src) + 1;
+ rval = shm_malloc(len);
+ if (!rval) {
+ SHM_MEM_ERROR;
+ return NULL;
+ }
+
+ memcpy(rval, src, len);
+
+ return rval;
+}
+
+
+/**
+ * \brief Make a copy from str structure to a char pointer using shm_malloc
+ * \param src source
+ * \return a pointer to the new allocated char on success, 0 on failure
+ */
+static inline char* shm_str2char_dup(str *src)
+{
+ char *res;
+
+ if (!src || !src->s) {
+ LM_ERR("NULL src\n");
+ return NULL;
+ }
+
+ if (!(res = (char *) shm_malloc(src->len + 1))) {
+ SHM_MEM_ERROR;
+ return NULL;
+ }
+
+ strncpy(res, src->s, src->len);
+ res[src->len] = 0;
+
+ return res;
+}
/**