fs.c 484 B

1234567891011121314151617181920212223242526
  1. #include "src/fs.h"
  2. // posix
  3. #include <sys/stat.h>
  4. #include <sys/types.h>
  5. #include <unistd.h>
  6. #include <errno.h>
  7. #include <string.h>
  8. int rgpgfs_fs_mkdirs(char *path) {
  9. char *delimiter = strrchr(path, '/');
  10. if (delimiter == NULL) {
  11. errno = ENOTSUP;
  12. return 1;
  13. }
  14. *delimiter = '\0';
  15. struct stat statbuf;
  16. if (lstat(path, &statbuf) &&
  17. (rgpgfs_fs_mkdirs(path) || mkdir(path, S_IRWXU))) {
  18. *delimiter = '/';
  19. return 1;
  20. }
  21. *delimiter = '/';
  22. return 0;
  23. }