From 9a484ff00dd71b94c34712759fc4a863a99c910a Mon Sep 17 00:00:00 2001
From: "Anthony J. Thibault" <tony@highfidelity.io>
Date: Fri, 6 Nov 2015 15:33:06 -0800
Subject: [PATCH] Fixes for windows

---
 tools/cache-extract/CMakeLists.txt          |  1 +
 tools/cache-extract/src/CacheExtractApp.cpp | 22 ++++++++++++---------
 2 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/tools/cache-extract/CMakeLists.txt b/tools/cache-extract/CMakeLists.txt
index 045fa996d2..1aaa4d9d04 100644
--- a/tools/cache-extract/CMakeLists.txt
+++ b/tools/cache-extract/CMakeLists.txt
@@ -3,4 +3,5 @@ set(TARGET_NAME cache-extract)
 setup_hifi_project()
 
 link_hifi_libraries()
+copy_dlls_beside_windows_executable()
 
diff --git a/tools/cache-extract/src/CacheExtractApp.cpp b/tools/cache-extract/src/CacheExtractApp.cpp
index a0d0bf54ec..0cfaef3f83 100644
--- a/tools/cache-extract/src/CacheExtractApp.cpp
+++ b/tools/cache-extract/src/CacheExtractApp.cpp
@@ -14,6 +14,7 @@
 #include <QStandardPaths>
 #include <QDir>
 #include <QtNetwork/QAbstractNetworkCache>
+#include <QDataStream>
 
 // extracted from qnetworkdiskcache.cpp
 #define CACHE_VERSION 8
@@ -21,19 +22,18 @@ enum {
    CacheMagic = 0xe8,
    CurrentCacheVersion = CACHE_VERSION
 };
-#define DATA_DIR QLatin1String("data")
 
 CacheExtractApp::CacheExtractApp(int& argc, char** argv) :
     QCoreApplication(argc, argv)
 {
     QString myDataLoc = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
-    int lastSlash = myDataLoc.lastIndexOf(QDir::separator());
-    QString cachePath = myDataLoc.leftRef(lastSlash).toString() + QDir::separator() +
-        "High Fidelity" + QDir::separator() + "Interface" + QDir::separator() +
-        DATA_DIR + QString::number(CACHE_VERSION) + QLatin1Char('/');
+    int lastSlash = myDataLoc.lastIndexOf("/");
+    QString cachePath = myDataLoc.leftRef(lastSlash).toString() + "/" +
+        "High Fidelity" + "/" + "Interface" + "/" +
+        "data" + QString::number(CACHE_VERSION) + "/";
 
-    QString outputPath = myDataLoc.leftRef(lastSlash).toString() + QDir::separator() +
-        "High Fidelity" + QDir::separator() + "Interface" + QDir::separator() + "extracted";
+    QString outputPath = myDataLoc.leftRef(lastSlash).toString() + "/" +
+        "High Fidelity" + "/" + "Interface" + "/" + "extracted";
 
     qDebug() << "Searching cachePath = " << cachePath << "...";
 
@@ -60,9 +60,9 @@ CacheExtractApp::CacheExtractApp(int& argc, char** argv) :
         MyMetaData metaData;
         if (extractFile(fileList.at(i), metaData, contents)) {
             QString outFileName = outputPath + metaData.url.path();
-            int lastSlash = outFileName.lastIndexOf(QDir::separator());
+            int lastSlash = outFileName.lastIndexOf("/");
             QString outDirName = outFileName.leftRef(lastSlash).toString();
-            QDir dir(outputPath);
+            QDir dir;
             dir.mkpath(outDirName);
             QFile out(outFileName);
             if (out.open(QIODevice::WriteOnly)) {
@@ -70,6 +70,9 @@ CacheExtractApp::CacheExtractApp(int& argc, char** argv) :
                 out.close();
                 qDebug().noquote() << metaData.url.toDisplayString();
             }
+            else {
+                qCritical() << "Error opening outputFile = " << outFileName;
+            }
         } else {
             qCritical() << "Error extracting = " << fileList.at(i);
         }
@@ -123,4 +126,5 @@ QDataStream &operator>>(QDataStream& in, MyMetaData& metaData) {
     in >> metaData.saveToDisk;
     in >> metaData.attributes;
     in >> metaData.rawHeaders;
+    return in;
 }