+//uchime by Robert C. Edgar http://drive5.com/uchime This code is donated to the public domain.\r
+\r
#include <time.h>\r
#include <stdarg.h>\r
#include <sys/stat.h>\r
#include <signal.h>\r
#include <float.h>\r
\r
-#ifdef _MSC_VER\r
-#include <crtdbg.h>\r
-#include <process.h>\r
-#include <windows.h>\r
-#include <psapi.h>\r
-#include <io.h>\r
-#else\r
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
#include <sys/time.h>\r
#include <sys/resource.h>\r
#include <unistd.h>\r
#include <errno.h>\r
#include <fcntl.h>\r
#include <stdlib.h>\r
+#else\r
+//#include <crtdbg.h>\r
+#include <process.h>\r
+#include <windows.h>\r
+#include <psapi.h>\r
+#include <io.h>\r
#endif\r
\r
#include "myutils.h"\r
return isatty(fd) != 0;\r
}\r
\r
-#ifdef _MSC_VER\r
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
+#else\r
+#ifdef BIT_VERSION\r
#include <io.h>\r
int fseeko(FILE *stream, off_t offset, int whence)\r
{\r
return (FilePos == -1L) ? -1 : 0;\r
}\r
#define ftello(fm) (off_t) _ftelli64(fm)\r
+#else \r
+int fseeko(FILE *stream, off_t offset, int whence)\r
+{\r
+ off_t FilePos = fseek(stream, offset, whence);\r
+ return (FilePos == -1L) ? -1 : 0;\r
+}\r
+#define ftello(fm) (off_t) ftell(fm)\r
+#endif\r
#endif\r
\r
void LogStdioFileState(FILE *f)\r
Log("fpos %ld (retval %d)\n", (long) fpos, fgetpos_retval);\r
// Log("eof %d\n", _eof(fd));\r
#endif\r
-#ifdef _MSC_VER\r
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
+#else\r
+#ifdef BIT_VERSION\r
__int64 pos64 = _ftelli64(f);\r
Log("_ftelli64 %lld\n", pos64);\r
+#else\r
+ __int32 pos32 = ftell(f);\r
+ Log("ftell %lld\n", pos32);\r
+ \r
+#endif\r
#endif\r
}\r
\r
fprintf(stderr, "\n---Fatal error---\n%s\n", szStr);\r
Log("\n---Fatal error---\n%s\n", szStr);\r
\r
-#ifdef _MSC_VER\r
- if (IsDebuggerPresent())\r
- __debugbreak();\r
- _CrtSetDbgFlag(0);\r
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
+#else\r
+ //if (IsDebuggerPresent())\r
+ // __debugbreak();\r
+ //_CrtSetDbgFlag(0);\r
#endif\r
\r
exit(1);\r
}\r
}\r
\r
-#ifdef _MSC_VER\r
-double GetMemUseBytes()\r
- {\r
- HANDLE hProc = GetCurrentProcess();\r
- PROCESS_MEMORY_COUNTERS PMC;\r
- BOOL bOk = GetProcessMemoryInfo(hProc, &PMC, sizeof(PMC));\r
- if (!bOk)\r
- return 1000000;\r
- double Bytes = (double) PMC.WorkingSetSize;\r
- if (Bytes > g_PeakMemUseBytes)\r
- g_PeakMemUseBytes = Bytes;\r
- return Bytes;\r
- }\r
-#elif linux || __linux__\r
+#if defined linux || __linux__\r
double GetMemUseBytes()\r
{\r
static char statm[64];\r
g_PeakMemUseBytes = Bytes;\r
return Bytes;\r
}\r
-#elif defined(__MACH__)\r
+#elif defined(__APPLE__) || (__MACH__)\r
#include <memory.h>\r
#include <stdlib.h>\r
#include <stdio.h>\r
}\r
#else\r
double GetMemUseBytes()\r
- {\r
+{\r
return 0;\r
- }\r
+}\r
#endif\r
\r
double GetPeakMemUseBytes()\r
g_Opts.insert(Opt);\r
}\r
\r
-#ifdef _MSC_VER\r
+#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
+#else\r
#pragma warning(disable: 4505) // unreferenced local function\r
#endif\r
\r
\r
void MyCmdLine(int argc, char **argv)\r
{\r
+ g_Opts.clear();\r
static unsigned RecurseDepth = 0;\r
++RecurseDepth;\r
\r