mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-07 23:35:03 +01:00
Move three file utility functions from pbd/filesystem.h to pbd/file_utils.h
git-svn-id: svn://localhost/ardour2/branches/3.0@12863 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
6aee537109
commit
e26e59b006
9 changed files with 79 additions and 74 deletions
|
|
@ -19,6 +19,9 @@
|
|||
|
||||
#include <algorithm>
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
#include <glibmm/fileutils.h>
|
||||
#include <glibmm/miscutils.h>
|
||||
#include <glibmm/pattern.h>
|
||||
|
|
@ -169,4 +172,39 @@ copy_files(const std::string & from_path, const std::string & to_dir)
|
|||
}
|
||||
}
|
||||
|
||||
std::string
|
||||
get_absolute_path (const std::string & p)
|
||||
{
|
||||
Glib::RefPtr<Gio::File> f = Gio::File::create_for_path (p);
|
||||
return f->get_path ();
|
||||
}
|
||||
|
||||
bool
|
||||
equivalent_paths (const std::string& a, const std::string& b)
|
||||
{
|
||||
struct stat bA;
|
||||
int const rA = g_stat (a.c_str(), &bA);
|
||||
struct stat bB;
|
||||
int const rB = g_stat (b.c_str(), &bB);
|
||||
|
||||
return (rA == 0 && rB == 0 && bA.st_dev == bB.st_dev && bA.st_ino == bB.st_ino);
|
||||
}
|
||||
|
||||
bool
|
||||
path_is_within (std::string const & haystack, std::string needle)
|
||||
{
|
||||
while (1) {
|
||||
if (equivalent_paths (haystack, needle)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
needle = Glib::path_get_dirname (needle);
|
||||
if (needle == "." || needle == "/") {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
} // namespace PBD
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue