- return run_as(_mkdir_recursive, path, mode, uid, gid);
+ data.path = path;
+ data.mode = mode;
+ return run_as(_mkdir_recursive, &data, uid, gid);
+}
+
+int mkdir_run_as(const char *path, mode_t mode, uid_t uid, gid_t gid)
+{
+ struct mkdir_data data;
+
+ DBG3("mkdir() %s with mode %d for uid %d and gid %d",
+ path, mode, uid, gid);
+ data.path = path;
+ data.mode = mode;
+ return run_as(_mkdir, &data, uid, gid);
+}
+
+int open_run_as(const char *path, int flags, mode_t mode, uid_t uid, gid_t gid)
+{
+ struct open_data data;
+
+ DBG3("open() %s with flags %d mode %d for uid %d and gid %d",
+ path, flags, mode, uid, gid);
+ data.path = path;
+ data.flags = flags;
+ data.mode = mode;
+ return run_as(_open, &data, uid, gid);