summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/ChangeLog4
-rw-r--r--include/libiberty.h4
-rw-r--r--libiberty/ChangeLog4
-rw-r--r--libiberty/argv.c23
4 files changed, 35 insertions, 0 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index 3cc89960688..a09c287a612 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,7 @@
+2011-09-28 Doug Evans <dje@google.com>
+
+ * libiberty.h (countargv): Declare.
+
2011-09-26 Cary Coutant <ccoutant@google.com>
PR lto/47247
diff --git a/include/libiberty.h b/include/libiberty.h
index 32eb83a049e..cacde800ea3 100644
--- a/include/libiberty.h
+++ b/include/libiberty.h
@@ -91,6 +91,10 @@ extern void expandargv PARAMS ((int *, char ***));
extern int writeargv PARAMS ((char **, FILE *));
+/* Return the number of elements in argv. */
+
+extern int countargv (char**);
+
/* Return the last component of a path name. Note that we can't use a
prototype here because the parameter is declared inconsistently
across different systems, sometimes as "char *" and sometimes as
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 0547f9b08ed..ccee83fb3a2 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2011-09-28 Doug Evans <dje@google.com>
+
+ * argv.c (countargv): New function.
+
2011-09-23 Cary Coutant <ccoutant@google.com>
PR 40831
diff --git a/libiberty/argv.c b/libiberty/argv.c
index 8476c8fda9e..ca53f91493d 100644
--- a/libiberty/argv.c
+++ b/libiberty/argv.c
@@ -492,6 +492,29 @@ expandargv (int *argcp, char ***argvp)
}
}
+/*
+
+@deftypefn Extension int countargv (char **@var{argv})
+
+Return the number of elements in @var{argv}.
+Returns zero if @var{argv} is NULL.
+
+@end deftypefn
+
+*/
+
+int
+countargv (char **argv)
+{
+ int argc;
+
+ if (argv == NULL)
+ return 0;
+ for (argc = 0; argv[argc] != NULL; argc++)
+ continue;
+ return argc;
+}
+
#ifdef MAIN
/* Simple little test driver. */