X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=include%2Flibiberty.h;h=4e697343fb6f9095f41e9d4da1d343b4c6342c26;hb=36fc76aebb7315571094d66b35e13d69d512fbe2;hp=6fb5e19ccd511fb5adefe1f1bd6b853311a92446;hpb=67f3cb056f76df8ae8afc2db99589273f4c468be;p=deliverable%2Fbinutils-gdb.git diff --git a/include/libiberty.h b/include/libiberty.h index 6fb5e19ccd..4e697343fb 100644 --- a/include/libiberty.h +++ b/include/libiberty.h @@ -82,6 +82,13 @@ extern void freeargv (char **); extern char **dupargv (char **) ATTRIBUTE_MALLOC; +/* Expand "@file" arguments in argv. */ + +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 @@ -194,6 +201,13 @@ extern long get_run_time (void); extern char *make_relative_prefix (const char *, const char *, const char *) ATTRIBUTE_MALLOC; +/* Generate a relocated path to some installation directory without + attempting to follow any soft links. Allocates + return value using malloc. */ + +extern char *make_relative_prefix_ignore_links (const char *, const char *, + const char *) ATTRIBUTE_MALLOC; + /* Choose a temporary directory to use for scratch files. */ extern char *choose_temp_base (void) ATTRIBUTE_MALLOC; @@ -390,6 +404,19 @@ extern struct pex_obj *pex_init (int flags, const char *pname, PEX_BINARY_INPUT. */ #define PEX_BINARY_OUTPUT 0x20 +/* Capture stderr to a pipe. The output can be read by + calling pex_read_err and reading from the returned + FILE object. This flag may be specified only for + the last program in a pipeline. + + This flag is supported only on Unix and Windows. */ +#define PEX_STDERR_TO_PIPE 0x40 + +/* Capture stderr in binary mode. This flag is ignored + on Unix. */ +#define PEX_BINARY_ERROR 0x80 + + /* Execute one program. Returns NULL on success. On error returns an error string (typically just the name of a system call); the error string is statically allocated. @@ -445,6 +472,37 @@ extern const char *pex_run (struct pex_obj *obj, int flags, const char *outname, const char *errname, int *err); +/* As for pex_run (), but takes an extra parameter to enable the + environment for the child process to be specified. + + ENV The environment for the child process, specified as + an array of character pointers. Each element of the + array should point to a string of the form VAR=VALUE, + with the exception of the last element which must be + a null pointer. +*/ + +extern const char *pex_run_in_environment (struct pex_obj *obj, int flags, + const char *executable, + char * const *argv, + char * const *env, + const char *outname, + const char *errname, int *err); + +/* Return a stream for a temporary file to pass to the first program + in the pipeline as input. The file name is chosen as for pex_run. + pex_run closes the file automatically; don't close it yourself. */ + +extern FILE *pex_input_file (struct pex_obj *obj, int flags, + const char *in_name); + +/* Return a stream for a pipe connected to the standard input of the + first program in the pipeline. You must have passed + `PEX_USE_PIPES' to `pex_init'. Close the returned stream + yourself. */ + +extern FILE *pex_input_pipe (struct pex_obj *obj, int binary); + /* Read the standard output of the last program to be executed. pex_run can not be called after this. BINARY should be non-zero if the file should be opened in binary mode; this is ignored on Unix. @@ -453,6 +511,14 @@ extern const char *pex_run (struct pex_obj *obj, int flags, extern FILE *pex_read_output (struct pex_obj *, int binary); +/* Read the standard error of the last program to be executed. + pex_run can not be called after this. BINARY should be non-zero if + the file should be opened in binary mode; this is ignored on Unix. + Returns NULL on error. Don't call fclose on the returned FILE; it + will be closed by pex_free. */ + +extern FILE *pex_read_err (struct pex_obj *, int binary); + /* Return exit status of all programs in VECTOR. COUNT indicates the size of VECTOR. The status codes in the vector are in the order of the calls to pex_run. Returns 0 on error, 1 on success. */