summaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2009-07-12 15:26:23 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2009-07-12 15:26:23 (GMT)
commitc9465acd65e197e48da8648eb8d1ef602d6772ed (patch)
treefbb5ceaaa683bd1beb0b66d5e5d212b927a9f6b0 /src/common
parent5f2cd35c377989e07b241870f89fdf87d851465d (diff)
Read and saved projects from and into XML files.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@91 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/common')
-rw-r--r--src/common/extstr.c38
-rw-r--r--src/common/extstr.h6
2 files changed, 44 insertions, 0 deletions
diff --git a/src/common/extstr.c b/src/common/extstr.c
index 5b2dfd8..f8e83f2 100644
--- a/src/common/extstr.c
+++ b/src/common/extstr.c
@@ -184,6 +184,44 @@ char *strrpl(char *haystack, const char *needle1, const char *needle2)
/******************************************************************************
* *
+* Paramètres : str = chaîne de caractères à traiter. *
+* delim = séparateur entre les mots. *
+* count = nombre de mots trouvés. [OUT] *
+* *
+* Description : Extrait une liste de mots d'une chaîne. *
+* *
+* Retour : Tableau construit à libérer de la mémoire. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+char **strtoka(const char *str, const char *delim, size_t *count)
+{
+ char **result; /* Tableau à retourner */
+ char *tmp; /* Sauvegarde modifiable */
+ char *word; /* Nouveau mot détecté */
+
+ result = NULL;
+ *count = 0;
+
+ tmp = strdup(str);
+
+ for (word = strtok(tmp, delim); word != NULL; word = strtok(NULL, delim))
+ {
+ result = (char **)realloc(result, ++(*count) * sizeof(char *));
+ result[*count - 1] = strdup(word);
+ }
+
+ free(tmp);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : input = chaîne de caractères à traiter. *
* *
* Description : S'assure qu'une chaîne de caractères tient sur une ligne. *
diff --git a/src/common/extstr.h b/src/common/extstr.h
index 3e27608..80759b5 100644
--- a/src/common/extstr.h
+++ b/src/common/extstr.h
@@ -25,6 +25,9 @@
#define _COMMON_EXTSTR_H
+#include <sys/types.h>
+
+
/* Complète une chaîne de caractères avec une autre. */
char *stradd(char *str1, const char *str2);
@@ -38,6 +41,9 @@ int strrcmp(const char *, const char *);
/* Remplace des éléments d'une chaîne par d'autres. */
char *strrpl(char *, const char *, const char *);
+/* Extrait une liste de mots d'une chaîne. */
+char **strtoka(const char *, const char *, size_t *);
+
/* S'assure qu'une chaîne de caractères tient sur une ligne. */
char *escape_crlf(char *);