about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--include/sys/fsuid.h20
-rw-r--r--src/linux/setfsgid.c8
-rw-r--r--src/linux/setfsuid.c8
3 files changed, 36 insertions, 0 deletions
diff --git a/include/sys/fsuid.h b/include/sys/fsuid.h
new file mode 100644
index 00000000..f62184c5
--- /dev/null
+++ b/include/sys/fsuid.h
@@ -0,0 +1,20 @@
+#ifndef	_FSUID_H
+#define	_FSUID_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_uid_t
+#define __NEED_gid_t
+
+#include <bits/alltypes.h>
+
+int setfsuid(uid_t);
+int setfsgid(gid_t);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/linux/setfsgid.c b/src/linux/setfsgid.c
new file mode 100644
index 00000000..a7ed9e92
--- /dev/null
+++ b/src/linux/setfsgid.c
@@ -0,0 +1,8 @@
+#include <unistd.h>
+#include "syscall.h"
+#include "libc.h"
+
+int setfsgid(gid_t gid)
+{
+	return syscall(SYS_setfsgid, gid);
+}
diff --git a/src/linux/setfsuid.c b/src/linux/setfsuid.c
new file mode 100644
index 00000000..1509e0aa
--- /dev/null
+++ b/src/linux/setfsuid.c
@@ -0,0 +1,8 @@
+#include <unistd.h>
+#include "syscall.h"
+#include "libc.h"
+
+int setfsuid(uid_t uid)
+{
+	return syscall(SYS_setfsuid, uid);
+}