X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fargz.c;h=9576a62defefc0d249d990f753a93b0e7ed73bcc;hb=a5c02266250d51d94c137f4fca8bec8e7654ff8c;hp=253c6f50c20792a1319e2e4ed27afacd410758b4;hpb=5a7735c229ffc6b9c3224263ed710d2130cc1a8d;p=gnulib.git diff --git a/lib/argz.c b/lib/argz.c index 253c6f50c..9576a62de 100644 --- a/lib/argz.c +++ b/lib/argz.c @@ -1,23 +1,32 @@ /* argz.c -- argz implementation for non-glibc systems - Copyright (C) 2004, 2006, 2007 Free Software Foundation, Inc. - Originally by Gary V. Vaughan + + 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 GNU Libtool package. Report bugs to bug-libtool@gnu.org. - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. +GNU Libltdl is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +As a special exception to the GNU Lesser General Public License, +if you distribute this file as part of a program or library that +is built using GNU Libtool, you may include this file under the +same distribution terms that you use for the rest of that program. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. +GNU Libltdl is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +You should have received a copy of the GNU Lesser General Public +License along with GNU Libltdl; see the file COPYING.LIB. If not, a +copy can be downloaded from http://www.gnu.org/licenses/lgpl.html, +or obtained by writing to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ #if defined(LTDL) && defined LT_CONFIG_H # include LT_CONFIG_H @@ -67,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) { @@ -214,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; +}