mirror of
https://github.com/paboyle/Grid.git
synced 2025-04-09 21:50:45 +01:00
Hadrons: automatic directory creation fix
This commit is contained in:
parent
2fa2b0e0b1
commit
6764362237
@ -96,7 +96,7 @@ const std::string Hadrons::resultFileExt = "xml";
|
|||||||
// recursive mkdir /////////////////////////////////////////////////////////////
|
// recursive mkdir /////////////////////////////////////////////////////////////
|
||||||
int Hadrons::mkdir(const std::string dirName)
|
int Hadrons::mkdir(const std::string dirName)
|
||||||
{
|
{
|
||||||
if (access(dirName.c_str(), R_OK|W_OK|X_OK))
|
if (!dirName.empty() and access(dirName.c_str(), R_OK|W_OK|X_OK))
|
||||||
{
|
{
|
||||||
mode_t mode755;
|
mode_t mode755;
|
||||||
char tmp[MAX_PATH_LENGTH];
|
char tmp[MAX_PATH_LENGTH];
|
||||||
@ -143,3 +143,18 @@ std::string Hadrons::basename(const std::string &s)
|
|||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string Hadrons::dirname(const std::string &s)
|
||||||
|
{
|
||||||
|
constexpr char sep = '/';
|
||||||
|
size_t i = s.rfind(sep, s.length());
|
||||||
|
|
||||||
|
if (i != std::string::npos)
|
||||||
|
{
|
||||||
|
return s.substr(0, i);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -191,6 +191,7 @@ name + "." + std::to_string(vm().getTrajectory()) + "." + resultFileExt
|
|||||||
#define MAX_PATH_LENGTH 512u
|
#define MAX_PATH_LENGTH 512u
|
||||||
int mkdir(const std::string dirName);
|
int mkdir(const std::string dirName);
|
||||||
std::string basename(const std::string &s);
|
std::string basename(const std::string &s);
|
||||||
|
std::string dirname(const std::string &s);
|
||||||
|
|
||||||
// default Schur convention
|
// default Schur convention
|
||||||
#ifndef HADRONS_DEFAULT_SCHUR
|
#ifndef HADRONS_DEFAULT_SCHUR
|
||||||
|
@ -122,14 +122,16 @@ MACRO_REDIRECT(__VA_ARGS__, envTmpLat5, envTmpLat4)(__VA_ARGS__)
|
|||||||
#define saveResult(ioStem, name, result)\
|
#define saveResult(ioStem, name, result)\
|
||||||
if (env().getGrid()->IsBoss())\
|
if (env().getGrid()->IsBoss())\
|
||||||
{\
|
{\
|
||||||
ResultWriter _writer(RESULT_FILE_NAME(ioStem));\
|
std::string _dirname = dirname(ioStem);\
|
||||||
std::string _basename = basename(ioStem);\
|
|
||||||
\
|
\
|
||||||
if (!mkdir(_basename))\
|
if (mkdir(_dirname))\
|
||||||
{\
|
{\
|
||||||
HADRON_ERROR(Io, "cannot create directory '" + _basename + "'");\
|
HADRON_ERROR(Io, "cannot create directory '" + _dirname + "'");\
|
||||||
|
}\
|
||||||
|
{\
|
||||||
|
ResultWriter _writer(RESULT_FILE_NAME(ioStem));\
|
||||||
|
write(_writer, name, result);\
|
||||||
}\
|
}\
|
||||||
write(_writer, name, result);\
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
Loading…
x
Reference in New Issue
Block a user