X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/781ddad170710424ea23579b1eeaa4314253ec64..1cbf45bd6ba6b0935c15e5b783ca6ec65a1e49cc:/src/xbt/xbt_str.c diff --git a/src/xbt/xbt_str.c b/src/xbt/xbt_str.c index e43bdc949d..b0752146d0 100644 --- a/src/xbt/xbt_str.c +++ b/src/xbt/xbt_str.c @@ -9,11 +9,11 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "portable.h" #include "xbt/misc.h" #include "xbt/sysdep.h" #include "xbt/str.h" /* headers of these functions */ #include "xbt/strbuff.h" -#include "portable.h" #include "xbt/matrix.h" /* for the diff */ /** @brief Strip whitespace (or other characters) from the end of a string. @@ -229,7 +229,7 @@ char *xbt_str_varsubst(char *str, xbt_dict_t patterns) xbt_dynar_t xbt_str_split(const char *s, const char *sep) { - xbt_dynar_t res = xbt_dynar_new(sizeof(char *), xbt_free_ref); + xbt_dynar_t res = xbt_dynar_new(sizeof(char *), &xbt_free_ref); const char *p, *q; int done; const char *sep_dflt = " \t\n\r\x0B"; @@ -278,7 +278,7 @@ xbt_dynar_t xbt_str_split(const char *s, const char *sep) */ xbt_dynar_t xbt_str_split_str(const char *s, const char *sep) { - xbt_dynar_t res = xbt_dynar_new(sizeof(char *), xbt_free_ref); + xbt_dynar_t res = xbt_dynar_new(sizeof(char *), &xbt_free_ref); int done; const char *p, *q; @@ -330,7 +330,7 @@ xbt_dynar_t xbt_str_split_str(const char *s, const char *sep) xbt_dynar_t xbt_str_split_quoted(const char *s) { - xbt_dynar_t res = xbt_dynar_new(sizeof(char *), xbt_free_ref); + xbt_dynar_t res = xbt_dynar_new(sizeof(char *), &xbt_free_ref); char *str_to_free; /* we have to copy the string before, to handle backslashes */ char *beg, *end; /* pointers around the parsed chunk */ int in_simple_quote = 0, in_double_quote = 0; @@ -417,6 +417,7 @@ xbt_dynar_t xbt_str_split_quoted(const char *s) } } free(str_to_free); + xbt_dynar_shrink(res,0); return res; } @@ -434,8 +435,7 @@ xbt_dynar_t xbt_str_split_quoted(const char *s) xbt_dynar_free(&d); XBT_TEST_SUITE("xbt_str", "String Handling"); -XBT_TEST_UNIT("xbt_str_split_quoted", test_split_quoted, - "test the function xbt_str_split_quoted") +XBT_TEST_UNIT("xbt_str_split_quoted", test_split_quoted,"test the function xbt_str_split_quoted") { xbt_dynar_t d; char *s; @@ -467,8 +467,7 @@ XBT_TEST_UNIT("xbt_str_split_quoted", test_split_quoted, free(s); \ xbt_dynar_free(&d); -XBT_TEST_UNIT("xbt_str_split_str", test_split_str, - "test the function xbt_str_split_str") +XBT_TEST_UNIT("xbt_str_split_str", test_split_str,"test the function xbt_str_split_str") { xbt_dynar_t d; char *s; @@ -510,10 +509,7 @@ char *xbt_str_join(xbt_dynar_t dyn, const char *sep) return res; } -#if !defined(HAVE_GETLINE) || defined(DOXYGEN) -/* prototype here, just in case */ -long getline(char **buf, size_t * n, FILE * stream); - +#if defined(SIMGRID_NEED_GETLINE) || defined(DOXYGEN) /** @brief Get a single line from the stream (reimplementation of the GNU getline) * * This is a redefinition of the GNU getline function, used on platforms where it does not exists. @@ -674,7 +670,7 @@ char *xbt_str_diff(char *a, char *b) xbt_dynar_t db = xbt_str_split(b, "\n"); xbt_matrix_t C = diff_build_LCS(da, db); - xbt_dynar_t diff = xbt_dynar_new(sizeof(char *), xbt_free_ref); + xbt_dynar_t diff = xbt_dynar_new(sizeof(char *), &xbt_free_ref); char *res = NULL; diff_build_diff(diff, C, da, db, xbt_dynar_length(da) - 1, @@ -711,8 +707,8 @@ char* xbt_str_from_file(FILE *file) { memset(bread,0,1024); while (!feof(file)) { - fread(bread, 1, 1023, file); - bread[1023] = '\0'; + int got = fread(bread, 1, 1023, file); + bread[got] = '\0'; xbt_strbuff_append(buff,bread); }