深い階層のディレクトリも一発で作れるよう再帰を利用する

動作検証は Visual C++ Ver6.0 で行った。

int makeDir( const char* in_Path )
{
	while( -1 == _mkdir(in_Path) ) {
		if( ENOENT == errno ) {
			// 一つ上のフォルダを作成する
			char drive[_MAX_DRIVE];
			char dir[_MAX_DIR];
			_splitpath(in_Path, drive, dir, NULL, NULL);
			if( '\\' == dir[strlen(dir)-1] ) {
				dir[strlen(dir)-1] = '\0';
			}
			char path[_MAX_PATH];
			sprintf( path, "%s%s", drive, dir );
			if( -1 == makeDir(path) ) {
				return -1;
			}
		}
		else {
			return -1;
		}
	}

	return 0;
}