summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Src/Misc.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2009-02-28 01:26:56 +0000
committerhrydgard <hrydgard@gmail.com>2009-02-28 01:26:56 +0000
commit4bdb4aa0d1c8520488583ba79c9f5ab6e5656eca (patch)
tree05cb77888380f7814d96b356c8f538bb736799fa /Source/Core/Common/Src/Misc.cpp
parent2783f24cfeb39731c5e41fe73ec40d36b266b467 (diff)
Merge large parts of nakeee's "Soap" branch into trunk, after fixing a few crash bugs in FileUtil.cpp.
Not really anything interesting, just some better comments, some slightly more portable/cleaner code in places. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@2459 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common/Src/Misc.cpp')
-rw-r--r--Source/Core/Common/Src/Misc.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/Source/Core/Common/Src/Misc.cpp b/Source/Core/Common/Src/Misc.cpp
new file mode 100644
index 0000000000..b0e6373f10
--- /dev/null
+++ b/Source/Core/Common/Src/Misc.cpp
@@ -0,0 +1,50 @@
+// Copyright (C) 2003-2008 Dolphin Project.
+
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, version 2.0.
+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License 2.0 for more details.
+
+// A copy of the GPL 2.0 should have been included with the program.
+// If not, see http://www.gnu.org/licenses/
+
+// Official SVN repository and contact information can be found at
+// http://code.google.com/p/dolphin-emu/
+
+#include "Common.h"
+
+// Generic function to get last error message.
+// Call directly after the command or use the error num.
+// This function might change the error code.
+const char *GetLastErrorMsg()
+{
+ // FIXME : not thread safe.
+ // Caused by sloppy use in logging in FileUtil.cpp, primarily. What to do, what to do ...
+ static char errStr[255] = {0};
+#ifdef _WIN32
+ DWORD dw = GetLastError();
+ FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dw,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ (LPTSTR) errStr, 254, NULL );
+#else
+ // Thread safe (XSI-compliant)
+ strerror_r(errno, errStr, 255);
+#endif
+ return errStr;
+}
+
+char *strndup (char const *s, size_t n)
+{
+ size_t len = strnlen(s, n);
+ char *dup = (char *)malloc(len + 1);
+
+ if (dup == NULL)
+ return NULL;
+
+ dup[len] = '\0';
+ return (char *)memcpy(dup, s, len);
+}