summaryrefslogtreecommitdiff
path: root/src/path.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/path.cc')
-rw-r--r--src/path.cc24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/path.cc b/src/path.cc
index 080bd12..21a8f89 100644
--- a/src/path.cc
+++ b/src/path.cc
@@ -33,19 +33,21 @@
#include <string.h>
#include <stdlib.h>
-std::string getPath(std::string file)
+std::string getPath(const std::string& file)
{
- std::string p;
-#ifndef __MINGW32__
- char *b = strdup(file.c_str());
- p = dirname(b);
- free(b);
+ std::string path;
+
+#ifdef __MINGW32__
+ char drive[_MAX_DRIVE];
+ char dir[_MAX_DIR];
+ _splitpath(file.c_str(), drive, dir, NULL, NULL);
+ path = std::string(drive) + dir;
#else
- char drive[_MAX_DRIVE];
- char dir[_MAX_DIR];
- _splitpath(file.c_str(), drive, dir, NULL, NULL);
- p = std::string(drive) + dir;
+ // POSIX
+ char* buffer = strdup(file.c_str());
+ path = dirname(buffer);
+ free(buffer);
#endif
- return p;
+ return path;
}