Skip to content

Commit

Permalink
pex-common.h (struct pex_funcs): Add new parameter for open_write field.
Browse files Browse the repository at this point in the history
libiberty/

2014-09-26  Max Ostapenko  <[email protected]>

	* 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  <[email protected]>

	* libiberty.h (PEX_STDOUT_APPEND): New flag.
	(PEX_STDERR_APPEND): Likewise.

From-SVN: r215632
  • Loading branch information
Max Ostapenko authored and Maxim Ostapenko committed Sep 26, 2014
1 parent ecc81e3 commit 29ce50b
Show file tree
Hide file tree
Showing 8 changed files with 36 additions and 11 deletions.
5 changes: 5 additions & 0 deletions include/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2014-09-26 Max Ostapenko <[email protected]>

* libiberty.h (PEX_STDOUT_APPEND): New flag.
(PEX_STDERR_APPEND): Likewise.

2014-09-23 Iain Buclaw <[email protected]>

* demangle.h (DMGL_DLANG): New macro.
Expand Down
5 changes: 5 additions & 0 deletions include/libiberty.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions libiberty/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2014-09-26 Max Ostapenko <[email protected]>

* 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 <[email protected]>

* Makefile.in (CFILES): Add d-demangle.c.
Expand Down
8 changes: 5 additions & 3 deletions libiberty/pex-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion libiberty/pex-common.h
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
6 changes: 4 additions & 2 deletions libiberty/pex-djgpp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)),
Expand Down
7 changes: 4 additions & 3 deletions libiberty/pex-unix.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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. */
Expand Down
6 changes: 4 additions & 2 deletions libiberty/pex-win32.c
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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)),
Expand Down

0 comments on commit 29ce50b

Please sign in to comment.