From fb82257d03d8ad01b2353513f11981308ee47126 Mon Sep 17 00:00:00 2001
From: Jeffrey Pfau <jeffrey@endrift.com>
Date: Mon, 24 Aug 2015 19:18:32 -0700
Subject: [PATCH] 3DS: Use newlib fs functions unless told otherwise

---
 CMakeLists.txt             | 6 ++++++
 src/platform/3ds/3ds-vfs.c | 2 ++
 src/platform/3ds/main.c    | 2 ++
 src/util/vfs.c             | 2 +-
 4 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 482a8ce09..9b23d8327 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -176,6 +176,12 @@ elseif(3DS)
 	include_directories(${CMAKE_BINARY_DIR})
 	list(APPEND OS_LIB sf2d ctru)
 	file(GLOB OS_SRC ${CMAKE_SOURCE_DIR}/src/platform/3ds/*.c ${CMAKE_BINARY_DIR}/font.c)
+	if(USE_VFS_3DS)
+		add_definitions(-DUSE_VFS_3DS)
+	else()
+		add_definitions(-DUSE_VFS_FILE)
+		list(APPEND VFS_SRC ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-file.c ${CMAKE_SOURCE_DIR}/src/util/vfs/vfs-dirent.c)
+	endif()
 	source_group("3DS-specific code" FILES ${OS_SRC})
 endif()
 
diff --git a/src/platform/3ds/3ds-vfs.c b/src/platform/3ds/3ds-vfs.c
index 9875f681b..0538b846a 100644
--- a/src/platform/3ds/3ds-vfs.c
+++ b/src/platform/3ds/3ds-vfs.c
@@ -5,6 +5,7 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 #include "3ds-vfs.h"
 
+#ifdef USE_VFS_3DS
 #include "util/memory.h"
 #include "util/string.h"
 
@@ -244,3 +245,4 @@ static const char* _vd3deName(struct VDirEntry* vde) {
 	}
 	return vd3de->utf8Name;
 }
+#endif
diff --git a/src/platform/3ds/main.c b/src/platform/3ds/main.c
index 9eff4ac47..994bff8af 100644
--- a/src/platform/3ds/main.c
+++ b/src/platform/3ds/main.c
@@ -64,6 +64,7 @@ int main() {
 	aptInit();
 	hidInit(0);
 	fsInit();
+	sdmcInit();
 
 	sf2d_init();
 	sf2d_set_clear_color(0);
@@ -139,6 +140,7 @@ cleanup:
 	sf2d_free_texture(tex);
 	sf2d_fini();
 
+	sdmcExit();
 	fsExit();
 	gfxExit();
 	hidExit();
diff --git a/src/util/vfs.c b/src/util/vfs.c
index ac282ec23..0ceea78e9 100644
--- a/src/util/vfs.c
+++ b/src/util/vfs.c
@@ -34,7 +34,7 @@ struct VFile* VFileOpen(const char* path, int flags) {
 		break;
 	}
 	return VFileFOpen(path, chflags);
-#elif defined(_3DS)
+#elif defined(USE_VFS_3DS)
 	int ctrFlags = FS_OPEN_READ;
 	switch (flags & O_ACCMODE) {
 	case O_WRONLY: