aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoraxtloss <axtlos@getcryst.al>2024-07-15 03:24:14 +0200
committeraxtloss <axtlos@getcryst.al>2024-07-15 03:24:14 +0200
commit0366952bae967a1b69c510f8e633c0567ccab4a9 (patch)
tree7b5f7da55c5c0f96898c8f2a6b9e5feb4317f67a /src
parent6c83f09b7acb879097d57418a0b139300a11262e (diff)
downloadextlib-0366952bae967a1b69c510f8e633c0567ccab4a9.tar.gz
extlib-0366952bae967a1b69c510f8e633c0567ccab4a9.tar.bz2
add function join_str
Diffstat (limited to 'src')
-rw-r--r--src/extlib.h4
-rw-r--r--src/extstring.c37
-rw-r--r--src/memset_s.c1
3 files changed, 30 insertions, 12 deletions
diff --git a/src/extlib.h b/src/extlib.h
index 80c79d0..b12ddbf 100644
--- a/src/extlib.h
+++ b/src/extlib.h
@@ -62,5 +62,7 @@ char *strupr(char *s);
char *trim (char *s, int *rem_front, int *rem_back);
/// Match string s for old and replace it with string replace
- char *replace_str (char *s, char *old, char *replace);
+char *replace_str (char *s, char *old, char *replace);
+/// Join an array of strings into one string
+char *join_str (char **s, size_t len, char delim);
diff --git a/src/extstring.c b/src/extstring.c
index 8b82bb3..fc3cb45 100644
--- a/src/extstring.c
+++ b/src/extstring.c
@@ -11,14 +11,14 @@
char *
strlwr (char *s)
{
- unsigned char *p = (unsigned char *) s;
+ unsigned char *p = (unsigned char *) s;
- while (*p) {
- *p = tolower ((unsigned char)*p);
- p++;
- }
+ while (*p) {
+ *p = tolower ((unsigned char)*p);
+ p++;
+ }
- return s;
+ return s;
}
char *
@@ -27,8 +27,8 @@ strupr (char *s)
unsigned char *p = (unsigned char *) s;
while (*p) {
- *p = toupper ((unsigned char)*p);
- p++;
+ *p = toupper ((unsigned char)*p);
+ p++;
}
return s;
@@ -62,8 +62,8 @@ trim (char *s, int *rem_front, int *rem_back)
char *
replace_str (char *s,
- char *old,
- char *replace)
+ char *old,
+ char *replace)
{
char* result;
int i, cnt = 0;
@@ -93,3 +93,20 @@ replace_str (char *s,
result[i] = '\0';
return result;
};
+
+char *
+join_str (char **s, size_t len, char delim)
+{
+ char *ret = strdup (s[0]);
+ size_t ret_len = sizeof (char) * len + strlen (ret);
+
+ for (int i = 1; i < len; i++) {
+ char *ret_tmp = realloc (ret, ret_len + strlen (s[i]) + 1);
+ ret_len += strlen (s[i]) + 1;
+ if (ret_tmp != NULL)
+ ret = ret_tmp;
+ sprintf (ret, "%s%c%s", ret, delim, s[i]);
+ }
+
+ return ret;
+}
diff --git a/src/memset_s.c b/src/memset_s.c
index 039be20..8b4d342 100644
--- a/src/memset_s.c
+++ b/src/memset_s.c
@@ -9,7 +9,6 @@
errno_t
memset_s(void *s, rsize_t smax, int c, rsize_t n)
{
- puts ("memset");
volatile unsigned char *dest = (unsigned char *) s;
errno_t ret = EINVAL;
rsize_t limit = n < smax ? n : smax;