Skip to content
Snippets Groups Projects
Commit 0983e8b5 authored by Ken Martin's avatar Ken Martin
Browse files

is there any chance thiswill work on all platforms hmmm added removeAdirectory

parent 82339c4d
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@
=========================================================================*/
#include "kwsysPrivate.h"
#include KWSYS_HEADER(SystemTools.hxx)
#include KWSYS_HEADER(Directory.hxx)
#include KWSYS_HEADER(std/iostream)
#include KWSYS_HEADER(std/fstream)
......@@ -44,6 +45,10 @@ inline int Mkdir(const char* dir)
{
return _mkdir(dir);
}
inline int Rmdir(const char* dir)
{
return _rmdir(dir);
}
inline const char* Getcwd(char* buf, unsigned int len)
{
return _getcwd(buf, len);
......@@ -64,6 +69,10 @@ inline int Mkdir(const char* dir)
{
return mkdir(dir, 00777);
}
inline int Rmdir(const char* dir)
{
return rmdir(dir);
}
inline const char* Getcwd(char* buf, unsigned int len)
{
return getcwd(buf, len);
......@@ -1005,6 +1014,38 @@ bool SystemTools::RemoveFile(const char* source)
return unlink(source) != 0 ? false : true;
}
bool SystemTools::RemoveADirectory(const char* source)
{
Directory dir;
dir.Load(source);
size_t fileNum;
for (fileNum = 0; fileNum < dir.GetNumberOfFiles(); ++fileNum)
{
if (strcmp(dir.GetFile(static_cast<unsigned long>(fileNum)),".") &&
strcmp(dir.GetFile(static_cast<unsigned long>(fileNum)),".."))
{
kwsys_std::string fullPath = source;
fullPath += "/";
fullPath += dir.GetFile(static_cast<unsigned long>(fileNum));
if(SystemTools::FileIsDirectory(fullPath.c_str()))
{
if (!SystemTools::RemoveADirectory(fullPath.c_str()))
{
return false;
}
}
else
{
if(!SystemTools::RemoveFile(fullPath.c_str()))
{
return false;
}
}
}
}
return (Rmdir(source) == 0);
}
/**
* Find the file the given name. Searches the given path and then
......@@ -1042,9 +1083,10 @@ kwsys_std::string SystemTools::FindFile(const char* name,
* the system search path. Returns the full path to the executable if it is
* found. Otherwise, the empty string is returned.
*/
kwsys_std::string SystemTools::FindProgram(const char* name,
const kwsys_std::vector<kwsys_std::string>& userPaths,
bool no_system_path)
kwsys_std::string SystemTools::FindProgram(
const char* name,
const kwsys_std::vector<kwsys_std::string>& userPaths,
bool no_system_path)
{
if(!name)
{
......
......@@ -150,6 +150,9 @@ public:
///! Remove a file.
static bool RemoveFile(const char* source);
///! Remove a directory
static bool RemoveADirectory(const char* source);
///! Find a file in the system PATH, with optional extra paths.
static kwsys_std::string FindFile(const char* name,
const kwsys_std::vector<kwsys_std::string>& path= kwsys_std::vector<kwsys_std::string>());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment