Browse Source

merge from gcc

binutils-2_18-branch
DJ Delorie 20 years ago
parent
commit
0c18fee5b3
  1. 4
      include/ChangeLog
  2. 4
      include/libiberty.h
  3. 4
      libiberty/ChangeLog
  4. 56
      libiberty/argv.c

4
include/ChangeLog

@ -1,3 +1,7 @@
2007-05-07 Nathan Froyd <froydnj@codesourcery.com>
* libiberty.h (writeargv): Declare.
2007-04-30 Alan Modra <amodra@bigpond.net.au>
* bfdlink.h (struct bfd_link_info): Add "info" and "minfo".

4
include/libiberty.h

@ -86,6 +86,10 @@ extern char **dupargv (char **) ATTRIBUTE_MALLOC;
extern void expandargv PARAMS ((int *, char ***));
/* Write argv to an @-file, inserting necessary quoting. */
extern int writeargv PARAMS ((char **, FILE *));
/* 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

4
libiberty/ChangeLog

@ -1,3 +1,7 @@
2007-05-07 Nathan Froyd <froydnj@codesourcery.com>
* argv.c (writeargv): New function.
2007-05-05 Geoffrey Keating <geoffk@apple.com>
* cp-demangle.c (d_name): Detect local-source-name.

56
libiberty/argv.c

@ -290,6 +290,62 @@ char **buildargv (const char *input)
/*
@deftypefn Extension int writeargv (const char **@var{argv}, FILE *@{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
if an error occurred while writing to FILE.
@end deftypefn
*/
int
writeargv (char **argv, FILE *f)
{
int status = 0;
if (f == NULL)
return 1;
while (*argv != NULL)
{
int ret;
const char *arg = *argv;
while (*arg != EOS)
{
char c = *arg;
if (ISSPACE(c) || c == '\\' || c == '\'' || c == '"')
if (EOF == fputc ('\\', f))
{
status = 1;
goto done;
}
if (EOF == fputc (c, f))
{
status = 1;
goto done;
}
arg++;
}
if (EOF == fputc ('\n', f))
{
status = 1;
goto done;
}
argv++;
}
done:
return status;
}
/*
@deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp})
The @var{argcp} and @code{argvp} arguments are pointers to the usual

Loading…
Cancel
Save