]> Chaos Git - corbenik/ctrulib.git/commitdiff
use stdio and malloc
authorDave Murphy <davem@devkitpro.org>
Fri, 26 Dec 2014 01:11:13 +0000 (01:11 +0000)
committerDave Murphy <davem@devkitpro.org>
Fri, 26 Dec 2014 01:11:13 +0000 (01:11 +0000)
examples/sdmc/README.md
examples/sdmc/source/main.c

index 69ab59684257f4df68fb6fa1ee830913fe6a1d0c..4658c41dfe59717756b9e07749bf319e84527a96 100644 (file)
@@ -1,6 +1,5 @@
 sdmc
 =======
 
-very simple example of how to access SD files with ctrulib; requires proper exheader flags for direct SDMC access.
+very simple example of how to access SD files with libctru;
 
-**WARNING/TODO**: THIS EXAMPLE IS OUTDATED AND NEEDS TO BE FIXED - PLEASE DO NOT LOOK AT IT UNTIL IT IS UPDATED
index c65292f37ac626bc023e2c2fdf32e0f8310658f2..b946f0afce5e97c8d6a86912e9f051fcd52314c3 100644 (file)
@@ -3,9 +3,11 @@
 ///////////////////////////////////////
 
 //this example shows you how to load a binary image file from the SD card and display it on the lower screen
-//for this to work you should copy test.bin to the root of your SD card
+//for this to work you should copy test.bin to same folder as your .3dsx
 //this file was generated with GIMP by saving a 240x320 image to raw RGB
 #include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
 
 #include <3ds.h>
 #include "costable.h"
@@ -42,42 +44,33 @@ void renderEffect()
 
 int main(int argc, char** argv)
 {
-       //initialize the services we're going to be using
-       srvInit(); //needed for everything
-       aptInit(); //needed for everything
-       hidInit(NULL); //needed for input
+
        gfxInit(); //makes displaying to screen easier
-       fsInit(); //needed for filesystem stuff
-
-       u64 size;
-       u32 bytesRead;
-       Handle fileHandle;
-       //setup SDMC archive
-       FS_archive sdmcArchive=(FS_archive){ARCH_SDMC, (FS_path){PATH_EMPTY, 1, (u8*)""}};
-       //create file path struct (note : FS_makePath actually only supports PATH_CHAR, it will change in the future)
-       FS_path filePath=FS_makePath(PATH_CHAR, "/test.bin");
-
-       //open file
-       Result ret=FSUSER_OpenFileDirectly(NULL, &fileHandle, sdmcArchive, filePath, FS_OPEN_READ, FS_ATTRIBUTE_NONE);
-       //check for errors : exit if there is one
-       if(ret)goto exit;
-
-       //get file size
-       ret=FSFILE_GetSize(fileHandle, &size);
-       if(ret)goto exit;
-
-       //allocate a buffer on linear heap (could just be a malloc fwiw)
-       buffer=linearAlloc(size);
+
+       FILE *file = fopen("test.bin","rb");
+       if (file == NULL) goto exit;
+
+       // seek to end of file
+       fseek(file,0,SEEK_END);
+
+       // file pointer tells us the size
+       off_t size = ftell(file);
+
+       // seek back to start
+       fseek(file,0,SEEK_SET);
+
+       //allocate a buffer
+       buffer=malloc(size);
        if(!buffer)goto exit;
 
        //read contents !
-       ret=FSFILE_Read(fileHandle, &bytesRead, 0x0, buffer, size);
-       if(ret || size!=bytesRead)goto exit;
+       off_t bytesRead = fread(buffer,1,size,file);
 
        //close the file because we like being nice and tidy
-       ret=FSFILE_Close(fileHandle);
-       if(ret)goto exit;
-       
+       fclose(file);
+
+       if(size!=bytesRead)goto exit;
+
        while(aptMainLoop())
        {
                //exit when user hits B
@@ -98,13 +91,8 @@ int main(int argc, char** argv)
        //cleanup and return
        //returning from main() returns to hbmenu when run under ninjhax
        exit:
-       //closing all handles is super important
-       svcCloseHandle(fileHandle);
+
        //closing all services even more so
-       fsExit();
        gfxExit();
-       hidExit();
-       aptExit();
-       srvExit();
        return 0;
 }