[poppler] poppler/GlobalParams.cc poppler/GlobalParams.h
Albert Astals Cid
aacid at kemper.freedesktop.org
Sat Jan 10 09:29:11 PST 2009
poppler/GlobalParams.cc | 27 ++++++++++++++++++++-------
poppler/GlobalParams.h | 5 ++++-
2 files changed, 24 insertions(+), 8 deletions(-)
New commits:
commit 869584a84eed507775ff1c3183fe484c14b6f77b
Author: Jonathan Kew <jonathan_kew at sil.org>
Date: Sat Jan 10 18:28:47 2009 +0100
Add the possibility of setting the datadir on runtime
diff --git a/poppler/GlobalParams.cc b/poppler/GlobalParams.cc
index ee7bb12..9c42f36 100644
--- a/poppler/GlobalParams.cc
+++ b/poppler/GlobalParams.cc
@@ -18,7 +18,7 @@
// Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
// Copyright (C) 2006 Ed Catmur <ed at catmur.co.uk>
// Copyright (C) 2007 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
-// Copyright (C) 2007 Jonathan Kew <jonathan_kew at sil.org>
+// Copyright (C) 2007, 2009 Jonathan Kew <jonathan_kew at sil.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -548,7 +548,9 @@ Plugin::~Plugin() {
// parsing
//------------------------------------------------------------------------
-GlobalParams::GlobalParams() {
+GlobalParams::GlobalParams(const char *customPopplerDataDir)
+ : popplerDataDir(customPopplerDataDir)
+{
UnicodeMap *map;
int i;
@@ -673,8 +675,14 @@ GlobalParams::GlobalParams() {
void GlobalParams::scanEncodingDirs() {
GDir *dir;
GDirEntry *entry;
-
- dir = new GDir(POPPLER_DATADIR "/nameToUnicode", gTrue);
+ const char *dataRoot = popplerDataDir ? popplerDataDir : POPPLER_DATADIR;
+
+ // allocate buffer large enough to append "/nameToUnicode"
+ size_t bufSize = strlen(dataRoot) + strlen("/nameToUnicode") + 1;
+ char *dataPathBuffer = new char[bufSize];
+
+ snprintf(dataPathBuffer, bufSize, "%s/nameToUnicode", dataRoot);
+ dir = new GDir(dataPathBuffer, gTrue);
while (entry = dir->getNextEntry(), entry != NULL) {
if (!entry->isDir()) {
parseNameToUnicode(entry->getFullPath());
@@ -683,27 +691,32 @@ void GlobalParams::scanEncodingDirs() {
}
delete dir;
- dir = new GDir(POPPLER_DATADIR "/cidToUnicode", gFalse);
+ snprintf(dataPathBuffer, bufSize, "%s/cidToUnicode", dataRoot);
+ dir = new GDir(dataPathBuffer, gFalse);
while (entry = dir->getNextEntry(), entry != NULL) {
addCIDToUnicode(entry->getName(), entry->getFullPath());
delete entry;
}
delete dir;
- dir = new GDir(POPPLER_DATADIR "/unicodeMap", gFalse);
+ snprintf(dataPathBuffer, bufSize, "%s/unicodeMap", dataRoot);
+ dir = new GDir(dataPathBuffer, gFalse);
while (entry = dir->getNextEntry(), entry != NULL) {
addUnicodeMap(entry->getName(), entry->getFullPath());
delete entry;
}
delete dir;
- dir = new GDir(POPPLER_DATADIR "/cMap", gFalse);
+ snprintf(dataPathBuffer, bufSize, "%s/cMap", dataRoot);
+ dir = new GDir(dataPathBuffer, gFalse);
while (entry = dir->getNextEntry(), entry != NULL) {
addCMapDir(entry->getName(), entry->getFullPath());
toUnicodeDirs->append(entry->getFullPath()->copy());
delete entry;
}
delete dir;
+
+ delete[] dataPathBuffer;
}
void GlobalParams::parseNameToUnicode(GooString *name) {
diff --git a/poppler/GlobalParams.h b/poppler/GlobalParams.h
index 80c30f5..a0e4ff0 100644
--- a/poppler/GlobalParams.h
+++ b/poppler/GlobalParams.h
@@ -18,6 +18,7 @@
// Copyright (C) 2006 Takashi Iwai <tiwai at suse.de>
// Copyright (C) 2006 Kristian Høgsberg <krh at redhat.com>
// Copyright (C) 2007 Krzysztof Kowalczyk <kkowalczyk at gmail.com>
+// Copyright (C) 2009 Jonathan Kew <jonathan_kew at sil.org>
//
// To see a description of the changes please see the Changelog file that
// came with your tarball or type make ChangeLog if you are building from git
@@ -159,7 +160,7 @@ public:
// Initialize the global parameters by attempting to read a config
// file.
- GlobalParams();
+ GlobalParams(const char *customPopplerDataDir = NULL);
~GlobalParams();
@@ -359,6 +360,8 @@ private:
GooMutex unicodeMapCacheMutex;
GooMutex cMapCacheMutex;
#endif
+
+ const char *popplerDataDir;
};
#endif
More information about the poppler
mailing list