fix skpdiff viewer bug when using relative paths

BUG=skia:1463
R=djsollen@google.com

Review URL: https://codereview.chromium.org/21601002

git-svn-id: http://skia.googlecode.com/svn/trunk@10515 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
zachr@google.com 2013-08-02 15:54:30 +00:00
parent 89066e5cd5
commit a479aa1366
3 changed files with 35 additions and 2 deletions

View File

@ -164,12 +164,15 @@ void SkDiffContext::outputRecords(SkWStream& stream, bool useJSONP) {
while (NULL != currentRecord) {
stream.writeText(" {\n");
SkString baselineAbsPath = get_absolute_path(currentRecord->fBaselinePath);
SkString testAbsPath = get_absolute_path(currentRecord->fTestPath);
stream.writeText(" \"baselinePath\": \"");
stream.writeText(currentRecord->fBaselinePath.c_str());
stream.writeText(baselineAbsPath.c_str());
stream.writeText("\",\n");
stream.writeText(" \"testPath\": \"");
stream.writeText(currentRecord->fTestPath.c_str());
stream.writeText(testAbsPath.c_str());
stream.writeText("\",\n");
stream.writeText(" \"diffs\": [\n");

View File

@ -15,10 +15,15 @@
# include <glob.h>
#endif
#if SK_BUILD_FOR_MAC
# include <sys/syslimits.h> // PATH_MAX is here for Macs
#endif
#if SK_BUILD_FOR_WIN32
# include <windows.h>
#endif
#include <stdlib.h>
#include <time.h>
#include "SkOSFile.h"
#include "skpdiff_util.h"
@ -181,3 +186,21 @@ bool glob_files(const char globPattern[], SkTArray<SkString>* entries) {
return false;
#endif
}
SkString get_absolute_path(const SkString& path) {
#if SK_BUILD_FOR_MAC || SK_BUILD_FOR_UNIX || SK_BUILD_FOR_ANDROID
SkString fullPath(PATH_MAX + 1);
if (realpath(path.c_str(), fullPath.writable_str()) == NULL) {
fullPath.reset();
}
return fullPath;
#elif SK_BUILD_FOR_WIN32
SkString fullPath(MAX_PATH);
if (_fullpath(fullPath.writable_str(), path.c_str(), MAX_PATH) == NULL) {
fullPath.reset();
}
return fullPath;
#else
return SkString();
#endif
}

View File

@ -49,5 +49,12 @@ bool get_directory(const char path[], SkTArray<SkString>* entries);
*/
bool glob_files(const char globPattern[], SkTArray<SkString>* entries);
/**
* Gets the absolute version of the given path.
* @param path The absolute or relative path to expand
* @return The absolute path of the given path on success, or an empty string on failure.
*/
SkString get_absolute_path(const SkString& path);
#endif