aboutsummaryrefslogtreecommitdiffstats
path: root/jnlib/strlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'jnlib/strlist.c')
-rw-r--r--jnlib/strlist.c65
1 files changed, 43 insertions, 22 deletions
diff --git a/jnlib/strlist.c b/jnlib/strlist.c
index 063c89c7e..49b510666 100644
--- a/jnlib/strlist.c
+++ b/jnlib/strlist.c
@@ -29,9 +29,9 @@
void
-free_strlist( STRLIST sl )
+free_strlist( strlist_t sl )
{
- STRLIST sl2;
+ strlist_t sl2;
for(; sl; sl = sl2 ) {
sl2 = sl->next;
@@ -40,10 +40,10 @@ free_strlist( STRLIST sl )
}
-STRLIST
-add_to_strlist( STRLIST *list, const char *string )
+strlist_t
+add_to_strlist( strlist_t *list, const char *string )
{
- STRLIST sl;
+ strlist_t sl;
sl = jnlib_xmalloc( sizeof *sl + strlen(string));
sl->flags = 0;
@@ -58,10 +58,10 @@ add_to_strlist( STRLIST *list, const char *string )
* same as add_to_strlist() but if is_utf8 is *not* set a conversion
* to UTF8 is done
*/
-STRLIST
-add_to_strlist2( STRLIST *list, const char *string, int is_utf8 )
+strlist_t
+add_to_strlist2( strlist_t *list, const char *string, int is_utf8 )
{
- STRLIST sl;
+ strlist_t sl;
if( is_utf8 )
sl = add_to_strlist( list, string );
@@ -74,10 +74,10 @@ add_to_strlist2( STRLIST *list, const char *string, int is_utf8 )
}
#endif
-STRLIST
-append_to_strlist( STRLIST *list, const char *string )
+strlist_t
+append_to_strlist( strlist_t *list, const char *string )
{
- STRLIST r, sl;
+ strlist_t r, sl;
sl = jnlib_xmalloc( sizeof *sl + strlen(string));
sl->flags = 0;
@@ -94,10 +94,10 @@ append_to_strlist( STRLIST *list, const char *string )
}
#if 0
-STRLIST
-append_to_strlist2( STRLIST *list, const char *string, int is_utf8 )
+strlist_t
+append_to_strlist2( strlist_t *list, const char *string, int is_utf8 )
{
- STRLIST sl;
+ strlist_t sl;
if( is_utf8 )
sl = append_to_strlist( list, string );
@@ -110,18 +110,40 @@ append_to_strlist2( STRLIST *list, const char *string, int is_utf8 )
}
#endif
-STRLIST
-strlist_prev( STRLIST head, STRLIST node )
+
+/* Return a copy of LIST. */
+strlist_t
+strlist_copy (strlist_t list)
+{
+ strlist_t newlist = NULL, sl, *last;
+
+ last = &newlist;
+ for (; list; list = list->next)
+ {
+ sl = jnlib_xmalloc (sizeof *sl + strlen (list->d));
+ sl->flags = list->flags;
+ strcpy(sl->d, list->d);
+ sl->next = NULL;
+ *last = sl;
+ last = &sl;
+ }
+ return newlist;
+}
+
+
+
+strlist_t
+strlist_prev( strlist_t head, strlist_t node )
{
- STRLIST n;
+ strlist_t n;
for(n=NULL; head && head != node; head = head->next )
n = head;
return n;
}
-STRLIST
-strlist_last( STRLIST node )
+strlist_t
+strlist_last( strlist_t node )
{
if( node )
for( ; node->next ; node = node->next )
@@ -131,10 +153,10 @@ strlist_last( STRLIST node )
char *
-strlist_pop (STRLIST *list)
+strlist_pop (strlist_t *list)
{
char *str=NULL;
- STRLIST sl=*list;
+ strlist_t sl=*list;
if(sl)
{
@@ -148,4 +170,3 @@ strlist_pop (STRLIST *list)
return str;
}
-