summaryrefslogtreecommitdiff
path: root/missing/flock.c
diff options
context:
space:
mode:
Diffstat (limited to 'missing/flock.c')
-rw-r--r--missing/flock.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/missing/flock.c b/missing/flock.c
index 5f6b41c357..0b76961762 100644
--- a/missing/flock.c
+++ b/missing/flock.c
@@ -1,9 +1,19 @@
-#include "config.h"
+#include "ruby/internal/config.h"
+#include "ruby/ruby.h"
#if defined _WIN32
+#elif defined __wasi__
+#include <errno.h>
+
+int
+flock(int fd, int operation)
+{
+ errno = EINVAL;
+ return -1;
+}
#elif defined HAVE_FCNTL && defined HAVE_FCNTL_H
-/* These are the flock() constants. Since this sytems doesn't have
+/* These are the flock() constants. Since this systems doesn't have
flock(), the values of the constants are probably not available.
*/
# ifndef LOCK_SH
@@ -24,12 +34,10 @@
#include <errno.h>
int
-flock(fd, operation)
- int fd;
- int operation;
+flock(int fd, int operation)
{
struct flock lock;
-
+
switch (operation & ~LOCK_NB) {
case LOCK_SH:
lock.l_type = F_RDLCK;
@@ -46,7 +54,7 @@ flock(fd, operation)
}
lock.l_whence = SEEK_SET;
lock.l_start = lock.l_len = 0L;
-
+
return fcntl(fd, (operation & LOCK_NB) ? F_SETLK : F_SETLKW, &lock);
}
@@ -74,7 +82,7 @@ flock(fd, operation)
# define F_TEST 3 /* Test a region for other processes locks */
# endif
-/* These are the flock() constants. Since this sytems doesn't have
+/* These are the flock() constants. Since this systems doesn't have
flock(), the values of the constants are probably not available.
*/
# ifndef LOCK_SH
@@ -91,9 +99,7 @@ flock(fd, operation)
# endif
int
-flock(fd, operation)
- int fd;
- int operation;
+flock(int fd, int operation)
{
switch (operation) {
@@ -125,9 +131,7 @@ flock(fd, operation)
}
#else
int
-flock(fd, operation)
- int fd;
- int operation;
+flock(int fd, int operation)
{
rb_notimplement();
return -1;