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:
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)