// This file is a part of the Framsticks GDK. // Copyright (C) 1999-2014 Maciej Komosinski and Szymon Ulatowski. See LICENSE.txt for details. // Refer to http://www.framsticks.com/ for further information. #include "stdiofile.h" #include #include #include #include VirtFILE* StdioFileSystem::Vfopen(const char *path, const char *mode) { //printFM("Vfopen %s %s",path,mode); #ifdef USE_MFILE MFILE *f = mfopen(path, mode); #else #ifdef _WIN32 FILE *f = _wfopen(Convert::utf8ToUtf16(path).c_str(), Convert::strTOwstr(mode).c_str()); #else FILE *f = fopen(path, mode); #endif #endif //printFM("%p",f); if (f) return new StdioFILE(f, path); else return 0; } VirtDIR* StdioFileSystem::Vopendir(const char* path) { //printFM("Vopendir %s",path); #ifdef _WIN32 DIRTYPE *d = wopendir(Convert::utf8ToUtf16(path).c_str()); #else DIR *d = opendir(path); #endif //printFM("%p",d); if (d) return new StdioDIR(d); else return 0; } int StdioFileSystem::Vfexists(const char* path) { return fileExists(path); } void StdioFILE::setStdio() { #ifndef NO_STD_IN_OUT_ERR static StdioFILEDontClose si(stdin); static StdioFILEDontClose so(stdout); static StdioFILEDontClose se(stderr); setVstdin(&si); setVstdout(&so); setVstderr(&se); #endif } dirent* StdioDIR::Vreaddir() { //printFM("Vreaddir %s",dir); #ifdef _WIN32 wdirent *wde=wreaddir(dir); if (wde==NULL) return NULL; strcpy(de.d_name, Convert::wstrToUtf8(wde->d_name).c_str()); return &de; #else return readdir(dir); #endif }