mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-02-10 15:33:34 +00:00
[SV 57967] Only set APPEND mode for regular files
APPEND is a permanent mode shared by all users of a file. If we set it on a tty, pipe, etc. it will stay in effect even after make exits, which can cause problems. Patch provided by 0xef967c36@gmail.com * src/output.c (set_append_mode): Check for a regular file. Copyright-paperwork-exempt: yes
This commit is contained in:
parent
8e024a2532
commit
80b90b7866
1 changed files with 7 additions and 3 deletions
10
src/output.c
10
src/output.c
|
@ -144,14 +144,18 @@ log_working_directory (int entering)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set a file descriptor to be in O_APPEND mode.
|
/* Set a file descriptor referring to a regular file
|
||||||
If it fails, just ignore it. */
|
to be in O_APPEND mode. If it fails, just ignore it. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_append_mode (int fd)
|
set_append_mode (int fd)
|
||||||
{
|
{
|
||||||
#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND)
|
#if defined(F_GETFL) && defined(F_SETFL) && defined(O_APPEND)
|
||||||
int flags = fcntl (fd, F_GETFL, 0);
|
struct stat stbuf;
|
||||||
|
int flags;
|
||||||
|
if (fstat (fd, &stbuf) != 0 || !S_ISREG (stbuf.st_mode))
|
||||||
|
return;
|
||||||
|
flags = fcntl (fd, F_GETFL, 0);
|
||||||
if (flags >= 0)
|
if (flags >= 0)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
|
Loading…
Reference in a new issue