mkdir.cpp 818 B

123456789101112131415161718192021222324252627282930
  1. //
  2. // $Id$
  3. //
  4. #include<__vic/fs.h>
  5. #include<__vic/throw_errno.h>
  6. #include<sys/stat.h>
  7. #include<cerrno>
  8. namespace __vic {
  9. //----------------------------------------------------------------------------
  10. void mkdir(const char *path, mode_t mode)
  11. {
  12. if(::mkdir(path, mode)) throw_errno("mkdir");
  13. }
  14. //----------------------------------------------------------------------------
  15. bool mkdir_if_absent(const char *path, mode_t mode)
  16. {
  17. if(::mkdir(path, mode) == 0) return true; // Created
  18. int err = errno;
  19. if(err != EEXIST) throw_errno("mkdir", err);
  20. // Check whether the path is a directory
  21. if(!dir_exists(path)) throw_errno("mkdir_if_absent", err);
  22. return false; // Path exists and it's a directory
  23. }
  24. //----------------------------------------------------------------------------
  25. } // namespace