#include #include #include #include #include #include struct __argv *av; char * avbuf[1]; char * cmdlinebuf = "fat:/nitrodir.nds"; //--------------------------------------------------------------------------------- void dirlist(char* path) { //--------------------------------------------------------------------------------- DIR* pdir = opendir(path); char *dnbuf; if (pdir != NULL) { while(true) { struct dirent* pent = readdir(pdir); if(pent == NULL) break; if(strcmp(".", pent->d_name) != 0 && strcmp("..", pent->d_name) != 0) { dnbuf = malloc(strlen(pent->d_name)+strlen(path)+2); sprintf(dnbuf, "%s/%s", (strcmp("/",path) == 0)?"":path, pent->d_name); struct stat *statbuf = malloc(sizeof(statbuf)); stat(dnbuf, statbuf); if(S_ISDIR(statbuf->st_mode)) { printf("%s \n", dnbuf); dirlist(dnbuf); } else { printf("%s (%d)\n", dnbuf, (int)statbuf->st_size); } free(dnbuf); free(statbuf); } } closedir(pdir); } else { printf("opendir() failure.\n"); } } //--------------------------------------------------------------------------------- int main(int argc, char **argv) { //--------------------------------------------------------------------------------- // Initialise the console, required for printf consoleDemoInit(); iprintf( "argc=%d\n", argc ); iprintf( "argv[0]=%s\n", argv[0] ); if( argc < 1 ){ av = __system_argv; avbuf[0] = cmdlinebuf; av->argvMagic = ARGV_MAGIC; //!< argv magic number, set to 0x5f617267 ('_arg') if valid av->argc = 1; //!< internal use, number of arguments av->argv = avbuf; //!< internal use, argv pointer } if (nitroFSInit()) { dirlist("/"); } else { iprintf("nitroFSInit failure: terminating\n"); } while(1) { swiWaitForVBlank(); } return 0; }