Skip to content
Snippets Groups Projects
Commit 4ad384d4 authored by Brad King's avatar Brad King
Browse files

ENH: Added kwsys SystemTools::CreateSymlink and SystemTools::ReadSymlink.

parent c6e64496
No related branches found
No related tags found
No related merge requests found
......@@ -2356,6 +2356,44 @@ bool SystemTools::FileIsSymlink(const char* name)
#endif
}
#if defined(_WIN32) && !defined(__CYGWIN__)
bool SystemTools::CreateSymlink(const char*, const char*)
{
return false;
}
#else
bool SystemTools::CreateSymlink(const char* origName, const char* newName)
{
return symlink(origName, newName) >= 0;
}
#endif
#if defined(_WIN32) && !defined(__CYGWIN__)
bool SystemTools::ReadSymlink(const char*, kwsys_stl::string&)
{
return false;
}
#else
bool SystemTools::ReadSymlink(const char* newName,
kwsys_stl::string& origName)
{
char buf[KWSYS_SYSTEMTOOLS_MAXPATH+1];
int count =
static_cast<int>(readlink(newName, buf, KWSYS_SYSTEMTOOLS_MAXPATH));
if(count >= 0)
{
// Add null-terminator.
buf[count] = 0;
origName = buf;
return true;
}
else
{
return false;
}
}
#endif
int SystemTools::ChangeDirectory(const char *dir)
{
return Chdir(dir);
......
......@@ -588,6 +588,18 @@ public:
unsigned long length = 256,
double percent_bin = 0.05);
/**
* Create a symbolic link if the platform supports it. Returns whether
* creation succeded.
*/
static bool CreateSymlink(const char* origName, const char* newName);
/**
* Read the contents of a symbolic link. Returns whether reading
* succeded.
*/
static bool ReadSymlink(const char* newName, kwsys_stl::string& origName);
/**
* Try to locate the file 'filename' in the directory 'dir'.
* If 'filename' is a fully qualified filename, the basename of the file is
......
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