mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-10 02:31:48 +00:00
Add file storage helpers.
This commit is contained in:
parent
81655816f0
commit
204cc019ea
@ -105,6 +105,7 @@
|
||||
<ClCompile Include="..\..\..\nfd\nfd_win.cpp" />
|
||||
<ClCompile Include="..\..\..\server\TracyBadVersion.cpp" />
|
||||
<ClCompile Include="..\..\..\server\TracyMemory.cpp" />
|
||||
<ClCompile Include="..\..\..\server\TracyStorage.cpp" />
|
||||
<ClCompile Include="..\..\..\server\TracyView.cpp" />
|
||||
<ClCompile Include="..\..\..\server\TracyWorker.cpp" />
|
||||
<ClCompile Include="..\..\libs\gl3w\GL\gl3w.c" />
|
||||
@ -153,6 +154,7 @@
|
||||
<ClInclude Include="..\..\..\server\TracyMemory.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracyPopcnt.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracySlab.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracyStorage.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracyStringDiscovery.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracyVarArray.hpp" />
|
||||
<ClInclude Include="..\..\..\server\TracyVector.hpp" />
|
||||
|
@ -84,6 +84,9 @@
|
||||
<ClCompile Include="..\..\..\common\tracy_lz4hc.cpp">
|
||||
<Filter>common</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\server\TracyStorage.cpp">
|
||||
<Filter>server</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\..\common\tracy_lz4.hpp">
|
||||
@ -236,6 +239,9 @@
|
||||
<ClInclude Include="..\..\..\common\tracy_lz4hc.hpp">
|
||||
<Filter>common</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\server\TracyStorage.hpp">
|
||||
<Filter>server</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Natvis Include="DebugVis.natvis" />
|
||||
|
106
server/TracyStorage.cpp
Normal file
106
server/TracyStorage.cpp
Normal file
@ -0,0 +1,106 @@
|
||||
#include <assert.h>
|
||||
#include <string>
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <direct.h>
|
||||
# include <windows.h>
|
||||
#else
|
||||
# include <dirent.h>
|
||||
# include <sys/types.h>
|
||||
# include <sys/stat.h>
|
||||
# include <unistd.h>
|
||||
# include <errno.h>
|
||||
#endif
|
||||
|
||||
#include "TracyStorage.hpp"
|
||||
|
||||
namespace tracy
|
||||
{
|
||||
|
||||
static bool CreateDirStruct( const std::string& path )
|
||||
{
|
||||
struct stat buf;
|
||||
if( stat( path.c_str(), &buf ) == 0 ) return true;
|
||||
|
||||
if( errno != ENOENT )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
size_t pos = 0;
|
||||
do
|
||||
{
|
||||
pos = path.find( '/', pos+1 );
|
||||
#ifdef _WIN32
|
||||
if( pos == 2 ) continue; // Don't create drive name.
|
||||
if( _mkdir( path.substr( 0, pos ).c_str() ) != 0 )
|
||||
#else
|
||||
if( mkdir( path.substr( 0, pos ).c_str(), S_IRWXU ) != 0 )
|
||||
#endif
|
||||
{
|
||||
if( errno != EEXIST )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
while( pos != std::string::npos );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const char* GetSavePath( const char* file )
|
||||
{
|
||||
enum { Pool = 8 };
|
||||
enum { MaxPath = 512 };
|
||||
static char bufpool[Pool][MaxPath];
|
||||
static int bufsel = 0;
|
||||
char* buf = bufpool[bufsel];
|
||||
bufsel = ( bufsel + 1 ) % Pool;
|
||||
|
||||
#ifdef _WIN32
|
||||
auto path = getenv( "APPDATA" );
|
||||
auto sz = strlen( path );
|
||||
memcpy( buf, path, sz );
|
||||
|
||||
for( size_t i=0; i<sz; i++ )
|
||||
{
|
||||
if( buf[i] == '\\' )
|
||||
{
|
||||
buf[i] = '/';
|
||||
}
|
||||
}
|
||||
#else
|
||||
auto path = getenv( "XDG_CONFIG_HOME" );
|
||||
size_t sz;
|
||||
if( path && *path )
|
||||
{
|
||||
sz = strlen( path );
|
||||
memcpy( buf, path, sz );
|
||||
}
|
||||
else
|
||||
{
|
||||
path = getenv( "HOME" );
|
||||
assert( path && *path );
|
||||
|
||||
sz = strlen( path );
|
||||
memcpy( buf, path, sz );
|
||||
memcpy( buf+sz, "/.config", 8 );
|
||||
sz += 8;
|
||||
}
|
||||
#endif
|
||||
|
||||
memcpy( buf+sz, "/tracy/", 8 );
|
||||
sz += 7;
|
||||
|
||||
auto status = CreateDirStruct( buf );
|
||||
assert( status );
|
||||
|
||||
const auto fsz = strlen( file );
|
||||
assert( sz + fsz < MaxPath );
|
||||
memcpy( buf+sz, file, fsz+1 );
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
}
|
11
server/TracyStorage.hpp
Normal file
11
server/TracyStorage.hpp
Normal file
@ -0,0 +1,11 @@
|
||||
#ifndef __TRACYSTORAGE_HPP__
|
||||
#define __TRACYSTORAGE_HPP__
|
||||
|
||||
namespace tracy
|
||||
{
|
||||
|
||||
const char* GetSavePath( const char* file );
|
||||
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user