1
0
mirror of https://github.com/pdf2htmlEX/pdf2htmlEX.git synced 2024-12-22 13:00:08 +00:00

Make it work on MingW

This commit is contained in:
Marc Sanfacon 2014-01-13 20:08:23 -05:00
parent 166efc3892
commit 5aebf2c738
6 changed files with 97 additions and 0 deletions

View File

@ -206,6 +206,8 @@ set(PDF2HTMLEX_SRC ${PDF2HTMLEX_SRC}
src/util/path.cc src/util/path.cc
src/util/unicode.h src/util/unicode.h
src/util/unicode.cc src/util/unicode.cc
src/util/win32.h
src/util/win32.cc
src/ArgParser.h src/ArgParser.h
src/ArgParser.cc src/ArgParser.cc
src/Base64Stream.h src/Base64Stream.h

View File

@ -14,6 +14,7 @@
#include "TmpFiles.h" #include "TmpFiles.h"
#include "Param.h" #include "Param.h"
#include "util/win32.h"
using namespace std; using namespace std;

View File

@ -35,6 +35,7 @@
#include "util/path.h" #include "util/path.h"
#include "util/ffw.h" #include "util/ffw.h"
#include "util/win32.h"
using namespace std; using namespace std;
using namespace pdf2htmlEX; using namespace pdf2htmlEX;
@ -342,8 +343,13 @@ void check_param()
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
// We need to adjust these directories before parsing the options. // We need to adjust these directories before parsing the options.
#ifndef _WIN32
param.tmp_dir = "/tmp"; param.tmp_dir = "/tmp";
param.data_dir = PDF2HTMLEX_DATA_PATH; param.data_dir = PDF2HTMLEX_DATA_PATH;
#else
param.data_dir = get_data_dir(argv[0]);
param.tmp_dir = get_tmp_dir();
#endif
parse_options(argc, argv); parse_options(argc, argv);
check_param(); check_param();

View File

@ -11,6 +11,7 @@
#include <cstring> #include <cstring>
#include "path.h" #include "path.h"
#include "win32.h"
using std::string; using std::string;

57
src/util/win32.cc Normal file
View File

@ -0,0 +1,57 @@
/*
* Win32 specific functions
*
* by MarcSanfacon
* 2014.01.13
*/
#ifdef _WIN32
#include <string>
#include <cstdio>
#include <cstdlib>
#include <time.h>
#include <sstream>
#include <windows.h>
#include "win32.h"
char* mkdtemp(char* temp)
{
if (temp != nullptr) {
bool created = false;
char value[30];
srand((unsigned)time(0));
while (!created) {
int rand_value = (int)((rand() / ((double)RAND_MAX+1.0)) * 1e6);
sprintf(value, "%06d", rand_value);
sprintf(temp + strlen(temp) - 6, "%6.6s", value);
created = _mkdir(temp) == 0;
}
}
return temp;
}
namespace pdf2htmlEX {
std::string get_data_dir(char *dir)
{
// Under Windows, the default data_dir is under /data in the pdf2htmlEX directory
std::stringstream ss;
ss << dirname(dir) << "/data";
return ss.str();
}
std::string get_tmp_dir()
{
// Under Windows, the temp path is not under /tmp, find it.
char temppath[MAX_PATH];
::GetTempPath(MAX_PATH, temppath);
return temppath;
}
} // namespace pdf2htmlEX;
#endif //_WIN32

30
src/util/win32.h Normal file
View File

@ -0,0 +1,30 @@
/*
* Win32 specific functions
*
* by MarcSanfacon
* 2014.01.13
*/
#ifndef WIN32_H__
#define WIN32_H__
#ifdef _WIN32
#include <io.h>
#include <libgen.h>
#include <sstream>
char *mkdtemp(char *temp);
#define mkdir(A, B) _mkdir(A)
#define stat _stat
namespace pdf2htmlEX {
std::string get_data_dir(char *dir);
std::string get_tmp_dir();
} // namespace pdf2htmlEX
#endif //_WIN32
#endif //WIN32_H__