diff --git a/readline/readline/CHANGELOG b/readline/readline/CHANGELOG index 18265ab105..6fa1ebb9e6 100644 --- a/readline/readline/CHANGELOG +++ b/readline/readline/CHANGELOG @@ -1,3 +1,10 @@ +2019-12-23 Eli Zaretskii + + * posixstat.h (S_IRGRP, S_IWGRP, S_IXGRP, S_IROTH, S_IWOTH) + (S_IXOTH, S_IRWXG, S_IRWXO): Define if undefined, even if S_IRWXU + is defined, because non-Posix systems may defined only the user + bits. + [Readline-specific changelog. Descriptions of changes to the source are found in the bash changelog.] diff --git a/readline/readline/posixstat.h b/readline/readline/posixstat.h index 3eb7f2906f..b9d8eb3761 100644 --- a/readline/readline/posixstat.h +++ b/readline/readline/posixstat.h @@ -132,6 +132,26 @@ # define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR) # define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) # define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +#else /* !S_IRWXU */ + /* S_IRWXU is defined, but "group" and "other" bits might not be + (happens in certain versions of MinGW). */ +# if !defined (S_IRGRP) +# define S_IRGRP (S_IREAD >> 3) /* read, group */ +# define S_IWGRP (S_IWRITE >> 3) /* write, group */ +# define S_IXGRP (S_IEXEC >> 3) /* execute, group */ +# endif /* !S_IRGRP */ + +# if !defined (S_IROTH) +# define S_IROTH (S_IREAD >> 6) /* read, other */ +# define S_IWOTH (S_IWRITE >> 6) /* write, other */ +# define S_IXOTH (S_IEXEC >> 6) /* execute, other */ +# endif /* !S_IROTH */ +# if !defined (S_IRWXG) +# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP) +# endif +# if !defined (S_IRWXO) +# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH) +# endif #endif /* !S_IRWXU */ /* These are non-standard, but are used in builtins.c$symbolic_umask() */