summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2022-08-18 22:01:55 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2022-08-18 22:01:55 (GMT)
commit536baed85dd1d7fd0f99dfe0aa549f11a96afd85 (patch)
tree91ec7d3eba57073ead30728a10135dd773e82869
parentd21ff9aca314bdab7156b5f990900735d4dfffd6 (diff)
Create a function extending strings thanks to a format and its arguments.
-rw-r--r--src/common/extstr.c43
-rw-r--r--src/common/extstr.h3
2 files changed, 46 insertions, 0 deletions
diff --git a/src/common/extstr.c b/src/common/extstr.c
index 9142bd9..3041be0 100644
--- a/src/common/extstr.c
+++ b/src/common/extstr.c
@@ -26,7 +26,9 @@
#include <malloc.h>
#include <regex.h>
+#include <stdio.h>
#include <string.h>
+#include <stdarg.h>
@@ -96,6 +98,47 @@ char *strnadd(char *str1, const char *str2, size_t n)
/******************************************************************************
* *
* Paramètres : str1 = chaîne de caractères à compléter. *
+* fmt = description de la forme de la chaîne complémentaire. *
+* ... = éléments associés au format à construire. *
+* *
+* Description : Complète une chaîne de caractères avec une chaîne à formater.*
+* *
+* Retour : Chaîne de caractères complétée, à libérer de la mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+char *straddfmt(char *str1, const char *fmt, ...)
+{
+ char *result; /* Chaîne à renvoyer */
+ va_list ap; /* Liste des arguments */
+ char *tmp; /* Conservation temporaire */
+ int ret; /* Bilan intermédiaire */
+
+ va_start(ap, fmt);
+
+ ret = vasprintf(&tmp, fmt, ap);
+
+ if (ret != -1)
+ {
+ result = stradd(str1, tmp);
+ free(tmp);
+ }
+
+ else
+ result = str1;
+
+ va_end(ap);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : str1 = chaîne de caractères à compléter. *
* str2 = chaîne de caractères à ajouter. *
* *
* Description : Fait précéder une chaîne de caractères par une autre. *
diff --git a/src/common/extstr.h b/src/common/extstr.h
index 1c39603..c4e671e 100644
--- a/src/common/extstr.h
+++ b/src/common/extstr.h
@@ -37,6 +37,9 @@ char *stradd(char *, const char *);
/* Complète une chaîne de caractères avec une autre. */
char *strnadd(char *, const char *, size_t);
+/* Complète une chaîne de caractères avec une chaîne à formater. */
+char *straddfmt(char *, const char *, ...);
+
/* Fait précéder une chaîne de caractères par une autre. */
char *strprep(char *, const char *);