scc

simple c99 compiler
git clone git://git.simple-cc.org/scc
Log | Files | Refs | Submodules | README | LICENSE

commit c22a72acf6627d779b527dfd43e6abc7148f2886
parent 1d263bb8b0a2b372050ec285a1306431c203542e
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Tue, 17 May 2022 17:02:09 +0200

libc: Add _access() macros

_access() is used in tmpnam() and the flag value is just hardcoded
which theoretically could cause some problems in some systems with
different values.

Diffstat:
Minclude/bits/darwin/sys.h | 5+++++
Minclude/bits/linux/sys.h | 5+++++
Minclude/bits/netbsd/sys.h | 5+++++
Minclude/bits/openbsd/sys.h | 5+++++
Msrc/libc/stdio/tmpnam.c | 5++++-
5 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/include/bits/darwin/sys.h b/include/bits/darwin/sys.h @@ -11,6 +11,11 @@ #define CLOCKS_PER_SEC ((clock_t) 1000000) #define RUSAGE_SELF 0 +#define F_OK 0 +#define X_OK 1 +#define R_OK 4 +#define W_OK 2 + typedef int pid_t; extern pid_t _getpid(void); diff --git a/include/bits/linux/sys.h b/include/bits/linux/sys.h @@ -11,6 +11,11 @@ #define CLOCKS_PER_SEC ((clock_t) 1000000) #define RUSAGE_SELF 0 +#define F_OK 0 +#define X_OK 1 +#define R_OK 4 +#define W_OK 2 + typedef int pid_t; struct sigaction; diff --git a/include/bits/netbsd/sys.h b/include/bits/netbsd/sys.h @@ -11,6 +11,11 @@ #define CLOCKS_PER_SEC ((clock_t) 100) #define RUSAGE_SELF 0 +#define F_OK 0 +#define X_OK 1 +#define R_OK 4 +#define W_OK 2 + typedef int pid_t; extern pid_t _getpid(void); diff --git a/include/bits/openbsd/sys.h b/include/bits/openbsd/sys.h @@ -11,6 +11,11 @@ #define CLOCKS_PER_SEC ((clock_t) 100) #define RUSAGE_SELF 0 +#define F_OK 0 +#define X_OK 1 +#define R_OK 4 +#define W_OK 2 + typedef int pid_t; struct sigaction; diff --git a/src/libc/stdio/tmpnam.c b/src/libc/stdio/tmpnam.c @@ -1,3 +1,5 @@ +#include <sys.h> + #include <stdio.h> #include <string.h> @@ -24,7 +26,8 @@ tmpnam(char *s) if (*p == '\0') return NULL; ++*p; - if (_access(buf, 0) != 0) + + if (_access(buf, F_OK) != 0) break; } if (s)