FileSystem::FileSystem(const char *argv0, bool allowSymlinks) { p = new FileSystemPrivate; p->havePathCache = false; /* Image extensions */ p->extensions[Image].push_back("jpg"); p->extensions[Image].push_back("png"); /* Audio extensions */ const Sound_DecoderInfo **di; for (di = Sound_AvailableDecoders(); *di; ++di) { const char **ext; for (ext = (*di)->extensions; *ext; ++ext) { /* All reported extensions are uppercase, * so we need to hammer them down first */ char buf[16]; for (size_t i = 0; i < sizeof(buf); ++i) { buf[i] = tolower((*ext)[i]); if (!buf[i]) break; } p->extensions[Audio].push_back(buf); } } if (rgssVer >= 2 && !contains(p->extensions[Audio], std::string("ogg"))) p->extensions[Audio].push_back("ogg"); p->extensions[Audio].push_back("mid"); p->extensions[Audio].push_back("midi"); /* Font extensions */ p->extensions[Font].push_back("ttf"); p->extensions[Font].push_back("otf"); PHYSFS_init(argv0); PHYSFS_registerArchiver(&RGSS1_Archiver); PHYSFS_registerArchiver(&RGSS2_Archiver); PHYSFS_registerArchiver(&RGSS3_Archiver); if (allowSymlinks) PHYSFS_permitSymbolicLinks(1); }
static void output_decoders(void) { const Sound_DecoderInfo **rc = Sound_AvailableDecoders(); const Sound_DecoderInfo **i; const char **ext; printf("Supported sound formats:\n"); if (rc == NULL) printf(" * Apparently, NONE!\n"); else { for (i = rc; *i != NULL; i++) { printf(" * %s\n", (*i)->description); for (ext = (*i)->extensions; *ext != NULL; ext++) printf(" File extension \"%s\"\n", *ext); printf(" Written by %s.\n %s\n\n", (*i)->author, (*i)->url); } /* for */ } /* else */ printf("\n"); } /* output_decoders */