#define _GNU_SOURCE #include "format.h" #include #include #include #include const char* format( char* buffer, int size, const char* f, ... ) { va_list args; va_start(args,f); vsnprintf( buffer, size, f, args ); va_end(args); return buffer; } char* aformat( const char* f, ... ) { va_list args; va_start(args,f); char* res = NULL; vasprintf( &res, f, args ); va_end(args); return res; } char* safe_strdup( const char* str ) { if( !str ) { return NULL; } return strdup(str); } void mkdir_p( const char* ch, int mode ) { char buffer[512]; strncpy(buffer,ch,512); char* rem = NULL; char next_create[512] = ""; for( char* iter = strtok_r(buffer,"/",&rem); iter; iter = strtok_r(NULL,"/",&rem) ) { strcat(next_create,iter); mkdir( next_create, mode ); strcat(next_create,"/"); } }