X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Ffilesystem.cc;h=a154ed8b8eb70dbd454fc884c94312e11e52e096;hb=6b1659a29bb9b5c4a31cb0aec371842df0585034;hp=cd88bac6a9fdaa825a0ae312ba1b549537ca81ec;hpb=4cda435203600e7e422525c6336baab483d6f009;p=ardour.git diff --git a/libs/pbd/filesystem.cc b/libs/pbd/filesystem.cc index cd88bac6a9..a154ed8b8e 100644 --- a/libs/pbd/filesystem.cc +++ b/libs/pbd/filesystem.cc @@ -93,37 +93,6 @@ exists (const path & p) 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) { @@ -184,47 +153,7 @@ rename (const path & from_path, const path & to_path) throw filesystem_error(g_strerror(errno), errno); } } - -bool -copy_file(const std::string & from_path, const std::string & to_path) -{ - if (!Glib::file_test (from_path, Glib::FILE_TEST_EXISTS)) return false; - - Glib::RefPtr from_file = Gio::File::create_for_path(from_path); - Glib::RefPtr to_file = Gio::File::create_for_path(to_path); - - try - { - from_file->copy (to_file); - } - catch(const Glib::Exception& ex) - { - error << string_compose (_("Unable to Copy file %1 to %2 (%3)"), - from_path, to_path, ex.what()) - << endmsg; - return false; - } - return true; -} - -static -bool accept_all_files (string const &, void *) -{ - return true; -} -void -copy_files(const std::string & from_path, const std::string & to_dir) -{ - PathScanner scanner; - vector* files = scanner (from_path, accept_all_files, 0, true, false); - for (vector::iterator i = files->begin(); i != files->end(); ++i) { - std::string from = Glib::build_filename (from_path, **i); - std::string to = Glib::build_filename (to_dir, **i); - copy_file (from, to); - } -} - string basename (const path & p) { @@ -251,47 +180,6 @@ extension (const path & p) } -/** Take a (possibly) relative path and make it absolute */ -path -get_absolute_path (const path & p) -{ - Glib::RefPtr 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 = stat (a.to_string().c_str(), &bA); - struct stat bB; - int const rB = 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