#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
int make_dirs(char *dir, __mode_t m)
{
if(NULL == dir || '\0' == *dir)
return -1;
char *p = strrchr(dir, '/');
if(p != NULL)
{
char parent_dir[4096] = { 0 };
strncpy(parent_dir, dir, p - dir);
if(access(parent_dir, F_OK) != 0)
make_dirs(parent_dir, m);
}
if(access(dir, F_OK) != 0)
{
if( mkdir(dir, m) != 0)
return -1;
}
return 0;
}