#pragma once #include "fs_mkdir.hpp" #if defined __linux__ #include "ugid.hpp" namespace fs { template static inline int mkdir_as(const ugid_t ugid_, const T &path_, const mode_t mode_) { const ugid::Set _(ugid_); return fs::mkdir(path_,mode_); } } #elif defined __FreeBSD__ #include "fs_lchown.hpp" namespace fs { template static inline int mkdir_as(const ugid_t ugid_, const T &path_,` const mode_t mode_) { int rv; rv = fs::mkdir(path_,mode_); if(rv < 0) return rv; fs::lchown(path_,ugid_.uid,ugid_.gid); return 0; } } #else #error "Not Supported" #endif