On 11/15/2015 09:19 PM, Andreas Schwab wrote:
Andris Pavenis <andris.pave...@iki.fi> writes:
diff --git a/libgfortran/intrinsics/chmod.c b/libgfortran/intrinsics/chmod.c
index 1fffa3d..482a8a6 100644
--- a/libgfortran/intrinsics/chmod.c
+++ b/libgfortran/intrinsics/chmod.c
@@ -451,7 +451,7 @@ clause_done:
if ((ugo[2] || honor_umask) && !rwxXstugo[8])
file_mode = (file_mode & ~(S_IROTH | S_IWOTH | S_IXOTH))
| (new_mode & (S_IROTH | S_IWOTH | S_IXOTH));
-#ifndef __VXWORKS__
+#if !defined(__VXWORKS__) && !defined(__DJGPP__)
How about making that #ifdef S_ISVTX?
Andreas.
New patch attached. It is OK for DJGPP. Let us only hope that we have no some
obscure target
for which S_ISVTX is present but is not a preprocessor macro. I have no way of
checking for
all targets. From that point of view original patch was safer.
Andris
2015-11-16 Andris Pavenis <andris.pave...@iki.fi>
* libgfortran/intrinsics/chmod.c: use S_ISVTX only when it is defined
>From 6fcff7721ce292df7889797f1380d5313e445c6f Mon Sep 17 00:00:00 2001
From: Andris Pavenis <andris.pave...@iki.fi>
Date: Mon, 16 Nov 2015 06:33:14 +0200
Subject: [PATCH] libgfortran/intrinsics/chmod.c: use S_ISVTX only when it is
defined
2015-11-16 Andris Pavenis <andris.pave...@iki.fi>
* libgfortran/intrinsics/chmod.c: use S_ISVTX only when it is defined
---
libgfortran/intrinsics/chmod.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/libgfortran/intrinsics/chmod.c b/libgfortran/intrinsics/chmod.c
index 1fffa3d..f8eed17 100644
--- a/libgfortran/intrinsics/chmod.c
+++ b/libgfortran/intrinsics/chmod.c
@@ -451,7 +451,7 @@ clause_done:
if ((ugo[2] || honor_umask) && !rwxXstugo[8])
file_mode = (file_mode & ~(S_IROTH | S_IWOTH | S_IXOTH))
| (new_mode & (S_IROTH | S_IWOTH | S_IXOTH));
-#ifndef __VXWORKS__
+#ifdef S_ISVTX
if (is_dir && rwxXstugo[5])
file_mode |= S_ISVTX;
else if (!is_dir)
@@ -463,7 +463,7 @@ clause_done:
{
/* Clear '-'. */
file_mode &= ~new_mode;
-#if !defined( __MINGW32__) && !defined (__VXWORKS__)
+#ifdef S_ISVTX
if (rwxXstugo[5] || !is_dir)
file_mode &= ~S_ISVTX;
#endif
@@ -471,7 +471,7 @@ clause_done:
else if (set_mode == 3)
{
file_mode |= new_mode;
-#if !defined (__MINGW32__) && !defined (__VXWORKS__)
+#ifdef S_ISVTX
if (rwxXstugo[5] && is_dir)
file_mode |= S_ISVTX;
else if (!is_dir)
--
2.4.3