From 6314a799aa7e20789562d2e877949dfebb6194ce Mon Sep 17 00:00:00 2001
From: Zach Hilman <zachhilman@gmail.com>
Date: Fri, 24 Aug 2018 22:15:32 -0400
Subject: [PATCH] file_sys/crypto: Fix missing/unnecessary includes

---
 src/core/crypto/key_manager.cpp          | 5 ++---
 src/core/crypto/key_manager.h            | 1 +
 src/core/crypto/xts_encryption_layer.cpp | 1 +
 src/core/crypto/xts_encryption_layer.h   | 1 -
 src/core/file_sys/sdmc_factory.cpp       | 2 ++
 src/core/file_sys/sdmc_factory.h         | 1 +
 src/core/file_sys/xts_archive.cpp        | 2 ++
 src/core/file_sys/xts_archive.h          | 1 +
 src/core/loader/nax.cpp                  | 1 -
 9 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp
index 0b14bf15c..0b6c07de8 100644
--- a/src/core/crypto/key_manager.cpp
+++ b/src/core/crypto/key_manager.cpp
@@ -133,7 +133,7 @@ KeyManager::KeyManager() {
     }
 
     AttemptLoadKeyFile(yuzu_keys_dir, hactool_keys_dir, "title.keys", true);
-    AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, "title.keys_autogenerated", false);
+    AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, "title.keys_autogenerated", true);
 }
 
 void KeyManager::LoadFromFile(const std::string& filename, bool is_title_keys) {
@@ -223,8 +223,7 @@ void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname,
             << "# If you are experiencing issues involving keys, it may help to delete this file\n";
     }
 
-    file << std::endl
-         << fmt::format("{} = {}", keyname, Common::HexArrayToString(key)) << std::endl;
+    file << fmt::format("\n{} = {}", keyname, Common::HexArrayToString(key));
     AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, filename, title_key);
 }
 
diff --git a/src/core/crypto/key_manager.h b/src/core/crypto/key_manager.h
index 7a8728f76..7ca3e6cbc 100644
--- a/src/core/crypto/key_manager.h
+++ b/src/core/crypto/key_manager.h
@@ -6,6 +6,7 @@
 
 #include <array>
 #include <string>
+#include <string_view>
 #include <type_traits>
 #include <vector>
 #include <boost/container/flat_map.hpp>
diff --git a/src/core/crypto/xts_encryption_layer.cpp b/src/core/crypto/xts_encryption_layer.cpp
index c6e5df1ce..c10832cfe 100644
--- a/src/core/crypto/xts_encryption_layer.cpp
+++ b/src/core/crypto/xts_encryption_layer.cpp
@@ -2,6 +2,7 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include <algorithm>
 #include <cstring>
 #include "common/assert.h"
 #include "core/crypto/xts_encryption_layer.h"
diff --git a/src/core/crypto/xts_encryption_layer.h b/src/core/crypto/xts_encryption_layer.h
index 1e1acaf4a..7a1f1dc64 100644
--- a/src/core/crypto/xts_encryption_layer.h
+++ b/src/core/crypto/xts_encryption_layer.h
@@ -4,7 +4,6 @@
 
 #pragma once
 
-#include <vector>
 #include "core/crypto/aes_util.h"
 #include "core/crypto/encryption_layer.h"
 #include "core/crypto/key_manager.h"
diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp
index e4df5c4d0..d66a9c9a4 100644
--- a/src/core/file_sys/sdmc_factory.cpp
+++ b/src/core/file_sys/sdmc_factory.cpp
@@ -16,6 +16,8 @@ SDMCFactory::SDMCFactory(VirtualDir dir_)
                                     return std::make_shared<NAX>(file, id)->GetDecrypted();
                                 })) {}
 
+SDMCFactory::~SDMCFactory() = default;
+
 ResultVal<VirtualDir> SDMCFactory::Open() {
     return MakeResult<VirtualDir>(dir);
 }
diff --git a/src/core/file_sys/sdmc_factory.h b/src/core/file_sys/sdmc_factory.h
index 4eac92621..ea12149de 100644
--- a/src/core/file_sys/sdmc_factory.h
+++ b/src/core/file_sys/sdmc_factory.h
@@ -16,6 +16,7 @@ class RegisteredCache;
 class SDMCFactory {
 public:
     explicit SDMCFactory(VirtualDir dir);
+    ~SDMCFactory();
 
     ResultVal<VirtualDir> Open();
     std::shared_ptr<RegisteredCache> GetSDMCContents() const;
diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp
index 605c1a283..552835738 100644
--- a/src/core/file_sys/xts_archive.cpp
+++ b/src/core/file_sys/xts_archive.cpp
@@ -2,7 +2,9 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
+#include <algorithm>
 #include <array>
+#include <cstring>
 #include <regex>
 #include <string>
 #include <mbedtls/md.h>
diff --git a/src/core/file_sys/xts_archive.h b/src/core/file_sys/xts_archive.h
index 5249ad026..55d2154a6 100644
--- a/src/core/file_sys/xts_archive.h
+++ b/src/core/file_sys/xts_archive.h
@@ -8,6 +8,7 @@
 #include <vector>
 #include "common/common_types.h"
 #include "common/swap.h"
+#include "core/crypto/key_manager.h"
 #include "core/file_sys/content_archive.h"
 #include "core/file_sys/vfs.h"
 #include "core/loader/loader.h"
diff --git a/src/core/loader/nax.cpp b/src/core/loader/nax.cpp
index b35fdc3f8..b46d81c02 100644
--- a/src/core/loader/nax.cpp
+++ b/src/core/loader/nax.cpp
@@ -3,7 +3,6 @@
 // Refer to the license.txt file included.
 
 #include "common/logging/log.h"
-#include "core/core.h"
 #include "core/file_sys/content_archive.h"
 #include "core/file_sys/romfs.h"
 #include "core/file_sys/xts_archive.h"