summaryrefslogtreecommitdiff
path: root/src/common/extstr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/extstr.c')
-rw-r--r--src/common/extstr.c41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/common/extstr.c b/src/common/extstr.c
index 8249515..309f487 100644
--- a/src/common/extstr.c
+++ b/src/common/extstr.c
@@ -47,9 +47,46 @@ char *stradd(char *str1, const char *str2)
{
char *result; /* Chaîne à renvoyer */
- result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
+ if (str1 == NULL)
+ result = strdup(str2);
+
+ else
+ {
+ result = (char *)realloc(str1, (strlen(str1) + strlen(str2) + 1) * sizeof(char));
+ strcat(result, str2);
+ }
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : str1 = chaîne de caractères à compléter. *
+* str2 = chaîne de caractères à ajouter. *
+* n = taille de la seconde chaîne. *
+* *
+* Description : Complète une chaîne de caractères avec une autre. *
+* *
+* Retour : Chaîne de caractères complétée, à libérer de la mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+char *strnadd(char *str1, const char *str2, size_t n)
+{
+ char *result; /* Chaîne à renvoyer */
- strcat(result, str2);
+ if (str1 == NULL)
+ result = strndup(str2, n);
+
+ else
+ {
+ result = (char *)realloc(str1, (strlen(str1) + n + 1) * sizeof(char));
+ strncat(result, str2, n);
+ }
return result;