Fix small windows/mingw portability issues in code used by the GUI
This commit is contained in:
parent
3b18facc16
commit
2a96ee4a27
@ -41,20 +41,22 @@ typedef int mode_t;
|
||||
#define ftruncate _chsize_s
|
||||
#define PATH_MAX MAX_PATH
|
||||
#define RCL_ICONV_INBUF_CONST 1
|
||||
#else
|
||||
// Gminw
|
||||
#undef RCL_ICONV_INBUF_CONST
|
||||
#endif
|
||||
#define HAVE_STRUCT_TIMESPEC
|
||||
#define strdup _strdup
|
||||
#define timegm _mkgmtime
|
||||
|
||||
#else // End _MSC_VER -> Gminw
|
||||
|
||||
#define timegm portable_timegm
|
||||
|
||||
#undef RCL_ICONV_INBUF_CONST
|
||||
|
||||
#endif // GMinw only
|
||||
|
||||
typedef int pid_t;
|
||||
inline int readlink(const char *cp, void *buf, int cnt) {
|
||||
return -1;
|
||||
}
|
||||
#define HAVE_STRUCT_TIMESPEC
|
||||
#define strdup _strdup
|
||||
#define timegm _mkgmtime
|
||||
|
||||
|
||||
#define MAXPATHLEN PATH_MAX
|
||||
typedef DWORD32 u_int32_t;
|
||||
@ -67,11 +69,12 @@ typedef int ssize_t;
|
||||
|
||||
#define R_OK 4
|
||||
#define W_OK 2
|
||||
#ifndef X_OK
|
||||
#define X_OK 4
|
||||
#endif
|
||||
#define RECOLL_DATADIR "C:\\recoll\\"
|
||||
#define S_ISLNK(X) false
|
||||
#define lstat stat
|
||||
#define timegm _mkgmtime
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@ -33,12 +33,12 @@ static bool urltopath(RclConfig* cnf,
|
||||
const Rcl::Doc& idoc, string& fn, struct stat& st)
|
||||
{
|
||||
// The url has to be like file://
|
||||
if (idoc.url.find(cstr_fileu) != 0) {
|
||||
fn = fileurltolocalpath(idoc.url);
|
||||
if (fn.empty()) {
|
||||
LOGERR(("FSDocFetcher::fetch/sig: non fs url: [%s]\n",
|
||||
idoc.url.c_str()));
|
||||
return false;
|
||||
}
|
||||
fn = idoc.url.substr(7, string::npos);
|
||||
cnf->setKeyDir(path_getfather(fn));
|
||||
bool follow = false;
|
||||
cnf->getConfParam("followLinks", &follow);
|
||||
|
||||
128
src/librecoll/librecoll.pro
Normal file
128
src/librecoll/librecoll.pro
Normal file
@ -0,0 +1,128 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2015-10-03T09:04:49
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT -= core gui
|
||||
|
||||
TARGET = librecoll
|
||||
TEMPLATE = lib
|
||||
|
||||
DEFINES += LIBRECOLL_LIBRARY BUILDING_RECOLL
|
||||
DEFINES -= UNICODE
|
||||
DEFINES -= _UNICODE
|
||||
DEFINES += _MBCS
|
||||
|
||||
SOURCES += \
|
||||
../aspell/rclaspell.cpp \
|
||||
../bincimapmime/convert.cc \
|
||||
../bincimapmime/mime-parsefull.cc \
|
||||
../bincimapmime/mime-parseonlyheader.cc \
|
||||
../bincimapmime/mime-printbody.cc \
|
||||
../bincimapmime/mime.cc \
|
||||
../common/beaglequeuecache.cpp \
|
||||
../common/cstr.cpp \
|
||||
../common/rclconfig.cpp \
|
||||
../common/rclinit.cpp \
|
||||
../common/syngroups.cpp \
|
||||
../common/textsplit.cpp \
|
||||
../common/unacpp.cpp \
|
||||
../index/beaglequeue.cpp \
|
||||
../index/bglfetcher.cpp \
|
||||
../index/checkretryfailed.cpp \
|
||||
../index/fetcher.cpp \
|
||||
../index/fsfetcher.cpp \
|
||||
../index/fsindexer.cpp \
|
||||
../index/indexer.cpp \
|
||||
../index/mimetype.cpp \
|
||||
../index/subtreelist.cpp \
|
||||
../internfile/extrameta.cpp \
|
||||
../internfile/htmlparse.cpp \
|
||||
../internfile/internfile.cpp \
|
||||
../internfile/mh_exec.cpp \
|
||||
../internfile/mh_execm.cpp \
|
||||
../internfile/mh_html.cpp \
|
||||
../internfile/mh_mail.cpp \
|
||||
../internfile/mh_mbox.cpp \
|
||||
../internfile/mh_text.cpp \
|
||||
../internfile/mimehandler.cpp \
|
||||
../internfile/myhtmlparse.cpp \
|
||||
../internfile/txtdcode.cpp \
|
||||
../internfile/uncomp.cpp \
|
||||
../query/docseq.cpp \
|
||||
../query/docseqdb.cpp \
|
||||
../query/docseqhist.cpp \
|
||||
../query/dynconf.cpp \
|
||||
../query/filtseq.cpp \
|
||||
../query/plaintorich.cpp \
|
||||
../query/recollq.cpp \
|
||||
../query/reslistpager.cpp \
|
||||
../query/sortseq.cpp \
|
||||
../query/wasaparse.cpp \
|
||||
../query/wasaparseaux.cpp \
|
||||
../rcldb/daterange.cpp \
|
||||
../rcldb/expansiondbs.cpp \
|
||||
../rcldb/rclabstract.cpp \
|
||||
../rcldb/rcldb.cpp \
|
||||
../rcldb/rcldoc.cpp \
|
||||
../rcldb/rcldups.cpp \
|
||||
../rcldb/rclquery.cpp \
|
||||
../rcldb/rclterms.cpp \
|
||||
../rcldb/searchdata.cpp \
|
||||
../rcldb/searchdatatox.cpp \
|
||||
../rcldb/searchdataxml.cpp \
|
||||
../rcldb/stemdb.cpp \
|
||||
../rcldb/stoplist.cpp \
|
||||
../rcldb/synfamily.cpp \
|
||||
../unac/unac.cpp \
|
||||
../utils/appformime.cpp \
|
||||
../utils/base64.cpp \
|
||||
../utils/circache.cpp \
|
||||
../utils/conftree.cpp \
|
||||
../utils/copyfile.cpp \
|
||||
../utils/cpuconf.cpp \
|
||||
../utils/debuglog.cpp \
|
||||
../utils/ecrontab.cpp \
|
||||
../windows/execmd_w.cpp \
|
||||
../windows/fnmatch.c \
|
||||
../utils/fileudi.cpp \
|
||||
../utils/fstreewalk.cpp \
|
||||
../utils/idfile.cpp \
|
||||
../utils/md5.cpp \
|
||||
../utils/md5ut.cpp \
|
||||
../utils/mimeparse.cpp \
|
||||
../utils/pathut.cpp \
|
||||
../utils/pxattr.cpp \
|
||||
../utils/rclionice.cpp \
|
||||
../utils/readfile.cpp \
|
||||
../utils/smallut.cpp \
|
||||
../utils/strmatcher.cpp \
|
||||
../utils/transcode.cpp \
|
||||
../utils/wipedir.cpp \
|
||||
../windows/strptime.cpp \
|
||||
../windows/dirent.c
|
||||
|
||||
HEADERS +=
|
||||
|
||||
INCLUDEPATH += ../common ../index ../internfile ../query ../unac \
|
||||
../utils ../aspell ../rcldb ../qtgui ../xaposix \
|
||||
../confgui ../bincimapmime ../windows \
|
||||
c:/recolldeps/xapian/xapian-core-1.2.8/include
|
||||
|
||||
windows{
|
||||
contains(QMAKE_CC, gcc){
|
||||
# MingW
|
||||
QMAKE_CXXFLAGS += -std=c++11 -Wno-unused-parameter
|
||||
}
|
||||
contains(QMAKE_CC, cl){
|
||||
# Visual Studio
|
||||
}
|
||||
LIBS += c:/recolldeps/xapian/xapian-core-1.2.21/.libs/libxapian-22.dll \
|
||||
c:/recolldeps/zlib-1.2.8/zlib1.dll -liconv -lshlwapi -lkernel32
|
||||
}
|
||||
|
||||
unix {
|
||||
target.path = /usr/lib
|
||||
INSTALLS += target
|
||||
}
|
||||
@ -12,7 +12,7 @@ QT += webkit
|
||||
QT += xml
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets webkitwidgets printsupport
|
||||
|
||||
CONFIG += qt warn_on thread release
|
||||
CONFIG += qt warn_on thread debug
|
||||
|
||||
HEADERS += \
|
||||
advsearch_w.h \
|
||||
@ -100,11 +100,12 @@ INCLUDEPATH += ../common ../index ../internfile ../query ../unac \
|
||||
windows{
|
||||
contains(QMAKE_CC, gcc){
|
||||
# MingW
|
||||
QMAKE_CXXFLAGS += -std=c++0x -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -std=c++11 -Wno-unused-parameter
|
||||
}
|
||||
contains(QMAKE_CC, cl){
|
||||
# Visual Studio
|
||||
}
|
||||
LIBS += C:/recoll/src/build-librecoll-Desktop_Qt_5_5_0_MinGW_32bit-Debug/debug/librecoll.dll
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -151,18 +151,10 @@ void ResListPager::displayDoc(RclConfig *config, int i, Rcl::Doc& doc,
|
||||
const HighlightData& hdata, const string& sh)
|
||||
{
|
||||
ostringstream chunk;
|
||||
int percent;
|
||||
if (doc.pc == -1) {
|
||||
percent = 0;
|
||||
// Document not available, maybe other further, will go on.
|
||||
doc.meta[Rcl::Doc::keyabs] = string(trans("Unavailable document"));
|
||||
} else {
|
||||
percent = doc.pc;
|
||||
}
|
||||
|
||||
// Determine icon to display if any
|
||||
string iconurl = iconUrl(config, doc);
|
||||
|
||||
|
||||
// Printable url: either utf-8 if transcoding succeeds, or url-encoded
|
||||
string url;
|
||||
printableUrl(config->getDefCharset(), doc.url, url);
|
||||
@ -493,7 +485,7 @@ string ResListPager::iconUrl(RclConfig *config, Rcl::Doc& doc)
|
||||
string apptag;
|
||||
doc.getmeta(Rcl::Doc::keyapptg, &apptag);
|
||||
|
||||
return cstr_fileu + config->getMimeIconPath(doc.mimetype, apptag);
|
||||
return path_pathtofileurl(config->getMimeIconPath(doc.mimetype, apptag));
|
||||
}
|
||||
|
||||
bool ResListPager::append(const string& data)
|
||||
|
||||
@ -995,12 +995,47 @@ static bool parseperiod(vector<string>::const_iterator& it,
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
int setenv(const char *name, const char *value, int overwrite)
|
||||
{
|
||||
if(!overwrite) {
|
||||
const char *cp = getenv(name);
|
||||
if (cp)
|
||||
return -1;
|
||||
}
|
||||
return _putenv_s(name, value);
|
||||
}
|
||||
void unsetenv(const char *name)
|
||||
{
|
||||
_putenv_s(name, "");
|
||||
}
|
||||
#endif
|
||||
|
||||
time_t portable_timegm(struct tm *tm)
|
||||
{
|
||||
time_t ret;
|
||||
char *tz;
|
||||
|
||||
tz = getenv("TZ");
|
||||
setenv("TZ", "", 1);
|
||||
tzset();
|
||||
ret = mktime(tm);
|
||||
if (tz)
|
||||
setenv("TZ", tz, 1);
|
||||
else
|
||||
unsetenv("TZ");
|
||||
tzset();
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if 0
|
||||
static void cerrdip(const string& s, DateInterval *dip)
|
||||
{
|
||||
cerr << s << dip->y1 << "-" << dip->m1 << "-" << dip->d1 << "/"
|
||||
<< dip->y2 << "-" << dip->m2 << "-" << dip->d2
|
||||
<< endl;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Compute date + period. Won't work out of the unix era.
|
||||
// or pre-1970 dates. Just convert everything to unixtime and
|
||||
@ -1015,13 +1050,8 @@ static bool addperiod(DateInterval *dp, DateInterval *pp)
|
||||
tm.tm_year = dp->y1 - 1900 + pp->y1;
|
||||
tm.tm_mon = dp->m1 + pp->m1 -1;
|
||||
tm.tm_mday = dp->d1 + pp->d1;
|
||||
#ifdef sun
|
||||
time_t tres = mktime(&tm);
|
||||
localtime_r(&tres, &tm);
|
||||
#else
|
||||
time_t tres = timegm(&tm);
|
||||
gmtime_r(&tres, &tm);
|
||||
#endif
|
||||
dp->y1 = tm.tm_year + 1900;
|
||||
dp->m1 = tm.tm_mon + 1;
|
||||
dp->d1 = tm.tm_mday;
|
||||
|
||||
@ -153,6 +153,11 @@ bool pcSubst(const string& in, string& out, const map<string, string>& subs);
|
||||
/** Append system error message */
|
||||
void catstrerror(string *reason, const char *what, int _errno);
|
||||
|
||||
/** Portable timegm. MS C has _mkgmtime, but there is a bug in Gminw which
|
||||
* makes it inaccessible */
|
||||
struct tm;
|
||||
time_t portable_timegm(struct tm *tm);
|
||||
|
||||
/** Compute times to help with perf issues */
|
||||
class Chrono {
|
||||
public:
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
#include <time.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#ifdef _MSC_VER
|
||||
const char * strp_weekdays[] =
|
||||
{ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" };
|
||||
const char * strp_monthnames[] =
|
||||
@ -252,4 +251,3 @@ char * strptime(const char *s, const char *format, struct tm *tm)
|
||||
}
|
||||
return (working ? (char *)s : 0);
|
||||
}
|
||||
#endif // _MSC_VER
|
||||
|
||||
@ -51,7 +51,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef __WIN32__
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/* Recent MinGW versions define this */
|
||||
inline unsigned int
|
||||
sleep(unsigned int seconds)
|
||||
{
|
||||
@ -72,7 +73,7 @@ sleep(unsigned int seconds)
|
||||
xapian_sleep_milliseconds(seconds * 1000u);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif /* _MSC_VER*/
|
||||
#endif /* __WIN32__ */
|
||||
|
||||
#endif /* XAPIAN_INCLUDED_SAFEUNISTD_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user