merge from gcc
This commit is contained in:
parent
f453a23a51
commit
0c18fee5b3
4 changed files with 68 additions and 0 deletions
|
@ -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>
|
2007-04-30 Alan Modra <amodra@bigpond.net.au>
|
||||||
|
|
||||||
* bfdlink.h (struct bfd_link_info): Add "info" and "minfo".
|
* bfdlink.h (struct bfd_link_info): Add "info" and "minfo".
|
||||||
|
|
|
@ -86,6 +86,10 @@ extern char **dupargv (char **) ATTRIBUTE_MALLOC;
|
||||||
|
|
||||||
extern void expandargv PARAMS ((int *, char ***));
|
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
|
/* 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
|
||||||
across different systems, sometimes as "char *" and sometimes as
|
across different systems, sometimes as "char *" and sometimes as
|
||||||
|
|
|
@ -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>
|
2007-05-05 Geoffrey Keating <geoffk@apple.com>
|
||||||
|
|
||||||
* cp-demangle.c (d_name): Detect local-source-name.
|
* cp-demangle.c (d_name): Detect local-source-name.
|
||||||
|
|
|
@ -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})
|
@deftypefn Extension void expandargv (int *@var{argcp}, char ***@var{argvp})
|
||||||
|
|
||||||
The @var{argcp} and @code{argvp} arguments are pointers to the usual
|
The @var{argcp} and @code{argvp} arguments are pointers to the usual
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue