]> git.ipfire.org Git - thirdparty/libtool.git/commitdiff
* libltdl/argz.c (argz_add, argz_count): New functions.
authorKarl Berry <karl@freefriends.org>
Tue, 26 Feb 2008 22:18:03 +0000 (22:18 +0000)
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>
Tue, 26 Feb 2008 22:18:03 +0000 (22:18 +0000)
* libltdl/argz_.h: Declare them.
Report by Juan Manuel Guerrero <juan.guerrero@gmx.de>.

ChangeLog
libltdl/argz.c
libltdl/argz_.h

index a0f499395436570e29fb8c59850a2a1ff890b68d..1e54652c834f8c06a28523bfbd6bb65fcd6c712f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-26  Karl Berry  <karl@freefriends.org>
+
+       * libltdl/argz.c (argz_add, argz_count): New functions.
+       * libltdl/argz_.h: Declare them.
+       Report by Juan Manuel Guerrero <juan.guerrero@gmx.de>.
+
 2008-02-20  Peter O'Gorman  <peter@pogma.com>
 
        * libltdl/m4/libtool.m4 (_LT_LANG_GCJ_CONFIG): Do not call the
index 9c18319748dbcd6c82f2dbbf4907c53f20a9d5d0..9576a62defefc0d249d990f753a93b0e7ed73bcc 100644 (file)
@@ -1,6 +1,6 @@
 /* argz.c -- argz implementation for non-glibc systems
 
-   Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006, 2007, 2008 Free Software Foundation, Inc.
    Written by Gary V. Vaughan, 2004
 
    NOTE: The canonical source of this file is maintained with the
@@ -76,6 +76,14 @@ argz_append (char **pargz, size_t *pargz_len, const char *buf, size_t buf_len)
 }
 
 
+/* Add a string to the argz vector.  */
+error_t
+argz_add (char **pargz, size_t *pargz_len, const char *str)
+{
+  return argz_append (pargz, pargz_len, str, strlen (str) + 1);
+}
+
+
 error_t
 argz_create_sep (const char *str, int delim, char **pargz, size_t *pargz_len)
 {
@@ -223,3 +231,24 @@ argz_stringify (char *argz, size_t argz_len, int sep)
        }
     }
 }
+
+
+/* Count number of elements (null bytes) in argz vector.  */
+
+size_t
+argz_count (const char *argz, size_t argz_len)
+{
+  size_t count = 0;
+
+  assert ((argz && argz_len) || (!argz && !argz_len));
+  
+  while (argz_len > 0)
+    {
+      size_t part_len = strlen (argz);
+      argz += part_len + 1;
+      argz_len -= part_len + 1;
+      count++;
+    }
+  
+  return count;
+}
index 83acf884d76858e70a2b283464c79b78a7837b8b..40d51767aa3987ad7ed758a49806385e1591e0bf 100644 (file)
@@ -1,6 +1,6 @@
 /* lt__argz.h -- internal argz interface for non-glibc systems
 
-   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
    Written by Gary V. Vaughan, 2004
 
    NOTE: The canonical source of this file is maintained with the
@@ -49,6 +49,8 @@ extern "C" {
 
 LT_SCOPE error_t argz_append   (char **pargz, size_t *pargz_len,
                                 const char *buf, size_t buf_len);
+LT_SCOPE error_t argz_add       (char **pargz, size_t *pargz_len,
+                                 const char *str);
 LT_SCOPE error_t argz_create_sep(const char *str, int delim,
                                 char **pargz, size_t *pargz_len);
 LT_SCOPE error_t argz_insert   (char **pargz, size_t *pargz_len,
@@ -56,6 +58,7 @@ LT_SCOPE error_t argz_insert  (char **pargz, size_t *pargz_len,
 LT_SCOPE char *         argz_next      (char *argz, size_t argz_len,
                                 const char *entry);
 LT_SCOPE void   argz_stringify (char *argz, size_t argz_len, int sep);
+LT_SCOPE size_t  argz_count     (const char *argz, size_t argz_len);
 
 #if defined(__cplusplus)
 }