Merge pull request 'Fix several issues with file setup' (#2) from issue-1 into main
Reviewed-on: #2
This commit is contained in:
commit
316a1bc18b
2 changed files with 37 additions and 14 deletions
|
@ -341,11 +341,7 @@ int moduleWelcomeV1_00
|
||||||
welcomeIn->itfVerMajor,welcomeIn->itfVerMinor);
|
welcomeIn->itfVerMajor,welcomeIn->itfVerMinor);
|
||||||
|
|
||||||
if (!RobotSettings)
|
if (!RobotSettings)
|
||||||
{
|
|
||||||
LogSimplix.error("#Robot XML-Path not found: (%s) or (%s) %s\n\n",
|
|
||||||
GetLocalDir(), GetDataDir(), RobPathXMLRel);
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
|
||||||
|
|
||||||
LogSimplix.debug("#Robot name: %s\n", RobName);
|
LogSimplix.debug("#Robot name: %s\n", RobName);
|
||||||
LogSimplix.debug("#Robot directory: %s\n", RobPathDirRel);
|
LogSimplix.debug("#Robot directory: %s\n", RobPathDirRel);
|
||||||
|
|
|
@ -55,24 +55,51 @@ static bool needs_update(const struct version &src, const struct version &dst)
|
||||||
|
|
||||||
static int update(const std::string &file)
|
static int update(const std::string &file)
|
||||||
{
|
{
|
||||||
const char *datadir = GfDataDir(), *localdir = GfLocalDir();
|
int ret = -1;
|
||||||
|
char *dstdir = nullptr;
|
||||||
|
std::string srcpath = std::string(GfDataDir()) + file,
|
||||||
|
dstpath = std::string(GfLocalDir()) + file;
|
||||||
|
const char *sp = srcpath.c_str(), *dp = dstpath.c_str();
|
||||||
|
std::ifstream src(srcpath, std::ios::binary);
|
||||||
|
std::ofstream dst;
|
||||||
|
|
||||||
if (!datadir)
|
if (!src.is_open())
|
||||||
{
|
{
|
||||||
GfLogError("GfDataDir failed\n");
|
GfLogError("Failed to open file for reading: %s\n", sp);
|
||||||
return -1;
|
goto end;
|
||||||
}
|
}
|
||||||
else if (!localdir)
|
else if (!(dstdir = GfFileGetDirName(dp)))
|
||||||
{
|
{
|
||||||
GfLogError("GfLocalDir failed\n");
|
GfLogError("GfFileGetDirName %s failed\n", dp);
|
||||||
return -1;
|
goto end;
|
||||||
|
}
|
||||||
|
else if (GfDirCreate(dstdir) != GF_DIR_CREATED)
|
||||||
|
{
|
||||||
|
GfLogError("Failed to created directory: %s\n", dstdir);
|
||||||
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ifstream src(std::string(datadir) + file, std::ios::binary);
|
dst.open(dstpath, std::ios::binary);
|
||||||
std::ofstream dst(std::string(localdir) + file, std::ios::binary);
|
|
||||||
|
if (!dst.is_open())
|
||||||
|
{
|
||||||
|
GfLogError("Failed to open file for writing: %s\n", dp);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
dst << src.rdbuf();
|
dst << src.rdbuf();
|
||||||
return 0;
|
|
||||||
|
if (!dst.good())
|
||||||
|
{
|
||||||
|
GfLogError("Failed to write from %s to %s\n", sp, dp);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
end:
|
||||||
|
free(dstdir);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int process(const std::string &file)
|
static int process(const std::string &file)
|
||||||
|
|
Loading…
Reference in a new issue