#include <errno.h>
#include <fcntl.h>
#include <sched.h>
+#include <grp.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/stat.h>
static UNUSED void
FatalErrnoError(bool condition, char const msg[]) /*@*/
{
+ extern int wrapper_exit_code;
+
if (!condition) return;
perror(msg);
- extern int wrapper_exit_code;
exit(wrapper_exit_code);
}
return res;
}
+inline static WRAPPER_DECL void
+Ereadlink(const char *path, char *buf, size_t bufsiz)
+{
+ FatalErrnoError(readlink(path, buf, bufsiz)==-1, "readlink()");
+}
+
+inline static WRAPPER_DECL void
+Esymlink(const char *oldpath, const char *newpath)
+{
+ FatalErrnoError(symlink(oldpath, newpath)==-1, "symlink()");
+}
+
+inline static WRAPPER_DECL void
+Eunlink(char const *pathname)
+{
+ FatalErrnoError(unlink(pathname)==-1, "unlink()");
+}
+
+inline static WRAPPER_DECL void
+Egetrlimit(int resource, struct rlimit *rlim)
+{
+ FatalErrnoError(getrlimit(resource, rlim)==-1, "getrlimit()");
+}
+
+inline static WRAPPER_DECL void
+Esetrlimit(int resource, struct rlimit const *rlim)
+{
+ FatalErrnoError(setrlimit(resource, rlim)==-1, "setrlimit()");
+}
+
+inline static void
+Esetuid(uid_t uid)
+{
+ FatalErrnoError(setuid(uid)==-1, "setuid()");
+}
+
+inline static void
+Esetgid(gid_t gid)
+{
+ FatalErrnoError(setgid(gid)==-1, "setgid()");
+}
+
+inline static void
+Esetgroups(size_t size, const gid_t *list)
+{
+ FatalErrnoError(setgroups(size, list)==-1, "setgroups()");
+}
+
+
#undef WRAPPER_DECL
#endif // H_UTIL_VSERVER_SRC_WRAPPERS_H