libobs/util: Add os_mkdirs
Recursively creates a directory structure if one or more directories in the path structure don't existmaster
parent
bf37258469
commit
847b3df322
|
@ -508,3 +508,39 @@ int os_dtostr(double value, char *dst, size_t size)
|
||||||
|
|
||||||
return (int)length;
|
return (int)length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int recursive_mkdir(char *path)
|
||||||
|
{
|
||||||
|
char *last_slash;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = os_mkdir(path);
|
||||||
|
if (ret != MKDIR_ERROR)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
last_slash = strrchr(path, '/');
|
||||||
|
if (!last_slash)
|
||||||
|
return MKDIR_ERROR;
|
||||||
|
|
||||||
|
*last_slash = 0;
|
||||||
|
ret = recursive_mkdir(path);
|
||||||
|
*last_slash = '/';
|
||||||
|
|
||||||
|
if (ret == MKDIR_ERROR)
|
||||||
|
return MKDIR_ERROR;
|
||||||
|
|
||||||
|
ret = os_mkdir(path);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int os_mkdirs(const char *dir)
|
||||||
|
{
|
||||||
|
struct dstr dir_str;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
dstr_init_copy(&dir_str, dir);
|
||||||
|
dstr_replace(&dir_str, "\\", "/");
|
||||||
|
ret = recursive_mkdir(dir_str.array);
|
||||||
|
dstr_free(&dir_str);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
|
@ -135,6 +135,7 @@ EXPORT int os_rmdir(const char *path);
|
||||||
#define MKDIR_ERROR -1
|
#define MKDIR_ERROR -1
|
||||||
|
|
||||||
EXPORT int os_mkdir(const char *path);
|
EXPORT int os_mkdir(const char *path);
|
||||||
|
EXPORT int os_mkdirs(const char *path);
|
||||||
EXPORT int os_rename(const char *old_path, const char *new_path);
|
EXPORT int os_rename(const char *old_path, const char *new_path);
|
||||||
EXPORT int os_copyfile(const char *file_in, const char *file_out);
|
EXPORT int os_copyfile(const char *file_in, const char *file_out);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue