compiles on windows

This commit is contained in:
MrBesen 2020-12-14 13:40:42 +01:00
parent f1c5641ed0
commit d45b8954d2
3 changed files with 29 additions and 3 deletions

1
.gitignore vendored
View File

@ -2,6 +2,7 @@
*.out
build/
*.exe
*.dll
*.o
.gdb_history

View File

@ -5,8 +5,11 @@
# `make clean all` nicht mit -j verwenden! -> race condition im make file
# statdessen: `make clean; make all -j` verwenden
# windows name
# NAME = lib$(NAMESHORT).dll
NAMESHORT = mrbesen
NAME = lib$(NAMESHORT).so
NAME ?= lib$(NAMESHORT).so
NAMETEST = test
CFLAGS = -fpic -std=c++17 -O2 -g -pipe -Wall -Wextra -Wno-unused-parameter -Wpedantic
CXX = g++

View File

@ -1,4 +1,4 @@
#include "files.h"
#include "files.h"
#include <dirent.h>
#include <list>
@ -11,6 +11,14 @@
#include "util.h"
#ifndef PATH_MAX
#define PATH_MAX 1024
#endif
#if defined(_WIN32) || defined(_WIN64)
#include <stdlib.h>
#endif
void mrbesen::files::parent(const std::string& child, std::string& out) {
//letzten path trenner finden
size_t pos = child.rfind('/', child.length() -2); //das erste Zeichen überspringen (könnte ein / sein)
@ -147,9 +155,23 @@ bool mrbesen::files::copy(const std::string& from, const std::string& to) {
}
std::string mrbesen::files::realPath(const std::string& str) {
#if defined(_WIN32) ||defined(_WIN64)
wchar_t bufferin[PATH_MAX];
for(uint32_t i = 0; i < str.size(); ++i) {
bufferin[i] = str[i];
}
bufferin[str.size()] = 0;
wchar_t bufferA[PATH_MAX];
wchar_t* ret = ::_wfullpath(bufferA, bufferin, PATH_MAX);
char buffer[PATH_MAX];
for(uint32_t i = 0; ret[i]; ++i) {
buffer[i] = ret[i];
}
#else
char buffer[PATH_MAX];
char* ret = ::realpath(str.c_str(), buffer);
#endif
if(ret == nullptr) return "";
return std::string(buffer);
}