]> git.donarmstrong.com Git - mothur.git/blobdiff - myutils.cpp
1.22.0
[mothur.git] / myutils.cpp
index 78bf5439091ade28ce3337094deda7fc91779c3b..6e10a85ce27e6b6448b8416060b1b151a48428f9 100755 (executable)
@@ -1,5 +1,3 @@
-//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
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\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
 #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
@@ -141,24 +139,14 @@ bool myisatty(int fd)
        return isatty(fd) != 0;\r
        }\r
 \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
-//     off_t FilePos = _fseeki64(stream, offset, whence);\r
-//     return (FilePos == -1L) ? -1 : 0;\r
-//     }\r
-//#define ftello(fm) (off_t) _ftelli64(fm)\r
-//#else \r
+#ifdef _MSC_VER\r
+#include <io.h>\r
 int fseeko(FILE *stream, off_t offset, int whence)\r
-{\r
-       off_t FilePos = fseek(stream, offset, whence);\r
+       {\r
+       off_t FilePos = _fseeki64(stream, offset, whence);\r
        return (FilePos == -1L) ? -1 : 0;\r
-}\r
-#define ftello(fm) (off_t) ftell(fm)\r
-//#endif\r
+       }\r
+#define ftello(fm) (off_t) _ftelli64(fm)\r
 #endif\r
 \r
 void LogStdioFileState(FILE *f)\r
@@ -178,16 +166,9 @@ void LogStdioFileState(FILE *f)
        Log("fpos       %ld (retval %d)\n", (long) fpos, fgetpos_retval);\r
 //     Log("eof        %d\n", _eof(fd));\r
 #endif\r
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
-#else\r
-#ifdef BIT_VERSION\r
+#ifdef _MSC_VER\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
@@ -513,8 +494,7 @@ off_t GetStdioFilePos(FILE *f)
 off_t GetStdioFileSize(FILE *f)\r
        {\r
        off_t CurrentPos = GetStdioFilePos(f);\r
-       off_t zeroPos = 0;\r
-       int Ok = fseeko(f, zeroPos, SEEK_END);\r
+       int Ok = fseeko(f, 0, SEEK_END);\r
        if (Ok < 0)\r
                Die("fseek in GetFileSize");\r
 \r
@@ -614,11 +594,10 @@ void Die(const char *Format, ...)
        fprintf(stderr, "\n---Fatal error---\n%s\n", szStr);\r
        Log("\n---Fatal error---\n%s\n", szStr);\r
 \r
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
-#else\r
-       //if (IsDebuggerPresent())\r
-       //      __debugbreak();\r
-       //_CrtSetDbgFlag(0);\r
+#ifdef _MSC_VER\r
+       if (IsDebuggerPresent())\r
+               __debugbreak();\r
+       _CrtSetDbgFlag(0);\r
 #endif\r
 \r
        exit(1);\r
@@ -643,7 +622,20 @@ void Warning(const char *Format, ...)
                }\r
        }\r
 \r
-#if defined linux || __linux__\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
 double GetMemUseBytes()\r
        {\r
        static char statm[64];\r
@@ -674,7 +666,7 @@ double GetMemUseBytes()
                g_PeakMemUseBytes = Bytes;\r
        return Bytes;\r
        }\r
-#elif defined(__APPLE__) || (__MACH__)\r
+#elif defined(__MACH__)\r
 #include <memory.h>\r
 #include <stdlib.h>\r
 #include <stdio.h>\r
@@ -715,9 +707,9 @@ double GetMemUseBytes()
        }\r
 #else\r
 double GetMemUseBytes()\r
-{\r
+       {\r
        return 0;\r
-}\r
+       }\r
 #endif\r
 \r
 double GetPeakMemUseBytes()\r
@@ -955,7 +947,7 @@ void ProgressExit()
 // Skip exit(), which can be very slow in DEBUG build\r
 // VERY DANGEROUS practice, because it skips global destructors.\r
 // But if you know the rules, you can break 'em, right?\r
-       //ExitProcess(0);\r
+       ExitProcess(0);\r
 #endif\r
        }\r
 \r
@@ -1207,8 +1199,7 @@ static void AddOpt(const OptInfo &Opt)
        g_Opts.insert(Opt);\r
        }\r
 \r
-#if defined (__APPLE__) || (__MACH__) || (linux) || (__linux)\r
-#else\r
+#ifdef _MSC_VER\r
 #pragma warning(disable: 4505) // unreferenced local function\r
 #endif\r
 \r
@@ -1532,7 +1523,6 @@ static void GetArgsFromFile(const string &FileName, vector<string> &Args)
 \r
 void MyCmdLine(int argc, char **argv)\r
        {\r
-       g_Opts.clear(); g_Argv.clear();\r
        static unsigned RecurseDepth = 0;\r
        ++RecurseDepth;\r
 \r
@@ -1563,9 +1553,9 @@ void MyCmdLine(int argc, char **argv)
        if (RecurseDepth == 0)\r
                g_Argv.clear();\r
 \r
-       for (int i = 0; i < argc; ++i) \r
+       for (int i = 0; i < argc; ++i) {\r
                g_Argv.push_back(string(argv[i]));\r
-       \r
+       }\r
 \r
        int i = 1;\r
        for (;;)\r
@@ -1573,7 +1563,7 @@ void MyCmdLine(int argc, char **argv)
                if (i >= argc)\r
                        break;\r
                const string &Arg = g_Argv[i];\r
-               \r
+                       \r
                if (Arg.empty())\r
                        continue;\r
                else if (Arg == "file:" && i + 1 < argc)\r