mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-12 20:36:15 +01:00
add g_strdupv test
2000-12-06 Havoc Pennington <hp@pobox.com> * tests/strfunc-test.c (main): add g_strdupv test * gstrfuncs.c (g_strdupv): Add a function to copy an array of strings
This commit is contained in:
parent
e2fd4e2bd0
commit
e5c1f207c9
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2000-12-06 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* tests/strfunc-test.c (main): add g_strdupv test
|
||||||
|
|
||||||
|
* gstrfuncs.c (g_strdupv): Add a function to copy
|
||||||
|
an array of strings
|
||||||
|
|
||||||
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
Tue Dec 5 12:23:04 2000 Owen Taylor <otaylor@redhat.com>
|
||||||
|
|
||||||
* gmain.[hc]: Major change in API for creating sources
|
* gmain.[hc]: Major change in API for creating sources
|
||||||
|
@ -1325,6 +1325,45 @@ g_strfreev (gchar **str_array)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_strdupv:
|
||||||
|
* @str_array: %NULL-terminated array of strings
|
||||||
|
*
|
||||||
|
* Copies %NULL-terminated array of strings. The copy is a deep copy;
|
||||||
|
* the new array should be freed by first freeing each string, then
|
||||||
|
* the array itself. g_strfreev() does this for you. If called
|
||||||
|
* on a %NULL value, g_strdupv() simply returns %NULL.
|
||||||
|
*
|
||||||
|
* Return value: a new %NULL-terminated array of strings
|
||||||
|
**/
|
||||||
|
gchar**
|
||||||
|
g_strdupv (gchar **str_array)
|
||||||
|
{
|
||||||
|
if (str_array)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
gchar **retval;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (str_array[i])
|
||||||
|
++i;
|
||||||
|
|
||||||
|
retval = g_new (gchar*, i + 1);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (str_array[i])
|
||||||
|
{
|
||||||
|
retval[i] = g_strdup (str_array[i]);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
retval[i] = NULL;
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
g_strjoinv (const gchar *separator,
|
g_strjoinv (const gchar *separator,
|
||||||
gchar **str_array)
|
gchar **str_array)
|
||||||
|
@ -109,6 +109,7 @@ gpointer g_memdup (gconstpointer mem,
|
|||||||
* g_strjoinv() concatenates all of str_array's strings, sliding in an
|
* g_strjoinv() concatenates all of str_array's strings, sliding in an
|
||||||
* optional separator, the returned string is newly allocated.
|
* optional separator, the returned string is newly allocated.
|
||||||
* g_strfreev() frees the array itself and all of its strings.
|
* g_strfreev() frees the array itself and all of its strings.
|
||||||
|
* g_strdupv() copies a NULL-terminated array of strings
|
||||||
*/
|
*/
|
||||||
gchar** g_strsplit (const gchar *string,
|
gchar** g_strsplit (const gchar *string,
|
||||||
const gchar *delimiter,
|
const gchar *delimiter,
|
||||||
@ -116,6 +117,7 @@ gchar** g_strsplit (const gchar *string,
|
|||||||
gchar* g_strjoinv (const gchar *separator,
|
gchar* g_strjoinv (const gchar *separator,
|
||||||
gchar **str_array);
|
gchar **str_array);
|
||||||
void g_strfreev (gchar **str_array);
|
void g_strfreev (gchar **str_array);
|
||||||
|
gchar** g_strdupv (gchar **str_array);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
39
gstrfuncs.c
39
gstrfuncs.c
@ -1325,6 +1325,45 @@ g_strfreev (gchar **str_array)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_strdupv:
|
||||||
|
* @str_array: %NULL-terminated array of strings
|
||||||
|
*
|
||||||
|
* Copies %NULL-terminated array of strings. The copy is a deep copy;
|
||||||
|
* the new array should be freed by first freeing each string, then
|
||||||
|
* the array itself. g_strfreev() does this for you. If called
|
||||||
|
* on a %NULL value, g_strdupv() simply returns %NULL.
|
||||||
|
*
|
||||||
|
* Return value: a new %NULL-terminated array of strings
|
||||||
|
**/
|
||||||
|
gchar**
|
||||||
|
g_strdupv (gchar **str_array)
|
||||||
|
{
|
||||||
|
if (str_array)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
gchar **retval;
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (str_array[i])
|
||||||
|
++i;
|
||||||
|
|
||||||
|
retval = g_new (gchar*, i + 1);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
while (str_array[i])
|
||||||
|
{
|
||||||
|
retval[i] = g_strdup (str_array[i]);
|
||||||
|
++i;
|
||||||
|
}
|
||||||
|
retval[i] = NULL;
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
gchar*
|
gchar*
|
||||||
g_strjoinv (const gchar *separator,
|
g_strjoinv (const gchar *separator,
|
||||||
gchar **str_array)
|
gchar **str_array)
|
||||||
|
@ -109,6 +109,7 @@ gpointer g_memdup (gconstpointer mem,
|
|||||||
* g_strjoinv() concatenates all of str_array's strings, sliding in an
|
* g_strjoinv() concatenates all of str_array's strings, sliding in an
|
||||||
* optional separator, the returned string is newly allocated.
|
* optional separator, the returned string is newly allocated.
|
||||||
* g_strfreev() frees the array itself and all of its strings.
|
* g_strfreev() frees the array itself and all of its strings.
|
||||||
|
* g_strdupv() copies a NULL-terminated array of strings
|
||||||
*/
|
*/
|
||||||
gchar** g_strsplit (const gchar *string,
|
gchar** g_strsplit (const gchar *string,
|
||||||
const gchar *delimiter,
|
const gchar *delimiter,
|
||||||
@ -116,6 +117,7 @@ gchar** g_strsplit (const gchar *string,
|
|||||||
gchar* g_strjoinv (const gchar *separator,
|
gchar* g_strjoinv (const gchar *separator,
|
||||||
gchar **str_array);
|
gchar **str_array);
|
||||||
void g_strfreev (gchar **str_array);
|
void g_strfreev (gchar **str_array);
|
||||||
|
gchar** g_strdupv (gchar **str_array);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@ -60,7 +60,9 @@ main (int argc,
|
|||||||
char *argv[])
|
char *argv[])
|
||||||
{
|
{
|
||||||
gchar *string;
|
gchar *string;
|
||||||
|
gchar *vec[] = { "Foo", "Bar", NULL };
|
||||||
|
gchar **copy;
|
||||||
|
|
||||||
g_assert (g_strcasecmp ("FroboZZ", "frobozz") == 0);
|
g_assert (g_strcasecmp ("FroboZZ", "frobozz") == 0);
|
||||||
g_assert (g_strcasecmp ("frobozz", "frobozz") == 0);
|
g_assert (g_strcasecmp ("frobozz", "frobozz") == 0);
|
||||||
g_assert (g_strcasecmp ("frobozz", "FROBOZZ") == 0);
|
g_assert (g_strcasecmp ("frobozz", "FROBOZZ") == 0);
|
||||||
@ -98,7 +100,7 @@ main (int argc,
|
|||||||
g_assert (string != NULL);
|
g_assert (string != NULL);
|
||||||
g_assert (strcmp(string, "00021 test ") == 0);
|
g_assert (strcmp(string, "00021 test ") == 0);
|
||||||
g_free (string);
|
g_free (string);
|
||||||
|
|
||||||
g_assert (strcmp
|
g_assert (strcmp
|
||||||
(g_strcompress("abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313\\12345z"),
|
(g_strcompress("abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313\\12345z"),
|
||||||
"abc\\\"\b\f\n\r\t\003\177\234\313\12345z") == 0);
|
"abc\\\"\b\f\n\r\t\003\177\234\313\12345z") == 0);
|
||||||
@ -109,6 +111,14 @@ main (int argc,
|
|||||||
"\b\f\001\002\003\004"),
|
"\b\f\001\002\003\004"),
|
||||||
"abc\\\\\\\"\b\f\\n\\r\\t\003\\177\\234\\313") == 0);
|
"abc\\\\\\\"\b\f\\n\\r\\t\003\\177\\234\\313") == 0);
|
||||||
|
|
||||||
|
copy = g_strdupv (vec);
|
||||||
|
g_assert (strcmp (copy[0], "Foo") == 0);
|
||||||
|
g_assert (strcmp (copy[1], "Bar") == 0);
|
||||||
|
g_assert (copy[2] == NULL);
|
||||||
|
g_strfreev (copy);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user