You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

36 lines
671 B
C

#include "dir.h"
#include <sys/stat.h>
#include <libgen.h>
#include <string.h>
#include <stdlib.h>
void mkdir_p_inside( char* buffer, int mode )
{
if( !*buffer || buffer[1] == '/' ) { return; }
struct stat s = {0};
dirname(buffer);
if( -1 == stat(buffer,&s) ) {
mkdir_p_inside( buffer, mode );
}
buffer[strlen(buffer)] = '/';
mkdir( buffer, mode );
}
void mkdir_p( char* buffer, int mode )
{
char* copy = strdup(buffer);
mkdir_p_inside(copy,mode);
free(copy);
}
void util_dir_create_containing( const char* buffer, int mode )
{
int size = strlen(buffer);
char buffer2[size+1];
strncpy( buffer2, buffer, size+1 );
mkdir_p(dirname(buffer2), 0640 );
}