#include #include #include #include #include #if defined(__GNUC__) || defined(__WATCOMC__) || defined(__WIN32__) #include #include #include #include #endif #if defined(__unix__) || defined(__APPLE__) #define bool _bool #include #include #if defined(__APPLE__) #include #endif #if defined(__FreeBSD__) #include #endif #undef bool #endif #if defined(__WIN32__) #define WIN32_LEAN_AND_MEAN #define UNICODE #include #include #else #include #endif typedef int bool; typedef unsigned char byte; typedef unsigned short uint16; typedef unsigned int uint; typedef unsigned int FileSize; typedef unsigned long long uint64; #define false 0 #define true 1 #define null ((void *)0) #define MAX_LOCATION 797 #define MAX_FILENAME 274 #define MAX_EXTENSION 17 #if defined(__WIN32__) intptr_t stdinHandle, stdoutHandle; int osfStdin, osfStdout; FILE * fStdIn, * fStdOut; #endif FILE *eC_stdin(void) { #if defined(__WIN32__) if(!fStdIn) { stdinHandle = (intptr_t)GetStdHandle(STD_INPUT_HANDLE); osfStdin = _open_osfhandle(stdinHandle, _O_TEXT); if(osfStdin != -1) fStdIn = _fdopen( osfStdin, "rb"); else fStdIn = stdin; setvbuf( fStdIn, NULL, _IONBF, 0 ); } return fStdIn; #else return stdin; #endif } FILE *eC_stdout(void) { #if 0 //defined(__WIN32__) if(!fStdOut) { stdoutHandle = (intptr_t)GetStdHandle(STD_OUTPUT_HANDLE); osfStdout = _open_osfhandle(stdoutHandle, _O_TEXT); if(osfStdout != -1) fStdOut = _fdopen( osfStdout, "wb"); else fStdOut = stdout; setvbuf( fStdOut, NULL, _IONBF, 0 ); } return fStdOut; #else return stdout; #endif } FILE *eC_stderr(void) { return stderr; } void __ecereNameSpace__ecere__com__eSystem_Delete(void * memory); void * __ecereNameSpace__ecere__com__eSystem_New0(unsigned int size); void * __ecereNameSpace__ecere__com__eSystem_Renew(void * memory, unsigned int size); void * __ecereNameSpace__ecere__com__eSystem_Renew0(void * memory, unsigned int size); unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16(char * source, int * wordCount); unsigned short * __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer(char * source, uint16 * dest, int max); char * __ecereNameSpace__ecere__sys__UTF16toUTF8(uint16 * source); char * __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer(uint16 * source, byte * dest, int max); #define eSystem_Delete __ecereNameSpace__ecere__com__eSystem_Delete #define eSystem_New0 __ecereNameSpace__ecere__com__eSystem_New0 #define eSystem_Renew __ecereNameSpace__ecere__com__eSystem_Renew #define eSystem_Renew0 __ecereNameSpace__ecere__com__eSystem_Renew0 #define UTF8toUTF16 __ecereNameSpace__ecere__sys__UTF8toUTF16 #define UTF8toUTF16Buffer __ecereNameSpace__ecere__sys__UTF8toUTF16Buffer #define UTF16toUTF8 __ecereNameSpace__ecere__sys__UTF16toUTF8 #define UTF16toUTF8Buffer __ecereNameSpace__ecere__sys__UTF16toUTF8Buffer #if defined(__unix__) static char exeLocation[MAX_LOCATION]; #endif #define forArgsPassing 2 int __ecereNameSpace__ecere__sys__Tokenize(char * string, int maxTokens, char* tokens[], int esc); char * __ecereNameSpace__ecere__sys__RSearchString(char * buffer, char * subStr, int maxLen, bool matchCase, bool matchWord); char * __ecereNameSpace__ecere__sys__GetLastDirectory(char * string, char * output); char * __ecereNameSpace__ecere__sys__PathCat(char * string, char * addedPath); char * __ecereNameSpace__ecere__sys__GetExtension(char * string, char * output); #define Tokenize __ecereNameSpace__ecere__sys__Tokenize #define RSearchString __ecereNameSpace__ecere__sys__RSearchString #define GetLastDirectory __ecereNameSpace__ecere__sys__GetLastDirectory #define PathCat __ecereNameSpace__ecere__sys__PathCat #define GetExtension __ecereNameSpace__ecere__sys__GetExtension extern struct __ecereNameSpace__ecere__com__Instance * __thisModule; typedef enum { unknown, win32, tux, apple } Platform; #if defined(__WIN32__) Platform runtimePlatform = win32; #elif defined(__APPLE__) Platform runtimePlatform = apple; #else //if defined(__linux__) Platform runtimePlatform = tux; /*#else Platform runtimePlatform = unknown; // 'linux' is used as a catch all UNIX platform for now */ #endif #if !defined(ECERE_NOFILE) && defined(__unix__) && !defined(__linux__) typedef struct _DualPipe _DualPipe; void DualPipe_Destructor(_DualPipe * dp); bool DualPipe_Getc(_DualPipe * dp, char * ch); bool DualPipe_Eof(_DualPipe * dp); void DualPipe_Wait(_DualPipe * dp); _DualPipe * _DualPipeOpen(int mode, char * commandLine, char * env, void ** inputPtr, void ** outputPtr); static bool DualPipe_GetLine(FILE * p, char *s, int max) { int c = 0; bool result = true; s[c]=0; if(feof(p)) result = false; else { while(c 1; } #endif bool Instance_LocateModule(char * name, char * fileName) { #if defined(__WIN32__) HMODULE hModule = null; if(name && name[0]) { uint16 _wmoduleName[MAX_LOCATION]; UTF8toUTF16Buffer(name, _wmoduleName, MAX_LOCATION); hModule = GetModuleHandle(_wmoduleName); if(!hModule) { wcscat(_wmoduleName, L".exe"); hModule = GetModuleHandle(_wmoduleName); } if(hModule) { uint16 _wfileName[MAX_LOCATION]; GetModuleFileNameW(hModule, _wfileName, MAX_LOCATION); UTF16toUTF8Buffer(_wfileName, (byte *)fileName, MAX_LOCATION); return true; } } else { uint16 _wfileName[MAX_LOCATION]; GetModuleFileNameW(null, _wfileName, MAX_LOCATION); UTF16toUTF8Buffer(_wfileName, (byte *)fileName, MAX_LOCATION); return true; } #elif defined(__APPLE__) if(name && name[0]) { int imageCount = _dyld_image_count(); int c; int nameLen = strlen(name); for(c = 0; c