remove direct of realpath(2), replace with canonical_path() which is a no-op on windows

This commit is contained in:
Paul Davis 2013-07-11 14:57:16 -04:00
parent 2ddab2d2f6
commit 09e471545b
5 changed files with 31 additions and 39 deletions

View File

@ -31,6 +31,7 @@
#include "pbd/file_utils.h"
#include "pbd/textreceiver.h"
#include "pbd/failed_constructor.h"
#include "pbd/pathexpand.h"
#include "pbd/pthread_utils.h"
#ifdef BOOST_SP_ENABLE_DEBUG_HOOKS
#include "pbd/boost_debug.h"
@ -277,7 +278,7 @@ fixup_bundle_environment (int /*argc*/, char* argv[])
lpath.push_back (dir_path);
lpath.push_back ("share");
lpath.push_back ("locale");
localedir = realpath (Glib::build_filename (lpath).c_str(), NULL);
localedir = canonical_path (Glib::build_filename (lpath)).c_str();
}
#endif

View File

@ -27,6 +27,7 @@
#include <glibmm/miscutils.h>
#include "pbd/compose.h"
#include "pbd/pathexpand.h"
#include "pbd/error.h"
#include "ardour/filename_extensions.h"
@ -43,16 +44,10 @@ int
find_session (string str, string& path, string& snapshot, bool& isnew)
{
struct stat statbuf;
char buf[PATH_MAX+1];
isnew = false;
if (!realpath (str.c_str(), buf) && (errno != ENOENT && errno != ENOTDIR)) {
error << string_compose (_("Could not resolve path: %1 (%2)"), buf, strerror(errno)) << endmsg;
return -1;
}
str = buf;
str = canonical_path (str);
/* check to see if it exists, and what it is */

View File

@ -64,6 +64,7 @@
#include "pbd/enumwriter.h"
#include "pbd/error.h"
#include "pbd/file_utils.h"
#include "pbd/pathexpand.h"
#include "pbd/pathscanner.h"
#include "pbd/pthread_utils.h"
#include "pbd/stacktrace.h"
@ -128,14 +129,7 @@ Session::first_stage_init (string fullpath, string snapshot_name)
throw failed_constructor();
}
char buf[PATH_MAX+1];
if (!realpath (fullpath.c_str(), buf) && (errno != ENOENT)) {
error << string_compose(_("Could not use path %1 (%2)"), buf, strerror(errno)) << endmsg;
destroy ();
throw failed_constructor();
}
_path = string(buf);
_path = canonical_path (fullpath);
if (_path[_path.length()-1] != G_DIR_SEPARATOR) {
_path += G_DIR_SEPARATOR;
@ -2664,6 +2658,8 @@ Session::cleanup_sources (CleanupReport& rep)
bool used;
string spath;
int ret = -1;
string tmppath1;
string tmppath2;
_state_of_the_state = (StateOfTheState) (_state_of_the_state | InCleanup);
@ -2788,9 +2784,6 @@ Session::cleanup_sources (CleanupReport& rep)
i = tmp;
}
char tmppath1[PATH_MAX+1];
char tmppath2[PATH_MAX+1];
if (candidates) {
for (vector<string*>::iterator x = candidates->begin(); x != candidates->end(); ++x) {
@ -2799,19 +2792,10 @@ Session::cleanup_sources (CleanupReport& rep)
for (set<string>::iterator i = all_sources.begin(); i != all_sources.end(); ++i) {
if (realpath(spath.c_str(), tmppath1) == 0) {
error << string_compose (_("Cannot expand path %1 (%2)"),
spath, strerror (errno)) << endmsg;
continue;
}
tmppath1 = canonical_path (spath);
tmppath2 = canonical_path ((*i));
if (realpath((*i).c_str(), tmppath2) == 0) {
error << string_compose (_("Cannot expand path %1 (%2)"),
(*i), strerror (errno)) << endmsg;
continue;
}
if (strcmp(tmppath1, tmppath2) == 0) {
if (tmppath1 == tmppath2) {
used = true;
break;
}

View File

@ -18,8 +18,10 @@
*/
#include <vector>
#include <climits>
#include <iostream>
#include <climits>
#include <cerrno>
#include <cstdlib>
#include <regex.h>
@ -31,6 +33,21 @@
using std::string;
using std::vector;
string
PBD::canonical_path (const std::string& path)
{
#ifdef WIN32
return path;
#endif
char buf[PATH_MAX+1];
if (!realpath (path.c_str(), buf) && (errno != ENOENT)) {
return path;
}
return string (buf);
}
string
PBD::path_expand (string path)
{
@ -97,13 +114,7 @@ PBD::path_expand (string path)
/* canonicalize */
char buf[PATH_MAX+1];
if (realpath (path.c_str(), buf)) {
return buf;
} else {
return string();
}
return canonical_path (path);
}
string

View File

@ -22,6 +22,7 @@
#include <string>
namespace PBD {
std::string canonical_path (const std::string& path);
std::string path_expand (std::string path);
std::string search_path_expand (std::string path);
}