return Glib::file_test (p.to_string(), Glib::FILE_TEST_EXISTS);
}
-bool
-exists_and_writable (const path & p)
-{
- /* writable() really reflects the whole folder, but if for any
- reason the session state file can't be written to, still
- make us unwritable.
- */
-
- struct stat statbuf;
-
- if (g_stat (p.to_string().c_str(), &statbuf) != 0) {
- /* doesn't exist - not writable */
- return false;
- } else {
- if (!(statbuf.st_mode & S_IWUSR)) {
- /* exists and is not writable */
- return false;
- }
- /* filesystem may be mounted read-only, so even though file
- * permissions permit access, the mount status does not.
- * access(2) seems like the best test for this.
- */
- if (g_access (p.to_string().c_str(), W_OK) != 0) {
- return false;
- }
- }
-
- return true;
-}
-
-
bool
is_directory (const path & p)
{
}
-/** Take a (possibly) relative path and make it absolute */
-path
-get_absolute_path (const path & p)
-{
- Glib::RefPtr<Gio::File> f = Gio::File::create_for_path (p.to_string ());
- return f->get_path ();
-}
-
-/** @return true if a and b have the same inode */
-bool
-inodes_same (const path& a, const path& b)
-{
- struct stat bA;
- int const rA = g_stat (a.to_string().c_str(), &bA);
- struct stat bB;
- int const rB = g_stat (b.to_string().c_str(), &bB);
-
- return (rA == 0 && rB == 0 && bA.st_ino == bB.st_ino);
-}
-
-/** Find out if `needle' is a file or directory within the
- * directory `haystack'.
- * @return true if it is.
- */
-bool
-path_is_within (path const & haystack, path needle)
-{
- while (1) {
- if (inodes_same (haystack, needle)) {
- return true;
- }
-
- needle = needle.branch_path ();
- if (needle.to_string().empty() || needle.to_string() == "/") {
- break;
- }
- }
-
- return false;
-}
-
} // namespace sys
} // namespace PBD