mirror of
https://gcc.gnu.org/git/gcc.git
synced 2025-01-21 03:44:22 +08:00
pex-common.h (struct pex_funcs): Add new parameter for open_write field.
libiberty/ 2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com> * pex-common.h (struct pex_funcs): Add new parameter for open_write field. * pex-unix.c (pex_unix_open_write): Add support for new parameter. * pex-djgpp.c (pex_djgpp_open_write): Likewise. * pex-win32.c (pex_win32_open_write): Likewise. * pex-common.c (pex_run_in_environment): Likewise. include/ 2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com> * libiberty.h (PEX_STDOUT_APPEND): New flag. (PEX_STDERR_APPEND): Likewise. From-SVN: r215632
This commit is contained in:
parent
ecc81e3312
commit
29ce50b031
@ -1,3 +1,8 @@
|
||||
2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com>
|
||||
|
||||
* libiberty.h (PEX_STDOUT_APPEND): New flag.
|
||||
(PEX_STDERR_APPEND): Likewise.
|
||||
|
||||
2014-09-23 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||
|
||||
* demangle.h (DMGL_DLANG): New macro.
|
||||
|
@ -445,6 +445,11 @@ extern struct pex_obj *pex_init (int flags, const char *pname,
|
||||
on Unix. */
|
||||
#define PEX_BINARY_ERROR 0x80
|
||||
|
||||
/* Append stdout to existing file instead of truncating it. */
|
||||
#define PEX_STDOUT_APPEND 0x100
|
||||
|
||||
/* Thes same as PEX_STDOUT_APPEND, but for STDERR. */
|
||||
#define PEX_STDERR_APPEND 0x200
|
||||
|
||||
/* Execute one program. Returns NULL on success. On error returns an
|
||||
error string (typically just the name of a system call); the error
|
||||
|
@ -1,3 +1,11 @@
|
||||
2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com>
|
||||
|
||||
* pex-common.h (struct pex_funcs): Add new parameter for open_write field.
|
||||
* pex-unix.c (pex_unix_open_write): Add support for new parameter.
|
||||
* pex-djgpp.c (pex_djgpp_open_write): Likewise.
|
||||
* pex-win32.c (pex_win32_open_write): Likewise.
|
||||
* pex-common.c (pex_run_in_environment): Likewise.
|
||||
|
||||
2014-09-23 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||
|
||||
* Makefile.in (CFILES): Add d-demangle.c.
|
||||
|
@ -267,7 +267,8 @@ pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable,
|
||||
if (out < 0)
|
||||
{
|
||||
out = obj->funcs->open_write (obj, outname,
|
||||
(flags & PEX_BINARY_OUTPUT) != 0);
|
||||
(flags & PEX_BINARY_OUTPUT) != 0,
|
||||
(flags & PEX_STDOUT_APPEND) != 0);
|
||||
if (out < 0)
|
||||
{
|
||||
*err = errno;
|
||||
@ -319,8 +320,9 @@ pex_run_in_environment (struct pex_obj *obj, int flags, const char *executable,
|
||||
}
|
||||
else
|
||||
{
|
||||
errdes = obj->funcs->open_write (obj, errname,
|
||||
(flags & PEX_BINARY_ERROR) != 0);
|
||||
errdes = obj->funcs->open_write (obj, errname,
|
||||
(flags & PEX_BINARY_ERROR) != 0,
|
||||
(flags & PEX_STDERR_APPEND) != 0);
|
||||
if (errdes < 0)
|
||||
{
|
||||
*err = errno;
|
||||
|
@ -104,7 +104,7 @@ struct pex_funcs
|
||||
/* Open file NAME for writing. If BINARY is non-zero, open in
|
||||
binary mode. Return >= 0 on success, -1 on error. */
|
||||
int (*open_write) (struct pex_obj *, const char */* name */,
|
||||
int /* binary */);
|
||||
int /* binary */, int /* append */);
|
||||
/* Execute a child process. FLAGS, EXECUTABLE, ARGV, ERR are from
|
||||
pex_run. IN, OUT, ERRDES, TOCLOSE are all descriptors, from
|
||||
open_read, open_write, or pipe, or they are one of STDIN_FILE_NO,
|
||||
|
@ -43,7 +43,7 @@ extern int errno;
|
||||
#endif
|
||||
|
||||
static int pex_djgpp_open_read (struct pex_obj *, const char *, int);
|
||||
static int pex_djgpp_open_write (struct pex_obj *, const char *, int);
|
||||
static int pex_djgpp_open_write (struct pex_obj *, const char *, int, int);
|
||||
static pid_t pex_djgpp_exec_child (struct pex_obj *, int, const char *,
|
||||
char * const *, char * const *,
|
||||
int, int, int, int,
|
||||
@ -90,10 +90,12 @@ pex_djgpp_open_read (struct pex_obj *obj ATTRIBUTE_UNUSED,
|
||||
|
||||
static int
|
||||
pex_djgpp_open_write (struct pex_obj *obj ATTRIBUTE_UNUSED,
|
||||
const char *name, int binary)
|
||||
const char *name, int binary, int append)
|
||||
{
|
||||
/* Note that we can't use O_EXCL here because gcc may have already
|
||||
created the temporary file via make_temp_file. */
|
||||
if (append)
|
||||
return -1;
|
||||
return open (name,
|
||||
(O_WRONLY | O_CREAT | O_TRUNC
|
||||
| (binary ? O_BINARY : O_TEXT)),
|
||||
|
@ -301,7 +301,7 @@ pex_wait (struct pex_obj *obj, pid_t pid, int *status, struct pex_time *time)
|
||||
static void pex_child_error (struct pex_obj *, const char *, const char *, int)
|
||||
ATTRIBUTE_NORETURN;
|
||||
static int pex_unix_open_read (struct pex_obj *, const char *, int);
|
||||
static int pex_unix_open_write (struct pex_obj *, const char *, int);
|
||||
static int pex_unix_open_write (struct pex_obj *, const char *, int, int);
|
||||
static pid_t pex_unix_exec_child (struct pex_obj *, int, const char *,
|
||||
char * const *, char * const *,
|
||||
int, int, int, int,
|
||||
@ -350,11 +350,12 @@ pex_unix_open_read (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
|
||||
|
||||
static int
|
||||
pex_unix_open_write (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
|
||||
int binary ATTRIBUTE_UNUSED)
|
||||
int binary ATTRIBUTE_UNUSED, int append)
|
||||
{
|
||||
/* Note that we can't use O_EXCL here because gcc may have already
|
||||
created the temporary file via make_temp_file. */
|
||||
return open (name, O_WRONLY | O_CREAT | O_TRUNC, PUBLIC_MODE);
|
||||
return open (name, O_WRONLY | O_CREAT
|
||||
| (append ? O_APPEND : O_TRUNC), PUBLIC_MODE);
|
||||
}
|
||||
|
||||
/* Close a file. */
|
||||
|
@ -78,7 +78,7 @@ backslashify (char *s)
|
||||
}
|
||||
|
||||
static int pex_win32_open_read (struct pex_obj *, const char *, int);
|
||||
static int pex_win32_open_write (struct pex_obj *, const char *, int);
|
||||
static int pex_win32_open_write (struct pex_obj *, const char *, int, int);
|
||||
static pid_t pex_win32_exec_child (struct pex_obj *, int, const char *,
|
||||
char * const *, char * const *,
|
||||
int, int, int, int,
|
||||
@ -126,10 +126,12 @@ pex_win32_open_read (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
|
||||
|
||||
static int
|
||||
pex_win32_open_write (struct pex_obj *obj ATTRIBUTE_UNUSED, const char *name,
|
||||
int binary)
|
||||
int binary, int append)
|
||||
{
|
||||
/* Note that we can't use O_EXCL here because gcc may have already
|
||||
created the temporary file via make_temp_file. */
|
||||
if (append)
|
||||
return -1;
|
||||
return _open (name,
|
||||
(_O_WRONLY | _O_CREAT | _O_TRUNC
|
||||
| (binary ? _O_BINARY : _O_TEXT)),
|
||||
|
Loading…
Reference in New Issue
Block a user