libiberty: {count,dup,write}argv: constify argv input slightly

Would be more useful if we could use "const char * const *", but there's
a long standing bug where gcc warns about incompatible pointers when you
try to pass in "char **".  We can at least constify the array itself as
gcc will not warn in that case.

From-SVN: r232089
This commit is contained in:
Mike Frysinger 2016-01-05 20:23:30 +00:00 committed by Mike Frysinger
parent acf93f1edc
commit 66f49f07d8
5 changed files with 23 additions and 12 deletions

View File

@ -1,3 +1,8 @@
2016-01-05 Mike Frysinger <vapier@gentoo.org>
* libiberty.h (dupargv): Change arg to char * const *.
(writeargv, countargv): Likewise.
2015-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2015-11-25 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* vtv-change-permission.h (VTV_PAGE_SIZE) [__sun__ && __svr4__ && * vtv-change-permission.h (VTV_PAGE_SIZE) [__sun__ && __svr4__ &&

View File

@ -80,7 +80,7 @@ extern void freeargv (char **);
/* Duplicate an argument vector. Allocates memory using malloc. Use /* Duplicate an argument vector. Allocates memory using malloc. Use
freeargv to free the vector. */ freeargv to free the vector. */
extern char **dupargv (char **) ATTRIBUTE_MALLOC; extern char **dupargv (char * const *) ATTRIBUTE_MALLOC;
/* Expand "@file" arguments in argv. */ /* Expand "@file" arguments in argv. */
@ -88,11 +88,11 @@ extern void expandargv (int *, char ***);
/* Write argv to an @-file, inserting necessary quoting. */ /* Write argv to an @-file, inserting necessary quoting. */
extern int writeargv (char **, FILE *); extern int writeargv (char * const *, FILE *);
/* Return the number of elements in argv. */ /* Return the number of elements in argv. */
extern int countargv (char**); extern int countargv (char * const *);
/* Return the last component of a path name. Note that we can't use a /* Return the last component of a path name. Note that we can't use a
prototype here because the parameter is declared inconsistently prototype here because the parameter is declared inconsistently

View File

@ -1,3 +1,9 @@
2016-01-05 Mike Frysinger <vapier@gentoo.org>
* argv.c (dupargv): Change arg to char * const *. Update comment.
(writeargv, countargv): Likewise.
* functions.texi (dupargv, writeargv, countargv): Likewise.
2016-01-05 Mike Frysinger <vapier@gentoo.org> 2016-01-05 Mike Frysinger <vapier@gentoo.org>
* argv.c (dupargv): Replace strlen/xmalloc/strcpy with xstrdup. * argv.c (dupargv): Replace strlen/xmalloc/strcpy with xstrdup.

View File

@ -49,7 +49,7 @@ Boston, MA 02110-1301, USA. */
/* /*
@deftypefn Extension char** dupargv (char **@var{vector}) @deftypefn Extension char** dupargv (char * const *@var{vector})
Duplicate an argument vector. Simply scans through @var{vector}, Duplicate an argument vector. Simply scans through @var{vector},
duplicating each argument until the terminating @code{NULL} is found. duplicating each argument until the terminating @code{NULL} is found.
@ -62,7 +62,7 @@ argument vector.
*/ */
char ** char **
dupargv (char **argv) dupargv (char * const *argv)
{ {
int argc; int argc;
char **copy; char **copy;
@ -279,7 +279,7 @@ char **buildargv (const char *input)
/* /*
@deftypefn Extension int writeargv (const char **@var{argv}, FILE *@var{file}) @deftypefn Extension int writeargv (char * const *@var{argv}, FILE *@var{file})
Write each member of ARGV, handling all necessary quoting, to the file Write each member of ARGV, handling all necessary quoting, to the file
named by FILE, separated by whitespace. Return 0 on success, non-zero named by FILE, separated by whitespace. Return 0 on success, non-zero
@ -290,7 +290,7 @@ if an error occurred while writing to FILE.
*/ */
int int
writeargv (char **argv, FILE *f) writeargv (char * const *argv, FILE *f)
{ {
int status = 0; int status = 0;
@ -463,7 +463,7 @@ expandargv (int *argcp, char ***argvp)
/* /*
@deftypefn Extension int countargv (char **@var{argv}) @deftypefn Extension int countargv (char * const *@var{argv})
Return the number of elements in @var{argv}. Return the number of elements in @var{argv}.
Returns zero if @var{argv} is NULL. Returns zero if @var{argv} is NULL.
@ -473,7 +473,7 @@ Returns zero if @var{argv} is NULL.
*/ */
int int
countargv (char **argv) countargv (char * const *argv)
{ {
int argc; int argc;

View File

@ -176,7 +176,7 @@ Concatenate zero or more of strings and return the result in freshly
@end deftypefn @end deftypefn
@c argv.c:470 @c argv.c:470
@deftypefn Extension int countargv (char **@var{argv}) @deftypefn Extension int countargv (char * const *@var{argv})
Return the number of elements in @var{argv}. Return the number of elements in @var{argv}.
Returns zero if @var{argv} is NULL. Returns zero if @var{argv} is NULL.
@ -213,7 +213,7 @@ make it easy to compose the values of multiple blocks.
@end deftypefn @end deftypefn
@c argv.c:52 @c argv.c:52
@deftypefn Extension char** dupargv (char **@var{vector}) @deftypefn Extension char** dupargv (char * const *@var{vector})
Duplicate an argument vector. Simply scans through @var{vector}, Duplicate an argument vector. Simply scans through @var{vector},
duplicating each argument until the terminating @code{NULL} is found. duplicating each argument until the terminating @code{NULL} is found.
@ -1915,7 +1915,7 @@ does the return value. The third argument is unused in @libib{}.
@end deftypefn @end deftypefn
@c argv.c:286 @c argv.c:286
@deftypefn Extension int writeargv (const char **@var{argv}, FILE *@var{file}) @deftypefn Extension int writeargv (char * const *@var{argv}, FILE *@var{file})
Write each member of ARGV, handling all necessary quoting, to the file Write each member of ARGV, handling all necessary quoting, to the file
named by FILE, separated by whitespace. Return 0 on success, non-zero named by FILE, separated by whitespace. Return 0 on success, non-zero