[sword-svn] r3822 - in trunk: . bindings bindings/Android/SWORD bindings/Android/SWORD/.idea bindings/Android/SWORD/gradle/wrapper bindings/java-jni/jni include src/frontend src/keys src/mgr src/modules/comments/rawcom src/modules/common src/modules/filters src/utilfuns tests

scribe at crosswire.org scribe at crosswire.org
Tue Nov 3 13:54:47 EST 2020


Author: scribe
Date: 2020-11-03 13:54:47 -0500 (Tue, 03 Nov 2020)
New Revision: 3822

Added:
   trunk/bindings/Android/SWORD/.idea/compiler.xml
Modified:
   trunk/bindings/Android/SWORD/.idea/gradle.xml
   trunk/bindings/Android/SWORD/.idea/misc.xml
   trunk/bindings/Android/SWORD/.idea/modules.xml
   trunk/bindings/Android/SWORD/build.gradle
   trunk/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties
   trunk/bindings/README
   trunk/bindings/flatapi.cpp
   trunk/bindings/java-jni/jni/swordstub.cpp
   trunk/configure.ac
   trunk/include/defs.h
   trunk/include/listkey.h
   trunk/include/swlog.h
   trunk/include/swversion.h
   trunk/src/frontend/swlog.cpp
   trunk/src/keys/treekeyidx.cpp
   trunk/src/keys/versekey.cpp
   trunk/src/mgr/curlftpt.cpp
   trunk/src/mgr/curlhttpt.cpp
   trunk/src/mgr/ftplibftpt.cpp
   trunk/src/mgr/installmgr.cpp
   trunk/src/mgr/localemgr.cpp
   trunk/src/mgr/remotetrans.cpp
   trunk/src/mgr/rtranspgdrive.cpp
   trunk/src/mgr/stringmgr.cpp
   trunk/src/mgr/swmgr.cpp
   trunk/src/mgr/versificationmgr.cpp
   trunk/src/modules/comments/rawcom/rawcom.cpp
   trunk/src/modules/common/rawstr.cpp
   trunk/src/modules/common/rawstr4.cpp
   trunk/src/modules/common/zstr.cpp
   trunk/src/modules/filters/utf8transliterator.cpp
   trunk/src/utilfuns/ftplib.c
   trunk/tests/mgrtest.cpp
   trunk/usrinst.sh
Log:
Small cleanups preparing for release.
Added ability to compile out logDebug, logInformation, and logTimedInformation for optimizations



Added: trunk/bindings/Android/SWORD/.idea/compiler.xml
===================================================================
--- trunk/bindings/Android/SWORD/.idea/compiler.xml	                        (rev 0)
+++ trunk/bindings/Android/SWORD/.idea/compiler.xml	2020-11-03 18:54:47 UTC (rev 3822)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <bytecodeTargetLevel target="1.8" />
+  </component>
+</project>
\ No newline at end of file

Modified: trunk/bindings/Android/SWORD/.idea/gradle.xml
===================================================================
--- trunk/bindings/Android/SWORD/.idea/gradle.xml	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/Android/SWORD/.idea/gradle.xml	2020-11-03 18:54:47 UTC (rev 3822)
@@ -14,6 +14,7 @@
           </set>
         </option>
         <option name="resolveModulePerSourceSet" value="false" />
+        <option name="useQualifiedModuleNames" value="true" />
       </GradleProjectSettings>
     </option>
   </component>

Modified: trunk/bindings/Android/SWORD/.idea/misc.xml
===================================================================
--- trunk/bindings/Android/SWORD/.idea/misc.xml	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/Android/SWORD/.idea/misc.xml	2020-11-03 18:54:47 UTC (rev 3822)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">

Modified: trunk/bindings/Android/SWORD/.idea/modules.xml
===================================================================
--- trunk/bindings/Android/SWORD/.idea/modules.xml	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/Android/SWORD/.idea/modules.xml	2020-11-03 18:54:47 UTC (rev 3822)
@@ -2,8 +2,8 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-      <module fileurl="file:///data/home/scribe/src/sword/bindings/Android/SWORD/Android-SWORD.iml" filepath="/data/home/scribe/src/sword/bindings/Android/SWORD/Android-SWORD.iml" group="SWORD" />
-      <module fileurl="file:///data/home/scribe/src/sword/bindings/Android/SWORD/app/app.iml" filepath="/data/home/scribe/src/sword/bindings/Android/SWORD/app/app.iml" group="SWORD/app" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/610104356/SWORD.iml" filepath="$PROJECT_DIR$/.idea/modules/610104356/SWORD.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/311794102/SWORD.app.iml" filepath="$PROJECT_DIR$/.idea/modules/311794102/SWORD.app.iml" />
     </modules>
   </component>
 </project>
\ No newline at end of file

Modified: trunk/bindings/Android/SWORD/build.gradle
===================================================================
--- trunk/bindings/Android/SWORD/build.gradle	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/Android/SWORD/build.gradle	2020-11-03 18:54:47 UTC (rev 3822)
@@ -8,7 +8,7 @@
         
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:4.0.2'
+        classpath 'com.android.tools.build:gradle:4.1.0'
         
 
         // NOTE: Do not place your application dependencies here; they belong

Modified: trunk/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties
===================================================================
--- trunk/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/Android/SWORD/gradle/wrapper/gradle-wrapper.properties	2020-11-03 18:54:47 UTC (rev 3822)
@@ -1,6 +1,6 @@
-#Sat Aug 08 11:07:11 CEST 2020
+#Fri Oct 30 16:43:02 MST 2020
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip

Modified: trunk/bindings/README
===================================================================
--- trunk/bindings/README	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/README	2020-11-03 18:54:47 UTC (rev 3822)
@@ -33,12 +33,3 @@
 option is currently available for the Perl bindings because the maintainer is unaware
 of how to implement it.
 
-Building java
--------------
-
-The source can be built with sun java (javac) or with GNU Classpath (jikes-classpath)
-GJC does not yet work, corba is expected to work with gcj 4.1
-
-set the JAVAC environment variable to whichever you wish to build with
-
-e.g. JAVAC=javac ./configure

Modified: trunk/bindings/flatapi.cpp
===================================================================
--- trunk/bindings/flatapi.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/flatapi.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -120,9 +120,9 @@
 org_biblesync_MessageReceivedCallback bibleSyncListener = 0;
 
 void bibleSyncCallback(char cmd, string pkt_uuid, string bible, string ref, string alt, string group, string domain, string info, string dump) {
-SWLog::getSystemLog()->logDebug("bibleSync callback msg: %c; pkt_uuid: %s; bible: %s; ref: %s; alt: %s; group: %s; domain: %s; info: %s; dump: %s", cmd, pkt_uuid.c_str(), bible.c_str(), ref.c_str(), alt.c_str(), group.c_str(), domain.c_str(), info.c_str(), dump.c_str());
+SWLOGD("bibleSync callback msg: %c; pkt_uuid: %s; bible: %s; ref: %s; alt: %s; group: %s; domain: %s; info: %s; dump: %s", cmd, pkt_uuid.c_str(), bible.c_str(), ref.c_str(), alt.c_str(), group.c_str(), domain.c_str(), info.c_str(), dump.c_str());
 	if (bibleSyncListener) {
-SWLog::getSystemLog()->logDebug("bibleSync listener is true");
+SWLOGD("bibleSync listener is true");
 		switch(cmd) {
 		// error
 		case 'E':
@@ -137,13 +137,13 @@
 			break;
 		// chat message
 		case 'C': {
-SWLog::getSystemLog()->logDebug("bibleSync Chat Received: %s", ref.c_str());
+SWLOGD("bibleSync Chat Received: %s", ref.c_str());
 			(*bibleSyncListener)(cmd, group.c_str(), alt.c_str());
 			break;
 		}
 		// navigation
 		case 'N':
-SWLog::getSystemLog()->logDebug("bibleSync Nav Received: %s", ref.c_str());
+SWLOGD("bibleSync Nav Received: %s", ref.c_str());
 			(*bibleSyncListener)(cmd, ref.c_str(), 0);
 			break;
 		}
@@ -1071,12 +1071,12 @@
 	}
 	SWBuf extraPath = confPath + "extraConfig.conf";
 	bool exists = FileMgr::existsFile(extraPath.c_str());
-SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", extraPath.c_str());
+SWLOGD("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", extraPath.c_str());
 
-SWLog::getSystemLog()->logDebug("libsword: init() adding locales from baseDir.");
+SWLOGD("libsword: init() adding locales from baseDir.");
 	LocaleMgr::getSystemLocaleMgr()->loadConfigDir(SWBuf(confPath + "locales.d").c_str());
 	LocaleMgr::getSystemLocaleMgr()->loadConfigDir(SWBuf(confPath + "uilocales.d").c_str());
-SWLog::getSystemLog()->logDebug("libsword: init() creating WebMgr using path: %s", path);
+SWLOGD("libsword: init() creating WebMgr using path: %s", path);
 	return (SWHANDLE) new HandleSWMgr(new WebMgr(confPath.c_str(), exists?extraPath.c_str():0));
 }
 
@@ -1300,14 +1300,14 @@
 	int count = 0;
 	const char **retVal = 0;
 	bool exists = FileMgr::existsFile(confPath);
-SWLog::getSystemLog()->logDebug("libsword: getConfigSections %s at path: %s", exists?"Exists":"Absent", confPath);
+SWLOGD("libsword: getConfigSections %s at path: %s", exists?"Exists":"Absent", confPath);
 	if (exists) {
 		SWConfig config(confPath);
 		SectionMap::const_iterator sit;
 		for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
 			count++;
 		}
-		SWLog::getSystemLog()->logDebug("libsword: %d sections found in config", count);
+SWLOGD("libsword: %d sections found in config", count);
 		retVal = (const char **)calloc(count+1, sizeof(const char *));
 		count = 0;
 		for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
@@ -1828,11 +1828,11 @@
  */
 void SWDLLEXPORT org_crosswire_sword_SWMgr_sendBibleSyncMessage
 		(SWHANDLE hMgr, const char *osisRefRaw) {
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() begin");
+SWLOGD("libsword: sendBibleSyncMessage() begin");
 
 #ifdef BIBLESYNC
 	if (!bibleSync) {
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
+SWLOGD("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
 		return;
 	}
 	SWBuf modName = "Bible";
@@ -1841,9 +1841,9 @@
 	if (modNamePrefix) modName = modNamePrefix;
 
 	BibleSync_xmit_status result = bibleSync->Transmit(modName.c_str(), osisRef.c_str());
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() finished with status code: %d", result);
+SWLOGD("libsword: sendBibleSyncMessage() finished with status code: %d", result);
 #else
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
+SWLOGD("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
 #endif
 
 }
@@ -1858,7 +1858,7 @@
 void SWDLLEXPORT org_crosswire_sword_SWMgr_startBibleSync
   (SWHANDLE hMgr, const char *appNameJS, const char *userNameJS, const char *passphraseJS, org_biblesync_MessageReceivedCallback callback) {
 
-	SWLog::getSystemLog()->logDebug("startBibleSync() start");
+SWLOGD("startBibleSync() start");
 	// only one thread
 	static bool starting = false;
 	if (starting) return;
@@ -1872,31 +1872,31 @@
 
 	// in case we're restarting, wait for our loop to finish for sure
 	if (bibleSync) {
-SWLog::getSystemLog()->logDebug("startBibleSync() sleeping 3 seconds");
+SWLOGD("startBibleSync() sleeping 3 seconds");
 		sleep(3);
 	}
 
 	bibleSyncListener = callback;
-	SWLog::getSystemLog()->logDebug("startBibleSync - calling init");
+SWLOGD("startBibleSync - calling init");
 
 	if (!bibleSync) {
-SWLog::getSystemLog()->logDebug("bibleSync initializing c-tor");
+SWLOGD("bibleSync initializing c-tor");
 		bibleSync = new BibleSync(appName.c_str(), (const char *)SWVersion().currentVersion, userName.c_str());
-SWLog::getSystemLog()->logDebug("bibleSync initializing setMode");
+SWLOGD("bibleSync initializing setMode");
 		bibleSync->setMode(BSP_MODE_PERSONAL, bibleSyncCallback, passphrase.c_str());
 	}
-	SWLog::getSystemLog()->logDebug("startBibleSync - starting while listener");
+SWLOGD("startBibleSync - starting while listener");
 	starting = false;
 	while(bibleSyncListener) {
-		SWLog::getSystemLog()->logDebug("bibleSyncListener - while loop iteration");
+SWLOGD("bibleSyncListener - while loop iteration");
 		BibleSync::Receive(bibleSync);
-		SWLog::getSystemLog()->logDebug("bibleSyncListener - sleeping for 2 seconds");
+SWLOGD("bibleSyncListener - sleeping for 2 seconds");
 		sleep(2);
 	}
 	delete bibleSync;
 	bibleSync = 0;
 #else
-	SWLog::getSystemLog()->logDebug("registerBibleSyncListener: !!! BibleSync disabled in native code.");
+SWLOGD("registerBibleSyncListener: !!! BibleSync disabled in native code.");
 #endif
 }
 
@@ -1909,7 +1909,7 @@
 void SWDLLEXPORT org_crosswire_sword_SWMgr_stopBibleSync
 		(SWHANDLE hMgr) {
 
-SWLog::getSystemLog()->logDebug("stopBibleSync()");
+SWLOGD("stopBibleSync()");
 #ifdef BIBLESYNC
 	// if we have a listen loop going, just break the loop; the bibleSync cleanup will happen there
 	if (::bibleSyncListener) ::bibleSyncListener = 0;
@@ -1918,6 +1918,6 @@
 		bibleSync = 0;
 	}
 #else
-SWLog::getSystemLog()->logDebug("registerBibleSyncListener: !!! BibleSync disabled in native code.");
+SWLOGD("registerBibleSyncListener: !!! BibleSync disabled in native code.");
 #endif
 }

Modified: trunk/bindings/java-jni/jni/swordstub.cpp
===================================================================
--- trunk/bindings/java-jni/jni/swordstub.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/bindings/java-jni/jni/swordstub.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -218,16 +218,16 @@
 		firstInit = false;
 	}
 	if (!mgr) {
-SWLog::getSystemLog()->logDebug("libsword: init() begin");
+SWLOGD("libsword: init() begin");
 		SWBuf baseDir  = SDCARD_PATH;
 		SWBuf confPath = baseDir + "/mods.d/globals.conf";
 		// be sure we have at least some config file already out there
 		if (!FileMgr::existsFile(confPath.c_str())) {
-			SWLog::getSystemLog()->logDebug("libsword: init() sword config not found, attempting to create parent of: %s", confPath.c_str());
+SWLOGD("libsword: init() sword config not found, attempting to create parent of: %s", confPath.c_str());
 			FileMgr::createParent(confPath.c_str());
 			remove(confPath.c_str());
 
-			SWLog::getSystemLog()->logDebug("libsword: init() saving basic: %s", confPath.c_str());
+SWLOGD("libsword: init() saving basic: %s", confPath.c_str());
 			SWConfig config(confPath.c_str());
 			config["Globals"]["HiAndroid"] = "weeee";
 			config.save();
@@ -235,11 +235,11 @@
 		if (!FileMgr::existsFile(confPath.c_str())) {
 			baseDir = STORAGE_BASE;
 			confPath = baseDir + "/mods.d/globals.conf";
-SWLog::getSystemLog()->logDebug("libsword: init() sword config STILL not found, attempting to create parent of: %s", confPath.c_str());
+SWLOGD("libsword: init() sword config STILL not found, attempting to create parent of: %s", confPath.c_str());
 			FileMgr::createParent(confPath.c_str());
 			remove(confPath.c_str());
 
-SWLog::getSystemLog()->logDebug("libsword: init() saving basic: %s", confPath.c_str());
+SWLOGD("libsword: init() saving basic: %s", confPath.c_str());
 			SWConfig config(confPath.c_str());
 			config["Globals"]["HiAndroid"] = "weeee";
 			config.save();
@@ -252,26 +252,26 @@
 			config.save();
 			exists = true;
 		}
-SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
+SWLOGD("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
 
-SWLog::getSystemLog()->logDebug("libsword: init() creating WebMgr using path: %s", baseDir.c_str());
+SWLOGD("libsword: init() creating WebMgr using path: %s", baseDir.c_str());
 		mgr = new WebMgr(baseDir, exists?confPath.c_str():nullptr);
 
-SWLog::getSystemLog()->logDebug("libsword: init() augmenting modules from: %s", AND_BIBLE_MODULES_PATH);
+SWLOGD("libsword: init() augmenting modules from: %s", AND_BIBLE_MODULES_PATH);
 		// for And Bible modules
 		mgr->augmentModules(AND_BIBLE_MODULES_PATH, true);
 		// if our basedir isn't the sdcard, let's augment the sdcard
 		if (strcmp(baseDir.c_str(), SDCARD_PATH)) { // NOLINT(bugprone-suspicious-string-compare)
-SWLog::getSystemLog()->logDebug("libsword: init() augmenting modules from: %s", SDCARD_PATH);
+SWLOGD("libsword: init() augmenting modules from: %s", SDCARD_PATH);
 			mgr->augmentModules(SDCARD_PATH, true);
 		}
 		// if our basedir isn't the private storage base, let's augment the private
 		// storage base in case a previous version of the app stored modules there.
 		if (strcmp(baseDir.c_str(), STORAGE_BASE)) { // NOLINT(bugprone-suspicious-string-compare)
-SWLog::getSystemLog()->logDebug("libsword: init() augmenting modules from: %s", STORAGE_BASE.c_str());
+SWLOGD("libsword: init() augmenting modules from: %s", STORAGE_BASE.c_str());
 			mgr->augmentModules(STORAGE_BASE, true);
 		}
-SWLog::getSystemLog()->logDebug("libsword: init() adding locales from baseDir.");
+SWLOGD("libsword: init() adding locales from baseDir.");
 		LocaleMgr::getSystemLocaleMgr()->loadConfigDir(SWBuf(STORAGE_BASE + "/locales.d").c_str());
 		LocaleMgr::getSystemLocaleMgr()->loadConfigDir(SWBuf(STORAGE_BASE + "/uilocales.d").c_str());
 		LocaleMgr::getSystemLocaleMgr()->loadConfigDir((SWBuf(SDCARD_PATH) + "/locales.d").c_str());
@@ -279,7 +279,7 @@
 
 		mgr->setGlobalOption("Footnotes", "On");
 		mgr->setGlobalOption("Cross-references", "On");
-SWLog::getSystemLog()->logDebug("libsword: init() end.");
+SWLOGD("libsword: init() end.");
 	}
 }
 
@@ -290,14 +290,14 @@
 	}
 	installStatusReporter->init(env, progressReporter);
 	if (!installMgr) {
-SWLog::getSystemLog()->logDebug("initInstall: installMgr is null");
+SWLOGD("initInstall: installMgr is null");
 		SWBuf baseDir  = SDCARD_PATH;
 		baseDir += "/InstallMgr";
 		SWBuf confPath = baseDir + "/InstallMgr.conf";
 		// be sure we have at least some config file already out there
-SWLog::getSystemLog()->logDebug("initInstall: confPath: %s", confPath.c_str());
+SWLOGD("initInstall: confPath: %s", confPath.c_str());
 		if (!FileMgr::existsFile(confPath.c_str())) {
-			SWLog::getSystemLog()->logDebug("initInstall: file doesn't exist: %s", confPath.c_str());
+SWLOGD("initInstall: file doesn't exist: %s", confPath.c_str());
 			FileMgr::createParent(confPath.c_str());
 			SWConfig config(confPath.c_str());
 			config["General"]["PassiveFTP"] = "true";
@@ -306,7 +306,7 @@
 		if (!FileMgr::existsFile(confPath.c_str())) {
 			baseDir = STORAGE_BASE;
 			confPath = baseDir + "/InstallMgr.conf";
-			SWLog::getSystemLog()->logDebug("initInstall: file STILL doesn't exist, attempting to create parent of: %s", confPath.c_str());
+SWLOGD("initInstall: file STILL doesn't exist, attempting to create parent of: %s", confPath.c_str());
 			FileMgr::createParent(confPath.c_str());
 			SWConfig config(confPath.c_str());
 			config["General"]["PassiveFTP"] = "true";
@@ -314,15 +314,15 @@
 		}
 		installMgr = new InstallMgr(baseDir, installStatusReporter);
 		if (disclaimerConfirmed) installMgr->setUserDisclaimerConfirmed(true);
-SWLog::getSystemLog()->logDebug("initInstall: instantiated InstallMgr with baseDir: %s", baseDir.c_str());
+SWLOGD("initInstall: instantiated InstallMgr with baseDir: %s", baseDir.c_str());
 	}
 }
 
 #ifdef BIBLESYNC
 void bibleSyncCallback(char cmd, string pkt_uuid, string bible, string ref, string alt, string group, string domain, string info, string dump) {
-SWLog::getSystemLog()->logDebug("bibleSync callback msg: %c; pkt_uuid: %s; bible: %s; ref: %s; alt: %s; group: %s; domain: %s; info: %s; dump: %s", cmd, pkt_uuid.c_str(), bible.c_str(), ref.c_str(), alt.c_str(), group.c_str(), domain.c_str(), info.c_str(), dump.c_str());
+SWLOGD("bibleSync callback msg: %c; pkt_uuid: %s; bible: %s; ref: %s; alt: %s; group: %s; domain: %s; info: %s; dump: %s", cmd, pkt_uuid.c_str(), bible.c_str(), ref.c_str(), alt.c_str(), group.c_str(), domain.c_str(), info.c_str(), dump.c_str());
 	if (bibleSyncListener) {
-		SWLog::getSystemLog()->logDebug("bibleSync listener is true");
+SWLOGD("bibleSync listener is true");
 		jclass cls = bibleSyncListenerEnv->GetObjectClass(bibleSyncListener);
 		switch (cmd) {
 			// error
@@ -338,11 +338,11 @@
 				break;
 				// chat message
 			case 'C': {
-				SWLog::getSystemLog()->logDebug("bibleSync Chat Received: %s", ref.c_str());
+SWLOGD("bibleSync Chat Received: %s", ref.c_str());
 				jmethodID mid = bibleSyncListenerEnv->GetMethodID(cls, "chatReceived",
 				                                                  "(Ljava/lang/String;Ljava/lang/String;)V");
 				if (mid) {
-					SWLog::getSystemLog()->logDebug("bibleSync listener mid is available");
+SWLOGD("bibleSync listener mid is available");
 					jstring user = strToUTF8Java(bibleSyncListenerEnv, group.c_str());
 					jstring msg = strToUTF8Java(bibleSyncListenerEnv, alt.c_str());
 					bibleSyncListenerEnv->CallVoidMethod(bibleSyncListener, mid, user, msg);
@@ -353,11 +353,11 @@
 			}
 				// navigation
 			case 'N': {
-				SWLog::getSystemLog()->logDebug("bibleSync Nav Received: %s", ref.c_str());
+SWLOGD("bibleSync Nav Received: %s", ref.c_str());
 				jmethodID mid = bibleSyncListenerEnv->GetMethodID(cls, "navReceived",
 				                                                  "(Ljava/lang/String;)V");
 				if (mid) {
-					SWLog::getSystemLog()->logDebug("bibleSync listener mid is available");
+SWLOGD("bibleSync listener mid is available");
 					jstring msg = strToUTF8Java(bibleSyncListenerEnv, ref.c_str());
 					bibleSyncListenerEnv->CallVoidMethod(bibleSyncListener, mid, msg);
 					bibleSyncListenerEnv->DeleteLocalRef(msg);
@@ -365,10 +365,10 @@
 				break;
 			}
 			default:
-				SWLog::getSystemLog()->logDebug("bibleSync listener got unhandled cmd: '%c'", cmd);
+SWLOGD("bibleSync listener got unhandled cmd: '%c'", cmd);
 				break;
 		}
-		SWLog::getSystemLog()->logDebug("bibleSync listener deleting local ref to cls");
+SWLOGD("bibleSync listener deleting local ref to cls");
 		bibleSyncListenerEnv->DeleteLocalRef(cls);
 	}
 }
@@ -401,7 +401,7 @@
 	const char *basePath = (basePathJS?env->GetStringUTFChars(basePathJS, nullptr):nullptr);
 	STORAGE_BASE = basePath;
 	env->ReleaseStringUTFChars(basePathJS, basePath);
-	SWLog::getSystemLog()->logDebug("setting STORAGE_BASE to: %s", STORAGE_BASE.c_str());
+SWLOGD("setting STORAGE_BASE to: %s", STORAGE_BASE.c_str());
 
 	delete mgr;
 	mgr = nullptr;
@@ -436,7 +436,7 @@
 			size++;
 	}
 
-SWLog::getSystemLog()->logDebug("getModInfoList returning %d length array\n", size);
+SWLOGD("getModInfoList returning %d length array\n", size);
 
 	jclass clazzModInfo = env->FindClass("org/crosswire/android/sword/SWMgr$ModInfo");
 	jclass clazzString  = env->FindClass("java/lang/String");
@@ -664,14 +664,14 @@
 	bool exists = FileMgr::existsFile(confPath.c_str());
 	jclass clazzString = env->FindClass("java/lang/String");
 	jobjectArray ret;
-	SWLog::getSystemLog()->logDebug("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
+SWLOGD("libsword: extraConfig %s at path: %s", exists?"Exists":"Absent", confPath.c_str());
 	if (exists) {
 		SWConfig config(confPath.c_str());
 		SectionMap::const_iterator sit;
 		for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
 			count++;
 		}
-		SWLog::getSystemLog()->logDebug("libsword: %d sections found in extraConfig", count);
+SWLOGD("libsword: %d sections found in extraConfig", count);
 		ret = (jobjectArray) env->NewObjectArray(count, clazzString, nullptr);
 		count = 0;
 		for (sit = config.getSections().begin(); sit != config.getSections().end(); ++sit) {
@@ -1063,7 +1063,7 @@
 	jstring sourceNameJS = (jstring)env->GetObjectField(me, sourceFieldID);
 	const char *modName = (modNameJS?env->GetStringUTFChars(modNameJS, nullptr):nullptr);
 	const char *sourceName = (sourceNameJS?env->GetStringUTFChars(sourceNameJS, nullptr):nullptr);
-SWLog::getSystemLog()->logDebug("libsword: lookup up module %s from source: %s", modName?modName:"<null>", sourceName?sourceName:"<null>");
+SWLOGD("libsword: lookup up module %s from source: %s", modName?modName:"<null>", sourceName?sourceName:"<null>");
 
 	if (sourceName && *sourceName) {
 		initInstall(env);
@@ -1095,13 +1095,13 @@
 
 	if (module) {
 		const char *keyText = env->GetStringUTFChars(keyTextJS, nullptr);
-SWLog::getSystemLog()->logDebug("setKeyText(%s, %s)", module->getName(), keyText);
+SWLOGD("setKeyText(%s, %s)", module->getName(), keyText);
 		SWKey *key = module->getKey();
 		VerseKey *vkey = SWDYNAMIC_CAST(VerseKey, key);
 		if (vkey && (*keyText=='+' ||*keyText=='-')) {
 			if (!stricmp(keyText+1, "book")) {
 				int newBook = vkey->getBook() + ((*keyText=='+')?1:-1);
-SWLog::getSystemLog()->logDebug("setting book to %d", newBook);
+SWLOGD("setting book to %d", newBook);
 				vkey->setBook((signed char)newBook);
 				env->ReleaseStringUTFChars(keyTextJS, keyText);
 				return;
@@ -1244,7 +1244,7 @@
 	const char *level2 = env->GetStringUTFChars(level2JS, nullptr);
 	const char *level3 = env->GetStringUTFChars(level3JS, nullptr);
 	bool filtered = (filteredJS == JNI_TRUE);
-SWLog::getSystemLog()->logDebug("calling getEntryAttributes(%s, %s, %s, %s", level1, level2, level3, (filtered?"true":"false"));
+SWLOGD("calling getEntryAttributes(%s, %s, %s, %s", level1, level2, level3, (filtered?"true":"false"));
 
 	jclass clazzString = env->FindClass("java/lang/String");
 	jobjectArray ret = nullptr;
@@ -1324,7 +1324,7 @@
 
 		ret = (jobjectArray) env->NewObjectArray(results.size(), clazzString, nullptr);
 
-SWLog::getSystemLog()->logDebug("getEntryAttributes: size returned: %d", results.size());
+SWLOGD("getEntryAttributes: size returned: %d", results.size());
 
 		for (int i = 0; i < results.size(); ++i) {
 			jstring s;
@@ -1674,23 +1674,23 @@
 	jstring retVal = nullptr;
 
 	const char *configKey = env->GetStringUTFChars(configKeyJS, nullptr);
-SWLog::getSystemLog()->logDebug("getConfigEntry(%s)\n", configKey);
+SWLOGD("getConfigEntry(%s)\n", configKey);
 
 	SWModule *module = getModule(env, me);
 
 	if (module) {
-SWLog::getSystemLog()->logDebug("getConfigEntry, found module.");
+SWLOGD("getConfigEntry, found module.");
 
 
 		const char *configValue = module->getConfigEntry(configKey);
-//SWLog::getSystemLog()->logDebug("getConfigEntry, configValue: %s", configValue);
+//SWLOGD("getConfigEntry, configValue: %s", configValue);
 		if (configValue) {
 			SWBuf confValue = configValue;
 			// special processing if we're requesting About-- kindof cheese
 			if (!strcmp("About", configKey)) {
 				RTFHTML().processText(confValue);
 			}
-//SWLog::getSystemLog()->logDebug("getConfigEntry, configValue: %s", confValue.c_str());
+//SWLOGD("getConfigEntry, configValue: %s", confValue.c_str());
 			retVal = strToUTF8Java(env, confValue.c_str());
 		}
 	}
@@ -1739,7 +1739,7 @@
 
 struct pu {
 	pu(JNIEnv *env, jobject pr) : env(env), progressReporter(pr), last(0) {
-SWLog::getSystemLog()->logDebug("building progressReporter");
+SWLOGD("building progressReporter");
 		jclass cls = env->GetObjectClass(progressReporter);
 		mid = env->GetMethodID(cls, "progressReport", "(I)V");
 		env->DeleteLocalRef(cls);
@@ -1895,7 +1895,7 @@
 
 	const char *modName = env->GetStringUTFChars(modNameJS, nullptr);
 
-SWLog::getSystemLog()->logDebug("uninstallModule %s\n", modName);
+SWLOGD("uninstallModule %s\n", modName);
 
 	const SWModule *module = mgr->getModule(modName);
 
@@ -1928,7 +1928,7 @@
 	for (InstallSourceMap::const_iterator it = installMgr->sources.begin(); it != installMgr->sources.end(); ++it) {
 		count++;
 	}
-SWLog::getSystemLog()->logDebug("getRemoteSources: count: %d\n", count);
+SWLOGD("getRemoteSources: count: %d\n", count);
 	ret = (jobjectArray) env->NewObjectArray(count, clazzString, nullptr);
 	count = 0;
 	for (InstallSourceMap::const_iterator it = installMgr->sources.begin(); it != installMgr->sources.end(); ++it) {
@@ -1974,12 +1974,12 @@
 JNIEXPORT jobjectArray JNICALL Java_org_crosswire_android_sword_InstallMgr_getRemoteModInfoList
 		(JNIEnv *env, jobject me, jstring sourceNameJS) {
 
-SWLog::getSystemLog()->logDebug("getRemoteModInfoList\n");
+SWLOGD("getRemoteModInfoList\n");
 	init(env);
 	initInstall(env);
 
 	const char *sourceName = env->GetStringUTFChars(sourceNameJS, nullptr);
-SWLog::getSystemLog()->logDebug("sourceName: %s\n", sourceName);
+SWLOGD("sourceName: %s\n", sourceName);
 
 	jclass clazzModInfo = env->FindClass("org/crosswire/android/sword/SWMgr$ModInfo");
 	jclass clazzString  = env->FindClass("java/lang/String");
@@ -1995,7 +1995,7 @@
 	jobjectArray ret = nullptr;
 	InstallSourceMap::const_iterator source = installMgr->sources.find(sourceName);
 	if (source == installMgr->sources.end()) {
-SWLog::getSystemLog()->logDebug("remoteListModules returning 0 length array\n");
+SWLOGD("remoteListModules returning 0 length array\n");
 		ret = (jobjectArray) env->NewObjectArray(0, clazzModInfo, nullptr);
 
 		env->ReleaseStringUTFChars(sourceNameJS, sourceName);
@@ -2003,7 +2003,7 @@
 
 		return ret;
 	}
-SWLog::getSystemLog()->logDebug("found source: %s\n", sourceName);
+SWLOGD("found source: %s\n", sourceName);
 
 	map<SWModule *, int> modStats = InstallMgr::getModuleStatus(*mgr, *source->second->getMgr());
 
@@ -2012,7 +2012,7 @@
 		size++;
 	}
 
-SWLog::getSystemLog()->logDebug("remoteListModules returning %d length array\n", size);
+SWLOGD("remoteListModules returning %d length array\n", size);
 	ret = (jobjectArray) env->NewObjectArray(size, clazzModInfo, nullptr);
 
 	int i = 0;
@@ -2084,7 +2084,7 @@
 	initInstall(env, progressReporter);
 
 	const char *sourceName = env->GetStringUTFChars(sourceNameJS, nullptr);
-SWLog::getSystemLog()->logDebug("remoteInstallModule: sourceName: %s\n", sourceName);
+SWLOGD("remoteInstallModule: sourceName: %s\n", sourceName);
 	InstallSourceMap::const_iterator source = installMgr->sources.find(sourceName);
 	env->ReleaseStringUTFChars(sourceNameJS, sourceName);
 
@@ -2096,7 +2096,7 @@
 	SWMgr *rmgr = is->getMgr();
 
 	const char *modName = env->GetStringUTFChars(modNameJS, nullptr);
-SWLog::getSystemLog()->logDebug("remoteInstallModule: modName: %s\n", modName);
+SWLOGD("remoteInstallModule: modName: %s\n", modName);
 	const SWModule *module = rmgr->getModule(modName);
 	env->ReleaseStringUTFChars(modNameJS, modName);
 
@@ -2135,12 +2135,12 @@
 
 	const char *sourceNameC = env->GetStringUTFChars(sourceNameJS, nullptr);
 	SWBuf sourceName = sourceNameC;
-SWLog::getSystemLog()->logDebug("getRemoteModuleByName: sourceName: %s\n", sourceName.c_str());
+SWLOGD("getRemoteModuleByName: sourceName: %s\n", sourceName.c_str());
 	InstallSourceMap::const_iterator source = installMgr->sources.find(sourceName.c_str());
 	env->ReleaseStringUTFChars(sourceNameJS, sourceNameC);
 
 	if (source == installMgr->sources.end()) {
-SWLog::getSystemLog()->logDebug("Couldn't find remote source [%s]\n", sourceName.c_str());
+SWLOGD("Couldn't find remote source [%s]\n", sourceName.c_str());
 		return nullptr;
 	}
 
@@ -2152,7 +2152,7 @@
 	env->ReleaseStringUTFChars(modNameJS, modNameC);
 
 	if (module) {
-SWLog::getSystemLog()->logDebug("Found remote module [%s]: %s\n", sourceName.c_str(), modName.c_str());
+SWLOGD("Found remote module [%s]: %s\n", sourceName.c_str(), modName.c_str());
 		SWBuf type = module->getType();
 		SWBuf cat = module->getConfigEntry("Category");
 		if (cat.length() > 0) type = cat;
@@ -2163,7 +2163,7 @@
 		fieldID = env->GetFieldID(clazzSWModule, "description", "Ljava/lang/String;"); env->SetObjectField(retVal, fieldID, strToUTF8Java(env, module->getDescription()));
 		fieldID = env->GetFieldID(clazzSWModule, "category", "Ljava/lang/String;"); env->SetObjectField(retVal, fieldID, strToUTF8Java(env, type));
 		fieldID = env->GetFieldID(clazzSWModule, "remoteSourceName", "Ljava/lang/String;"); env->SetObjectField(retVal, fieldID, strToUTF8Java(env, sourceName));
-SWLog::getSystemLog()->logDebug("returning remote module [%s]: %s\n", sourceName.c_str(), modName.c_str());
+SWLOGD("returning remote module [%s]: %s\n", sourceName.c_str(), modName.c_str());
 	}
 
 	return retVal;
@@ -2193,10 +2193,10 @@
  */
 JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_sendBibleSyncMessage
 		(JNIEnv *env, jobject me, jstring osisRefJS) {
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() begin");
+SWLOGD("libsword: sendBibleSyncMessage() begin");
 
 	if (!bibleSync) {
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
+SWLOGD("libsword: sendBibleSyncMessage() bibleSync not active; message not sent.");
 		return;
 	}
 	const char *osisRefString = env->GetStringUTFChars(osisRefJS, nullptr);
@@ -2208,7 +2208,7 @@
 #ifdef BIBLESYNC
 	BibleSync_xmit_status result = bibleSync->Transmit(modName.c_str(), osisRef.c_str());
 #endif
-SWLog::getSystemLog()->logDebug("libsword: sendBibleSyncMessage() finished with status code: %d", result);
+SWLOGD("libsword: sendBibleSyncMessage() finished with status code: %d", result);
 
 	env->ReleaseStringUTFChars(osisRefJS, osisRefString);
 }
@@ -2223,7 +2223,7 @@
 JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_startBibleSync
   (JNIEnv *env, jobject me, jstring appNameJS, jstring userNameJS, jstring passphraseJS, jobject bibleSyncListenerMe) {
 
-	SWLog::getSystemLog()->logDebug("startBibleSync() start");
+SWLOGD("startBibleSync() start");
 	// only one thread
 	static bool starting = false;
 	if (starting) return;
@@ -2243,32 +2243,32 @@
 
 	// in case we're restarting, wait for our loop to finish for sure
 	if (::bibleSync) {
-SWLog::getSystemLog()->logDebug("startBibleSync() sleeping 3 seconds");
+SWLOGD("startBibleSync() sleeping 3 seconds");
 		sleep(3);
 	}
 
 	bibleSyncListener = bibleSyncListenerMe;
 	bibleSyncListenerEnv = env;
-	SWLog::getSystemLog()->logDebug("startBibleSync - calling init");
+SWLOGD("startBibleSync - calling init");
 
 	if (!bibleSync) {
-SWLog::getSystemLog()->logDebug("bibleSync initializing c-tor");
+SWLOGD("bibleSync initializing c-tor");
 		bibleSync = new BibleSync(appName.c_str(), SWVersion::currentVersion.getText(), userName.c_str());
-SWLog::getSystemLog()->logDebug("bibleSync initializing setMode");
+SWLOGD("bibleSync initializing setMode");
 		bibleSync->setMode(BSP_MODE_PERSONAL, bibleSyncCallback, passphrase.c_str());
 	}
-	SWLog::getSystemLog()->logDebug("startBibleSync - starting while listener");
+SWLOGD("startBibleSync - starting while listener");
 	starting = false;
 	while (bibleSyncListener) {
-		SWLog::getSystemLog()->logDebug("bibleSyncListener - while loop iteration");
+SWLOGD("bibleSyncListener - while loop iteration");
 		BibleSync::Receive(bibleSync);
-		SWLog::getSystemLog()->logDebug("bibleSyncListener - sleeping for 2 seconds");
+SWLOGD("bibleSyncListener - sleeping for 2 seconds");
 		sleep(2);
 	}
 	delete bibleSync;
 	bibleSync = nullptr;
 #else
-	SWLog::getSystemLog()->logDebug("registerBibleSyncListener: !!! BibleSync disabled in native code.");
+SWLOGD("registerBibleSyncListener: !!! BibleSync disabled in native code.");
 #endif
 }
 
@@ -2281,7 +2281,7 @@
 JNIEXPORT void JNICALL Java_org_crosswire_android_sword_SWMgr_stopBibleSync
 		(JNIEnv *env, jobject me) {
 
-SWLog::getSystemLog()->logDebug("stopBibleSync()");
+SWLOGD("stopBibleSync()");
 #ifdef BIBLESYNC
 	// if we have a listen loop going, just break the loop; the bibleSync cleanup will happen there
 	if (bibleSyncListener) bibleSyncListener = nullptr;
@@ -2290,7 +2290,7 @@
 		bibleSync = nullptr;
 	}
 #else
-SWLog::getSystemLog()->logDebug("registerBibleSyncListener: !!! BibleSync disabled in native code.");
+SWLOGD("registerBibleSyncListener: !!! BibleSync disabled in native code.");
 #endif
 }
 

Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/configure.ac	2020-11-03 18:54:47 UTC (rev 3822)
@@ -65,6 +65,8 @@
 	AC_HELP_STRING([--with-conf],[install a new sword.conf (default=yes)]),,with_conf=yes)
 AC_ARG_WITH(cxx11regex,
 	AC_HELP_STRING([--with-cxx11regex],[build regex support using c++11 regex (default=no)]),,with_cxx11regex=no)
+AC_ARG_WITH(cxx11time,
+	AC_HELP_STRING([--with-cxx11time],[build time support using c++11 time (default=no)]),,with_cxx11time=no)
 AC_ARG_WITH(curl,
 	AC_HELP_STRING([--with-curl],[build install manager support using libcurl (default=yes)]),,with_curl=yes)
 AC_ARG_WITH(curl_sftp,
@@ -98,6 +100,10 @@
 	AC_HELP_STRING([--enable-utilities],[build utilities (default=yes)]),,enable_utilities=yes)
 AC_ARG_ENABLE(examples,
 	AC_HELP_STRING([--enable-examples],[build examples (default=no)]),,enable_examples=no)
+AC_ARG_ENABLE(logdebug,
+	AC_HELP_STRING([--disable-logd],[strip log debug messages from code for optimization (default=no)]),disable_logdebug=yes,disable_logdebug=no)
+AC_ARG_ENABLE(loginfo,
+	AC_HELP_STRING([--disable-logi],[strip log information messages from code for optimization (default=no)]),disable_loginfo=yes,disable_loginfo=no)
 AM_MAINTAINER_MODE
 
 # ---------------------------------------------------------------------
@@ -305,6 +311,18 @@
 	AM_CXXFLAGS="$AM_CXXFLAGS -DUSECXX11REGEX -std=c++11"
 fi
 
+if test x$with_cxx11time = xyes; then
+	AM_CXXFLAGS="$AM_CXXFLAGS -DUSECXX11TIME -std=c++11"
+fi
+
+if test x$disable_logdebug = xyes; then
+	AM_CXXFLAGS="$AM_CXXFLAGS -DSTRIPLOGD"
+fi
+
+if test x$disable_loginfo = xyes; then
+	AM_CXXFLAGS="$AM_CXXFLAGS -DSTRIPLOGI"
+fi
+
 # ---------------------------------------------------------------------
 # Check for clucene for lucene searching support
 # ---------------------------------------------------------------------
@@ -461,6 +479,9 @@
 AM_CONDITIONAL(INSTCONF, test x$with_conf = xyes)
 AM_CONDITIONAL(USECXX11REGEX, test x$with_cxx11regex = xyes)
 AM_CONDITIONAL(USEICUREGEX, test x$with_icuregex = xyes)
+AM_CONDITIONAL(USECXX11TIME, test x$with_cxx11time = xyes)
+AM_CONDITIONAL(STRIPLOGD, test x$disable_logdebug = xyes)
+AM_CONDITIONAL(STRIPLOGI, test x$disable_loginfo = xyes)
 AM_CONDITIONAL(WITHCURL, test x$with_curl = xyes)
 AM_CONDITIONAL(WITHGAPI, test x$with_gapi = xyes)
 AM_CONDITIONAL(WITHCURLSFTP, test x$with_curl_sftp = xyes)
@@ -489,6 +510,8 @@
 echo     "     BUILD TESTS:          $enable_tests"
 echo     "     BUILD EXAMPLES:       $enable_examples"
 echo     "     BUILD UTILITIES:      $enable_utilities"
+echo     "     STRIP LOG DEBUG:      $disable_logdebug"
+echo     "     STRIP LOG INFO:       $disable_loginfo"
 echo     ""
 echo     " Dependencies for standard use:"
 echo     "     REGEX:                $have_systemregex"
@@ -502,8 +525,9 @@
 echo     "     BZIP2:                $with_bzip2"
 echo     "     XZ:                   $with_xz"
 echo     "     ICUSWORD:             $with_icusword"
+echo     "     ICU-REGEX:            $with_icuregex"
 echo     "     CXX11-REGEX:          $with_cxx11regex"
-echo     "     ICU-REGEX:            $with_icuregex"
+echo     "     CXX11-TIME:           $with_cxx11time"
 echo     "     XAPIAN-CORE:          $with_xapian"
 echo     "     GAPI:                 $with_gapi"
 

Modified: trunk/include/defs.h
===================================================================
--- trunk/include/defs.h	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/include/defs.h	2020-11-03 18:54:47 UTC (rev 3822)
@@ -42,7 +42,20 @@
 
 SWORD_NAMESPACE_START
 
+#ifndef STRIPLOGD
+#define SWLOGD(...) SWLog::getSystemLog()->logDebug(__VA_ARGS__)
+#else
+#define SWLOGD(...) (void)0
+#endif
 
+#ifndef STRIPLOGI
+#define SWLOGI(...) SWLog::getSystemLog()->logInformation(__VA_ARGS__)
+#define SWLOGTI(...) SWLog::getSystemLog()->logTimedInformation(__VA_ARGS__)
+#else
+#define SWLOGI(...) (void)0
+#define SWLOGTI(...) (void)0 
+#endif
+
 // support for compilers with no RTTI
 #define SWDYNAMIC_CAST(className, object) dynamic_cast<className *>(object)
 

Modified: trunk/include/listkey.h
===================================================================
--- trunk/include/listkey.h	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/include/listkey.h	2020-11-03 18:54:47 UTC (rev 3822)
@@ -66,7 +66,7 @@
 
 	/** 
 	* @deprecated, use clear(), instead
-* 	*/
+ 	*/
 	SWDEPRECATED virtual void ClearList() { clear(); }
 
 

Modified: trunk/include/swlog.h
===================================================================
--- trunk/include/swlog.h	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/include/swlog.h	2020-11-03 18:54:47 UTC (rev 3822)
@@ -26,6 +26,7 @@
 //---------------------------------------------------------------------------
 
 #include <defs.h>
+#include <time.h>
 
 SWORD_NAMESPACE_START
 

Modified: trunk/include/swversion.h
===================================================================
--- trunk/include/swversion.h	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/include/swversion.h	2020-11-03 18:54:47 UTC (rev 3822)
@@ -24,12 +24,12 @@
 #ifndef SWVERSION_H
 #define SWVERSION_H
 
-#define SWORD_VERSION_NUM 1089033818
-#define SWORD_VERSION_STR "1.8.903.3818M"
+#define SWORD_VERSION_NUM 1089033821
+#define SWORD_VERSION_STR "1.8.903.3821M"
 #define SWORD_VERSION_MAJOR 1
 #define SWORD_VERSION_MINOR 8
 #define SWORD_VERSION_MICRO 903
-#define SWORD_VERSION_NANO 3818
+#define SWORD_VERSION_NANO 3821
 
 #include <defs.h>
 SWORD_NAMESPACE_START

Modified: trunk/src/frontend/swlog.cpp
===================================================================
--- trunk/src/frontend/swlog.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/frontend/swlog.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -31,7 +31,14 @@
 #include "swlog.h"
 #include "swbuf.h"
 
+#ifdef USECXX11TIME
+#include <chrono>
+using namespace std::chrono;
 
+static high_resolution_clock::time_point baseTime = high_resolution_clock::now();
+#endif
+
+
 SWORD_NAMESPACE_START
 
 
@@ -107,9 +114,15 @@
 	va_list argptr;
 
 	if (logLevel >= LOG_TIMEDINFO) {
+		const char *fmtStr = fmt;
 		SWBuf msg;
+#ifdef USECXX11TIME
+		SWBuf msgTS;
+		msgTS.setFormatted("[%.5f] %s", duration_cast<duration<double>>(high_resolution_clock::now() - baseTime).count(), fmt);
+		fmtStr = msgTS.c_str();
+#endif
 		va_start(argptr, fmt);
-		msg.setFormattedVA(fmt, argptr);
+		msg.setFormattedVA(fmtStr, argptr);
 		va_end(argptr);
 		logMessage(msg, LOG_TIMEDINFO);
 	}

Modified: trunk/src/keys/treekeyidx.cpp
===================================================================
--- trunk/src/keys/treekeyidx.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/keys/treekeyidx.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -63,9 +63,9 @@
 	datfd = FileMgr::getSystemFileMgr()->open(buf, fileMode, true);
 
 	if (!datfd || datfd->getFd() < 0) {
-		// couldn't find datafile but this might be fine if we're
-		// merely instantiating a remote InstallMgr SWMgr
-		SWLog::getSystemLog()->logDebug("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
+// couldn't find datafile but this might be fine if we're
+// merely instantiating a remote InstallMgr SWMgr
+SWLOGD("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
 		error = errno;
 	}
 	else {

Modified: trunk/src/keys/versekey.cpp
===================================================================
--- trunk/src/keys/versekey.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/keys/versekey.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -137,7 +137,7 @@
 		int map_range = map_verse;
 
 		ikey.refSys->translateVerse(refSys, &map_book, &map_chapter, &map_verse, &map_range);
-		//dbg_mapping SWLog::getSystemLog()->logDebug("verse: %s.%i.%i-%i\n", map_book, map_chapter, map_verse, map_range);
+//dbg_mapping SWLOGD("verse: %s.%i.%i-%i\n", map_book, map_chapter, map_verse, map_range);
 		
 		book = refSys->getBookNumberByOSISName(map_book);
 
@@ -478,7 +478,7 @@
 				char *abbr = 0;
 				stdstr(&abbr, getPrivateLocale()->translate(refSys->getBook(i)->getLongName()), 2);
 				strstrip(abbr);
-				SWLog::getSystemLog()->logDebug("VerseKey::Book: %s does not have a matching toupper abbrevs entry! book number returned was: %d, should be %d. Required entry to add to locale:", abbr, bn, i);
+				SWLog::getSystemLog()->logWarning("VerseKey::Book: %s does not have a matching toupper abbrevs entry! book number returned was: %d, should be %d. Required entry to add to locale:", abbr, bn, i);
 
 				StringMgr* stringMgr = StringMgr::getSystemStringMgr();
 				const bool hasUTF8Support = StringMgr::hasUTF8Support();
@@ -488,7 +488,7 @@
 				else {
 					stringMgr->upperLatin1(abbr);
 				}
-				SWLog::getSystemLog()->logDebug("%s=%s\n", abbr, refSys->getBook(i)->getOSISName());
+				SWLOGD("%s=%s\n", abbr, refSys->getBook(i)->getOSISName());
 				delete [] abbr;
 			}
 		}

Modified: trunk/src/mgr/curlftpt.cpp
===================================================================
--- trunk/src/mgr/curlftpt.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/curlftpt.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -81,7 +81,7 @@
 	static int my_fprogress(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow) {
 		if (clientp) {
 			MyProgressData *pd = (MyProgressData *)clientp;
-			SWLog::getSystemLog()->logDebug("CURLFTPTransport report progress: totalSize: %ld; xfered: %ld\n", (long)dltotal, (long)dlnow);
+SWLOGD("CURLFTPTransport report progress: totalSize: %ld; xfered: %ld\n", (long)dltotal, (long)dlnow);
 			if (pd->sr) {
 				if (dltotal < 0) dltotal = 0;
 				if (dlnow < 0) dlnow = 0;
@@ -117,7 +117,7 @@
 		SWBuf text;
 		text.size(size);
 		memcpy(text.getRawData(), data, size);
-		SWLog::getSystemLog()->logDebug("CURLFTPTransport: %s: %s", header.c_str(), text.c_str());
+SWLOGD("CURLFTPTransport: %s: %s", header.c_str(), text.c_str());
 		return 0;
 	}
 }
@@ -180,15 +180,15 @@
 
 #ifdef EPRT_AVAILABLE
 		curl_easy_setopt(session, CURLOPT_FTP_USE_EPRT, 0);
-		SWLog::getSystemLog()->logDebug("***** using CURLOPT_FTP_USE_EPRT\n");
+SWLOGD("***** using CURLOPT_FTP_USE_EPRT\n");
 #endif
 
 
-		SWLog::getSystemLog()->logDebug("***** About to perform curl easy action. \n");
-		SWLog::getSystemLog()->logDebug("***** destPath: %s \n", destPath);
-		SWLog::getSystemLog()->logDebug("***** sourceURL: %s \n", sourceURL);
+SWLOGD("***** About to perform curl easy action. \n");
+SWLOGD("***** destPath: %s \n", destPath);
+SWLOGD("***** sourceURL: %s \n", sourceURL);
 		res = curl_easy_perform(session);
-		SWLog::getSystemLog()->logDebug("***** Finished performing curl easy action. \n");
+SWLOGD("***** Finished performing curl easy action. \n");
 
 		// it seems CURL tries to use this option data later for some reason, so we unset here
 		curl_easy_setopt(session, CURLOPT_PROGRESSDATA, (void*)NULL);

Modified: trunk/src/mgr/curlhttpt.cpp
===================================================================
--- trunk/src/mgr/curlhttpt.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/curlhttpt.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -96,7 +96,7 @@
 		SWBuf text;
 		text.size(size);
 		memcpy(text.getRawData(), data, size);
-		SWLog::getSystemLog()->logDebug("CURLHTTPTransport: %s: %s", header.c_str(), text.c_str());
+SWLOGD("CURLHTTPTransport: %s: %s", header.c_str(), text.c_str());
 		return 0;
 	}
 }
@@ -159,15 +159,15 @@
 
 #ifdef EPRT_AVAILABLE
 		curl_easy_setopt(session, CURLOPT_FTP_USE_EPRT, 0);
-		SWLog::getSystemLog()->logDebug("***** using CURLOPT_FTP_USE_EPRT\n");
+SWLOGD("***** using CURLOPT_FTP_USE_EPRT\n");
 #endif
 
 
-		SWLog::getSystemLog()->logDebug("***** About to perform curl easy action. \n");
-		SWLog::getSystemLog()->logDebug("***** destPath: %s \n", destPath);
-		SWLog::getSystemLog()->logDebug("***** sourceURL: %s \n", sourceURL);
+SWLOGD("***** About to perform curl easy action. \n");
+SWLOGD("***** destPath: %s \n", destPath);
+SWLOGD("***** sourceURL: %s \n", sourceURL);
 		res = curl_easy_perform(session);
-		SWLog::getSystemLog()->logDebug("***** Finished performing curl easy action. \n");
+SWLOGD("***** Finished performing curl easy action. \n");
 
 		if(CURLE_OK != res) {
 			if (CURLE_OPERATION_TIMEDOUT == res
@@ -233,7 +233,7 @@
 			possibleNameLength = (int)(pBufRes - pBuf);
 			possibleName.setFormatted("%.*s", possibleNameLength, pBuf);
 			if (isalnum(possibleName[0])) {
-				SWLog::getSystemLog()->logDebug("getDirListHTTP: Found a file: %s", possibleName.c_str());
+SWLOGD("getDirListHTTP: Found a file: %s", possibleName.c_str());
 				pBuf = pBufRes;
 				pBufRes = (char *)findSizeStart(pBuf);
 				fSize = 0;

Modified: trunk/src/mgr/ftplibftpt.cpp
===================================================================
--- trunk/src/mgr/ftplibftpt.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/ftplibftpt.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -62,7 +62,7 @@
 	static int my_fprogress(netbuf *nControl, int xfered, void *arg) {
 		if (arg) {
 			MyProgressData *pd = (MyProgressData *)arg;
-//SWLog::getSystemLog()->logDebug("FTPLibFTPTransport report progress: totalSize: %ld; xfered: %d\n", pd->totalSize, xfered);
+//SWLOGD("FTPLibFTPTransport report progress: totalSize: %ld; xfered: %d\n", pd->totalSize, xfered);
 			if (pd->sr) {
 				pd->sr->update(pd->totalSize, xfered);
 			}
@@ -106,14 +106,14 @@
 char FTPLibFTPTransport::assureLoggedIn() {
 	char retVal = 0;
 	if (ftpConnection == 0) {
-		SWLog::getSystemLog()->logDebug("connecting to host: %s...\n", host.c_str());
+SWLOGD("connecting to host: %s...\n", host.c_str());
 		if (FtpConnect(host, &ftpConnection)) {
 			FtpOptions(FTPLIB_CONNMODE, (passive) ? FTPLIB_PASSIVE : FTPLIB_PORT, ftpConnection);
 			FtpOptions(FTPLIB_IDLETIME, timeoutMillis, ftpConnection);
 
-			SWLog::getSystemLog()->logDebug("connected. logging in...\n");
+SWLOGD("connected. logging in...\n");
 			if (FtpLogin(u.c_str(), p.c_str(), ftpConnection)) {
-				SWLog::getSystemLog()->logDebug("logged in.\n");
+SWLOGD("logged in.\n");
 				retVal = 0;
 			}
 			else {
@@ -134,11 +134,11 @@
 
 	char retVal = 0;
 
-	SWLog::getSystemLog()->logDebug("FTPLibFTPTransport::getURL(%s, %s, ...);\n", (destPath)?destPath:"(null)", sourceURL);
+SWLOGD("FTPLibFTPTransport::getURL(%s, %s, ...);\n", (destPath)?destPath:"(null)", sourceURL);
 	// assert we can login
 	retVal = assureLoggedIn();
 	if (retVal) return retVal;
-	SWLog::getSystemLog()->logDebug("FTPLibFTPTransport - logged in.\n");
+SWLOGD("FTPLibFTPTransport - logged in.\n");
 
 	SWBuf sourcePath = sourceURL;
 
@@ -148,7 +148,7 @@
 	}
 
 	sourcePath << (6 + host.length()); // shift << "ftp://hostname";
-	SWLog::getSystemLog()->logDebug("getting file %s to %s\n", sourcePath.c_str(), destBuf ? "*internal buffer*" : outFile.c_str());
+SWLOGD("getting file %s to %s\n", sourcePath.c_str(), destBuf ? "*internal buffer*" : outFile.c_str());
 	struct MyProgressData pd;
 	pd.sr = statusReporter;
 	pd.term = &term;
@@ -169,21 +169,21 @@
 	FtpOptions(FTPLIB_CALLBACKBYTES, (long)2048, ftpConnection);
 
 	if (sourcePath.endsWith("/") || sourcePath.endsWith("\\")) {
-//		SWLog::getSystemLog()->logDebug("getting test directory %s\n", sourcePath.c_str());
+//SWLOGD("getting test directory %s\n", sourcePath.c_str());
 //		FtpDir(NULL, sourcePath, ftpConnection);
-		SWLog::getSystemLog()->logDebug("getting real directory %s\n", sourcePath.c_str());
+SWLOGD("getting real directory %s\n", sourcePath.c_str());
 		retVal = FtpDir(0, sourcePath, ftpConnection) - 1;
-		SWLog::getSystemLog()->logDebug("got real directory %s to %s\n", sourcePath.c_str(), destBuf ? "*internal buffer*" : outFile.c_str());
+SWLOGD("got real directory %s to %s\n", sourcePath.c_str(), destBuf ? "*internal buffer*" : outFile.c_str());
 	}
 	else {
-		SWLog::getSystemLog()->logDebug("getting file %s\n", sourcePath.c_str());
+SWLOGD("getting file %s\n", sourcePath.c_str());
 		int size;
 		FtpSize(sourcePath, &size, FTPLIB_IMAGE, ftpConnection);
 		pd.totalSize = size;
 		retVal = FtpGet(0, sourcePath, FTPLIB_IMAGE, ftpConnection) - 1;
 	}
 	if (fd > 0) FileMgr::closeFile(fd);
-	SWLog::getSystemLog()->logDebug("FTPLibFTPTransport - returning: %d\n", retVal);
+SWLOGD("FTPLibFTPTransport - returning: %d\n", retVal);
 	return retVal;
 }
 

Modified: trunk/src/mgr/installmgr.cpp
===================================================================
--- trunk/src/mgr/installmgr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/installmgr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -298,7 +298,7 @@
 
 // TODO: rename to netCopy
 int InstallMgr::remoteCopy(InstallSource *is, const char *src, const char *dest, bool dirTransfer, const char *suffix) {
-SWLog::getSystemLog()->logDebug("remoteCopy: %s, %s, %s, %c, %s", (is?is->source.c_str():"null"), src, (dest?dest:"null"), (dirTransfer?'t':'f'), (suffix?suffix:"null"));
+SWLOGD("remoteCopy: %s, %s, %s, %c, %s", (is?is->source.c_str():"null"), src, (dest?dest:"null"), (dirTransfer?'t':'f'), (suffix?suffix:"null"));
 
 	// assert user disclaimer has been confirmed
 	if (!isUserDisclaimerConfirmed()) return -1;
@@ -350,7 +350,7 @@
 	// let's be sure we can connect.  This seems to be necessary but sucks
 //	SWBuf url = urlPrefix + is->directory.c_str() + "/"; //dont forget the final slash
 //	if (trans->getURL("swdirlist.tmp", url.c_str())) {
-//		 SWLog::getSystemLog()->logDebug("FTPCopy: failed to get dir %s\n", url.c_str());
+// SWLOGD("FTPCopy: failed to get dir %s\n", url.c_str());
 //		 return -1;
 //	}
 
@@ -359,7 +359,7 @@
 		SWBuf dir = (SWBuf)is->directory.c_str();
 		removeTrailingSlash(dir);
 		dir += (SWBuf)"/" + src; //dont forget the final slash
-SWLog::getSystemLog()->logDebug("remoteCopy: dirTransfer: %s", dir.c_str());
+SWLOGD("remoteCopy: dirTransfer: %s", dir.c_str());
 
 		retVal = trans->copyDirectory(urlPrefix, dir, dest, suffix);
 
@@ -372,7 +372,7 @@
 			url += (SWBuf)"/" + src; //dont forget the final slash
 			retVal = trans->getURL(dest, url.c_str());
 			if (retVal) {
-				SWLog::getSystemLog()->logDebug("netCopy: failed to get file %s", url.c_str());
+SWLOGD("netCopy: failed to get file %s", url.c_str());
 			}
 		}
 		SWCATCH (...) {
@@ -403,10 +403,11 @@
 	bool cipher = false;
 	SWBuf modFile;
 
-	SWLog::getSystemLog()->logDebug("***** InstallMgr::installModule\n");
-	if (fromLocation)
-		SWLog::getSystemLog()->logDebug("***** fromLocation: %s \n", fromLocation);
-	SWLog::getSystemLog()->logDebug("***** modName: %s \n", modName);
+SWLOGD("***** InstallMgr::installModule\n");
+	if (fromLocation) {
+SWLOGD("***** fromLocation: %s \n", fromLocation);
+	}
+SWLOGD("***** modName: %s \n", modName);
 
 	if (is)
 		sourceDir = (SWBuf)privatePath + "/" + is->uid;
@@ -490,10 +491,10 @@
 				else {
 					relativePath << strlen(mgr.prefixPath);
 				}
-				SWLog::getSystemLog()->logDebug("***** mgr.prefixPath: %s \n", mgr.prefixPath);
-				SWLog::getSystemLog()->logDebug("***** destMgr->prefixPath: %s \n", destMgr->prefixPath);
-				SWLog::getSystemLog()->logDebug("***** absolutePath: %s \n", absolutePath.c_str());
-				SWLog::getSystemLog()->logDebug("***** relativePath: %s \n", relativePath.c_str());
+SWLOGD("***** mgr.prefixPath: %s \n", mgr.prefixPath);
+SWLOGD("***** destMgr->prefixPath: %s \n", destMgr->prefixPath);
+SWLOGD("***** absolutePath: %s \n", absolutePath.c_str());
+SWLOGD("***** relativePath: %s \n", relativePath.c_str());
 
 				if (is) {
 					if (remoteCopy(is, relativePath.c_str(), absolutePath.c_str(), true)) {

Modified: trunk/src/mgr/localemgr.cpp
===================================================================
--- trunk/src/mgr/localemgr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/localemgr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -82,16 +82,16 @@
 	defaultLocaleName = 0;
 	
 	if (!iConfigPath) {
-		SWLog::getSystemLog()->logDebug("LOOKING UP LOCALE DIRECTORY...");
+		SWLOGTI("LOOKING UP LOCALE DIRECTORY...");
 		SWMgr::findConfig(&configType, &prefixPath, &configPath, &augPaths, &sysConf);
 		if (sysConf) {
 			if ((entry = sysConf->getSection("Install").find("LocalePath")) != sysConf->getSection("Install").end()) {
 				configType = 9;	// our own
 				stdstr(&prefixPath, (char *)entry->second.c_str());
-				SWLog::getSystemLog()->logDebug("LocalePath provided in sysConfig.");
+				SWLOGTI("LocalePath provided in sysConfig.");
 			}
 		}
-		SWLog::getSystemLog()->logDebug("LOOKING UP LOCALE DIRECTORY COMPLETE.");
+		SWLOGTI("LOOKING UP LOCALE DIRECTORY COMPLETE.");
 	}
 	else {
 		loadConfigDir(iConfigPath);
@@ -157,7 +157,7 @@
 
 void LocaleMgr::loadConfigDir(const char *ipath) {
 	LocaleMap::iterator it;
-	SWLog::getSystemLog()->logInformation("LocaleMgr::loadConfigDir loading %s", ipath);
+	SWLOGD("LocaleMgr::loadConfigDir loading %s", ipath);
  
 	SWBuf baseDir = ipath;
 	if (!baseDir.endsWith('/') && !baseDir.endsWith('\\')) baseDir += '/';

Modified: trunk/src/mgr/remotetrans.cpp
===================================================================
--- trunk/src/mgr/remotetrans.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/remotetrans.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -91,7 +91,7 @@
 
 vector<struct DirEntry> RemoteTransport::getDirList(const char *dirURL) {
 
-	SWLog::getSystemLog()->logDebug("RemoteTransport::getDirList(%s)", dirURL);
+SWLOGD("RemoteTransport::getDirList(%s)", dirURL);
 	vector<struct DirEntry> dirList;
 	
 	SWBuf dirBuf;
@@ -111,12 +111,12 @@
 				else if ((*end != 10) && (*end != 13))
 					break;
 			}
-			SWLog::getSystemLog()->logDebug("getDirList: parsing item %s(%d)\n", start, end-start);
+SWLOGD("getDirList: parsing item %s(%d)\n", start, end-start);
 			int status = ftpparse(&item, start, (int)(end - start));
 			// in ftpparse.h, there is a warning that name is not necessarily null terminated
 			SWBuf name;
 			name.append(item.name, item.namelen);
-			SWLog::getSystemLog()->logDebug("getDirList: got item %s\n", name.c_str());
+SWLOGD("getDirList: got item %s\n", name.c_str());
 			if (status && name != "." && name != "..") {
 				struct DirEntry i;
 				i.name = name;
@@ -138,14 +138,14 @@
  * @return error status 0: OK; -1: operation error, -2: connection error; -3: user requested termination
  */
 int RemoteTransport::copyDirectory(const char *urlPrefix, const char *dir, const char *dest, const char *suffix) {
-	SWLog::getSystemLog()->logDebug("RemoteTransport::copyDirectory");
+SWLOGD("RemoteTransport::copyDirectory");
 	int retVal = 0;
 
 	SWBuf url = SWBuf(urlPrefix) + SWBuf(dir);
 	removeTrailingSlash(url);
 	url += '/';
 	
-	SWLog::getSystemLog()->logDebug("NetTransport: getting dir %s\n", url.c_str());
+SWLOGD("NetTransport: getting dir %s\n", url.c_str());
 	vector<struct DirEntry> dirList = getDirList(url.c_str());
 
 	if (!dirList.size()) {

Modified: trunk/src/mgr/rtranspgdrive.cpp
===================================================================
--- trunk/src/mgr/rtranspgdrive.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/rtranspgdrive.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -76,7 +76,7 @@
 	static int my_fprogress(void *clientp, double dltotal, double dlnow, double ultotal, double ulnow) {
 		if (clientp) {
 			MyProgressData *pd = (MyProgressData *)clientp;
-			SWLog::getSystemLog()->logDebug("CURLFTPTransport report progress: totalSize: %ld; xfered: %ld\n", (long)dltotal, (long)dlnow);
+SWLOGD("RTransportGDrive report progress: totalSize: %ld; xfered: %ld\n", (long)dltotal, (long)dlnow);
 			if (pd->sr) {
 				if (dltotal < 0) dltotal = 0;
 				if (dlnow < 0) dlnow = 0;
@@ -144,15 +144,15 @@
 
 #ifdef EPRT_AVAILABLE
 		curl_easy_setopt(session, CURLOPT_FTP_USE_EPRT, 0);
-		SWLog::getSystemLog()->logDebug("***** using CURLOPT_FTP_USE_EPRT\n");
+SWLOGD("***** using CURLOPT_FTP_USE_EPRT\n");
 #endif
 
 		
-		SWLog::getSystemLog()->logDebug("***** About to perform curl easy action. \n");
-		SWLog::getSystemLog()->logDebug("***** destPath: %s \n", destPath);
-		SWLog::getSystemLog()->logDebug("***** sourceURL: %s \n", sourceURL);
+SWLOGD("***** About to perform curl easy action. \n");
+SWLOGD("***** destPath: %s \n", destPath);
+SWLOGD("***** sourceURL: %s \n", sourceURL);
 		res = curl_easy_perform(session);
-		SWLog::getSystemLog()->logDebug("***** Finished performing curl easy action. \n");
+SWLOGD("***** Finished performing curl easy action. \n");
 
 		// it seems CURL tries to use this option data later for some reason, so we unset here
 		curl_easy_setopt(session, CURLOPT_PROGRESSDATA, (void*)NULL);

Modified: trunk/src/mgr/stringmgr.cpp
===================================================================
--- trunk/src/mgr/stringmgr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/stringmgr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -194,10 +194,10 @@
 	if (!systemStringMgr) {
 #ifdef _ICU_
 		systemStringMgr = new ICUStringMgr();
-// 		SWLog::getSystemLog()->logInformation("created default ICUStringMgr");
+// 		SWLOGI("created default ICUStringMgr");
 #else
 		systemStringMgr = new StringMgr();
-//  		SWLog::getSystemLog()->logInformation("created default StringMgr");
+//  		SWLOGI("created default StringMgr");
 #endif
 	}
 	

Modified: trunk/src/mgr/swmgr.cpp
===================================================================
--- trunk/src/mgr/swmgr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/swmgr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -154,7 +154,7 @@
 			if (logLevel < 0) SWLog::getSystemLog()->logError("Invalid LogLevel found in %s: LogLevel: %s", logLocation.c_str(), logLevelString.c_str());
 			else {
 				SWLog::getSystemLog()->setLogLevel(logLevel);
-				SWLog::getSystemLog()->logInformation("Setting log level from %s to %s", logLocation.c_str(), logLevelString.c_str());
+				SWLOGTI("Setting log level from %s to %s", logLocation.c_str(), logLevelString.c_str());
 			}
 		}
 	}
@@ -391,20 +391,22 @@
 	int len = (int)path.length();
 	if ((len < 1) || ((iConfigPath[len-1] != '\\') && (iConfigPath[len-1] != '/')))
 		path += "/";
-	SWLog::getSystemLog()->logDebug("Checking at provided path: %s...", path.c_str());
+	SWLOGTI("Checking at provided path: %s...", path.c_str());
 	if (FileMgr::existsFile(path.c_str(), "mods.conf")) {
 		stdstr(&prefixPath, path.c_str());
 		path += "mods.conf";
 		stdstr(&configPath, path.c_str());
 	}
 	else if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-		SWLog::getSystemLog()->logDebug("Found mods.d/");
+		SWLOGTI("Found mods.d/");
 		stdstr(&prefixPath, path.c_str());
 		path += "mods.d";
 		stdstr(&configPath, path.c_str());
 		configType = 1;
 	}
-	else SWLog::getSystemLog()->logDebug("Config not found at provided path.");
+	else {
+		SWLOGTI("Config not found at provided path.");
+	}
 
 	config = 0;
 	sysConfig = 0;
@@ -467,19 +469,19 @@
 	SWBuf homeDir = FileMgr::getSystemFileMgr()->getHomeDir();
 
 	// check for a sysConf passed in to us
-	SWLog::getSystemLog()->logDebug("Checking for provided SWConfig(\"sword.conf\")...");
+	SWLOGTI("Checking for provided SWConfig(\"sword.conf\")...");
 	if (providedSysConf && *providedSysConf) {
 		sysConf = *providedSysConf;
-		SWLog::getSystemLog()->logDebug("found.");
+		SWLOGTI("found.");
 		if (!setLogLevel) { setSystemLogLevel(sysConf); setLogLevel = true; }
 	}
 
 	// if we haven't been given our datapath in a sysconf, we need to track it down
 	if (!sysConf) {
 		// check working directory
-		SWLog::getSystemLog()->logDebug("Checking working directory for sword.conf...");
+		SWLOGTI("Checking working directory for sword.conf...");
 		if (FileMgr::existsFile(".", "sword.conf")) {
-			SWLog::getSystemLog()->logDebug("Overriding any systemwide or ~/.sword/ sword.conf with one found in current directory.");
+			SWLOGTI("Overriding any systemwide or ~/.sword/ sword.conf with one found in current directory.");
 			sysConfPath = "./sword.conf";
 			sysConf = new SWConfig(sysConfPath);
 			if ((entry = sysConf->getSection("Install").find("DataPath")) != sysConf->getSection("Install").end()) {
@@ -495,17 +497,17 @@
 			}
 		}
 		if (!sysConfDataPath.size()) {
-			SWLog::getSystemLog()->logDebug("Checking working directory for mods.conf...");
+			SWLOGTI("Checking working directory for mods.conf...");
 			if (FileMgr::existsFile(".", "mods.conf")) {
-				SWLog::getSystemLog()->logDebug("found.");
+				SWLOGTI("found.");
 				stdstr(prefixPath, "./");
 				stdstr(configPath, "./mods.conf");
 				return;
 			}
 
-			SWLog::getSystemLog()->logDebug("Checking working directory for mods.d...");
+			SWLOGTI("Checking working directory for mods.d...");
 			if (FileMgr::existsDir(".", "mods.d")) {
-				SWLog::getSystemLog()->logDebug("found.");
+				SWLOGTI("found.");
 				stdstr(prefixPath, "./");
 				stdstr(configPath, "./mods.d");
 				*configType = 1;
@@ -513,9 +515,9 @@
 			}
 
 			// check working directory ../library/
-			SWLog::getSystemLog()->logDebug("Checking working directory ../library/ for mods.d...");
+			SWLOGTI("Checking working directory ../library/ for mods.d...");
 			if (FileMgr::existsDir("../library", "mods.d")) {
-				SWLog::getSystemLog()->logDebug("found.");
+				SWLOGTI("found.");
 				stdstr(prefixPath, "../library/");
 				stdstr(configPath, "../library/mods.d");
 				*configType = 1;
@@ -523,28 +525,28 @@
 			}
 
 			// check environment variable SWORD_PATH
-			SWLog::getSystemLog()->logDebug("Checking $SWORD_PATH...");
+			SWLOGTI("Checking $SWORD_PATH...");
 
 			SWBuf envsworddir = FileMgr::getEnvValue("SWORD_PATH");
 			if (envsworddir.length()) {
 				
-				SWLog::getSystemLog()->logDebug("found (%s).", envsworddir.c_str());
+				SWLOGTI("found (%s).", envsworddir.c_str());
 				path = envsworddir;
 				if ((envsworddir[envsworddir.length()-1] != '\\') && (envsworddir[envsworddir.length()-1] != '/'))
 					path += "/";
 
-				SWLog::getSystemLog()->logDebug("Checking $SWORD_PATH for mods.conf...");
+				SWLOGTI("Checking $SWORD_PATH for mods.conf...");
 				if (FileMgr::existsFile(path.c_str(), "mods.conf")) {
-					SWLog::getSystemLog()->logDebug("found.");
+					SWLOGTI("found.");
 					stdstr(prefixPath, path.c_str());
 					path += "mods.conf";
 					stdstr(configPath, path.c_str());
 					return;
 				}
 
-				SWLog::getSystemLog()->logDebug("Checking $SWORD_PATH for mods.d...");
+				SWLOGTI("Checking $SWORD_PATH for mods.d...");
 				if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-					SWLog::getSystemLog()->logDebug("found.");
+					SWLOGTI("found.");
 					stdstr(prefixPath, path.c_str());
 					path += "mods.d";
 					stdstr(configPath, path.c_str());
@@ -556,14 +558,14 @@
 
 			// check for systemwide globalConfPath
 
-			SWLog::getSystemLog()->logDebug("Parsing %s...", globalConfPath);
+			SWLOGTI("Parsing %s...", globalConfPath);
 			char *globPaths = 0;
 			char *gfp;
 			stdstr(&globPaths, globalConfPath);
 			for (gfp = strtok(globPaths, ":"); gfp; gfp = strtok(0, ":")) {
-				SWLog::getSystemLog()->logDebug("Checking for %s...", gfp);
+				SWLOGTI("Checking for %s...", gfp);
 				if (FileMgr::existsFile(gfp)) {
-					SWLog::getSystemLog()->logDebug("found.");
+					SWLOGTI("found.");
 					break;
 				}
 			}
@@ -575,14 +577,14 @@
 				SWBuf tryPath = homeDir;
 				tryPath += ".sword/sword.conf";
 				if (FileMgr::existsFile(tryPath)) {
-					SWLog::getSystemLog()->logDebug("Overriding any systemwide sword.conf with one found in users home directory (%s)", tryPath.c_str());
+					SWLOGTI("Overriding any systemwide sword.conf with one found in users home directory (%s)", tryPath.c_str());
 					sysConfPath = tryPath;
 				}
 				else {
 					SWBuf tryPath = homeDir;
 					tryPath += "sword/sword.conf";
 					if (FileMgr::existsFile(tryPath)) {
-						SWLog::getSystemLog()->logDebug("Overriding any systemwide sword.conf with one found in users home directory (%s)", tryPath.c_str());
+						SWLOGTI("Overriding any systemwide sword.conf with one found in users home directory (%s)", tryPath.c_str());
 						sysConfPath = tryPath;
 					}
 				}
@@ -604,21 +606,21 @@
 				sysConfDataPath += "/";
 
 			path = sysConfDataPath;
-			SWLog::getSystemLog()->logDebug("DataPath in %s is set to %s.", sysConfPath.c_str(), path.c_str());
-			SWLog::getSystemLog()->logDebug("Checking for mods.conf in DataPath...");
+			SWLOGTI("DataPath in %s is set to %s.", sysConfPath.c_str(), path.c_str());
+			SWLOGTI("Checking for mods.conf in DataPath...");
 			
 			if (FileMgr::existsFile(path.c_str(), "mods.conf")) {
-				SWLog::getSystemLog()->logDebug("found.");
+				SWLOGTI("found.");
 				stdstr(prefixPath, path.c_str());
 				path += "mods.conf";
 				stdstr(configPath, path.c_str());
 				*configType = 1;
 			}
 
-			SWLog::getSystemLog()->logDebug("Checking for mods.d in DataPath...");
+			SWLOGTI("Checking for mods.d in DataPath...");
 
 			if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-				SWLog::getSystemLog()->logDebug("found.");
+				SWLOGTI("found.");
 				stdstr(prefixPath, path.c_str());
 				path += "mods.d";
 				stdstr(configPath, path.c_str());
@@ -656,19 +658,19 @@
 	// for various flavors of windoze...
 	// check %ALLUSERSPROFILE%/Application Data/sword/
 
-	SWLog::getSystemLog()->logDebug("Checking $ALLUSERSPROFILE/Application Data/sword/...");
+	SWLOGTI("Checking $ALLUSERSPROFILE/Application Data/sword/...");
 
 	SWBuf envallusersdir = FileMgr::getEnvValue("ALLUSERSPROFILE");
 	if (envallusersdir.length()) {
-		SWLog::getSystemLog()->logDebug("found (%s).", envallusersdir.c_str());
+		SWLOGTI("found (%s).", envallusersdir.c_str());
 		path = envallusersdir;
 		if ((!path.endsWith("\\")) && (!path.endsWith("/")))
 			path += "/";
 
 		path += "Application Data/sword/";
-		SWLog::getSystemLog()->logDebug("Checking %s for mods.d...", path.c_str());
+		SWLOGTI("Checking %s for mods.d...", path.c_str());
 		if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-			SWLog::getSystemLog()->logDebug("found.");
+			SWLOGTI("found.");
 			stdstr(prefixPath, path.c_str());
 			path += "mods.d";
 			stdstr(configPath, path.c_str());
@@ -680,18 +682,18 @@
 	// for Mac OSX...
 	// check $HOME/Library/Application Support/Sword/
 
-	SWLog::getSystemLog()->logDebug("Checking $HOME/Library/Application Support/Sword/...");
+	SWLOGTI("Checking $HOME/Library/Application Support/Sword/...");
 
 	SWBuf pathCheck = FileMgr::getSystemFileMgr()->getHomeDir();
 	if (pathCheck.length()) {
-		SWLog::getSystemLog()->logDebug("found (%s).", pathCheck.c_str());
+		SWLOGTI("found (%s).", pathCheck.c_str());
 		path = pathCheck;
 		if ((!path.endsWith("\\")) && (!path.endsWith("/")))
 			path += "/";
 
-		SWLog::getSystemLog()->logDebug("Checking %s for mods.d...", path.c_str());
+		SWLOGTI("Checking %s for mods.d...", path.c_str());
 		if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-			SWLog::getSystemLog()->logDebug("found.");
+			SWLOGTI("found.");
 			stdstr(prefixPath, path.c_str());
 			path += "mods.d";
 			stdstr(configPath, path.c_str());
@@ -703,23 +705,23 @@
 	// FINALLY CHECK PERSONAL HOME DIRECTORY LOCATIONS
 	// check ~/.sword/
 
-	SWLog::getSystemLog()->logDebug("Checking home directory for ~/.sword...");
+	SWLOGTI("Checking home directory for ~/.sword...");
 
 	if (homeDir.length()) {
 		path = homeDir;
 		path += ".sword/";
-		SWLog::getSystemLog()->logDebug("  Checking for %smods.conf...", path.c_str());
+		SWLOGTI("  Checking for %smods.conf...", path.c_str());
 		if (FileMgr::existsFile(path.c_str(), "mods.conf")) {
-			SWLog::getSystemLog()->logDebug("found.");
+			SWLOGTI("found.");
 			stdstr(prefixPath, path.c_str());
 			path += "mods.conf";
 			stdstr(configPath, path.c_str());
 			return;
 		}
 
-		SWLog::getSystemLog()->logDebug("  Checking for %smods.d...", path.c_str());
+		SWLOGTI("  Checking for %smods.d...", path.c_str());
 		if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-			SWLog::getSystemLog()->logDebug("found.");
+			SWLOGTI("found.");
 			stdstr(prefixPath, path.c_str());
 			path += "mods.d";
 			stdstr(configPath, path.c_str());
@@ -729,9 +731,9 @@
 
 		path = homeDir;
 		path += "sword/";
-		SWLog::getSystemLog()->logDebug("  Checking for %smods.d...", path.c_str());
+		SWLOGTI("  Checking for %smods.d...", path.c_str());
 		if (FileMgr::existsDir(path.c_str(), "mods.d")) {
-			SWLog::getSystemLog()->logDebug("found.");
+			SWLOGTI("found.");
 			stdstr(prefixPath, path.c_str());
 			path += "mods.d";
 			stdstr(configPath, path.c_str());
@@ -837,20 +839,25 @@
 
 	if (!config) {	// If we weren't passed a config object at construction, find a config file
 		if (!configPath) {	// If we weren't passed a config path at construction...
-			SWLog::getSystemLog()->logDebug("LOOKING UP MODULE CONFIGURATION...");
+			SWLOGTI("LOOKING UP MODULE CONFIGURATION...");
 			SWConfig *externalSysConf = sysConfig;	// if we have a sysConf before findConfig, then we were provided one from an external source.
 			findConfig(&configType, &prefixPath, &configPath, &augPaths, &sysConfig);
 			if (!externalSysConf) mysysconfig = sysConfig;	// remind us to delete our own sysConfig in d-tor
-			SWLog::getSystemLog()->logDebug("LOOKING UP MODULE CONFIGURATION COMPLETE.");
+			SWLOGTI("LOOKING UP MODULE CONFIGURATION COMPLETE.");
 		}
 		if (configPath) {
+			SWLOGTI("LOADING MODULE CONFIGURATIONS...");
 			if (configType)
 				loadConfigDir(configPath);
 			else	config = myconfig = new SWConfig(configPath);
+			SWLOGTI("LOADING MODULE CONFIGURATIONS COMPLETE.");
 		}
 	}
 
 	if (config) {
+
+		SWLOGTI("LOADING MODULE LIBRARY...");
+
 		SectionMap::iterator Sectloop, Sectend;
 		ConfigEntMap::iterator Entryloop, Entryend;
 
@@ -888,6 +895,7 @@
 		if (!getModules().size()) // config exists, but no modules
 			ret = 1;
 
+		SWLOGTI("LOADING MODULE LIBRARY COMPLETE.");
 	}
 	else {
 		SWLog::getSystemLog()->logError("SWMgr: Can't find 'mods.conf' or 'mods.d'.  Try setting:\n\tSWORD_PATH=<directory containing mods.conf>\n\tOr see the README file for a full description of setup options (%s)", (configPath) ? configPath : "<configPath is null>");
@@ -1368,7 +1376,7 @@
 	FileDesc *modfd;
 	char ch;
 
-	SWLog::getSystemLog()->logTimedInformation("Found new module [%s]. Installing...", fname);
+	SWLOGTI("Found new module [%s]. Installing...", fname);
 	modfd = FileMgr::getSystemFileMgr()->open(fname, FileMgr::RDONLY);
 	ch = '\n';
 	conffd->write(&ch, 1);
@@ -1446,7 +1454,7 @@
 // also old deprecated virtuals so client overrides still are called
 
 void SWMgr::createAllModules(bool multiMod) {
-SWLog::getSystemLog()->logDebug("libsword: SWMgr::createAllModules");
+SWLOGD("libsword: SWMgr::createAllModules");
 	SectionMap::iterator it;
 	ConfigEntMap::iterator entry;
 	SWModule *newmod;

Modified: trunk/src/mgr/versificationmgr.cpp
===================================================================
--- trunk/src/mgr/versificationmgr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/mgr/versificationmgr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -432,21 +432,21 @@
 }
 
 void VersificationMgr::System::translateVerse(const System *dstSys, const char **book, int *chapter, int *verse, int *verse_end) const {
-	//dbg_mapping SWLog::getSystemLog()->logDebug("translate verse from %s to %s: %s.%i.%i-%i\n",getName(), dstSys->getName(), *book, *chapter, *verse, *verse_end);
+//dbg_mapping SWLOGD("translate verse from %s to %s: %s.%i.%i-%i\n",getName(), dstSys->getName(), *book, *chapter, *verse, *verse_end);
 
 	if (!strcmp(getName(),"KJVA") || !strcmp(getName(),"KJV")) {
 		if (!strcmp(dstSys->getName(),"KJVA") || !strcmp(dstSys->getName(),"KJV"))
 			return;
 		// reversed mapping
-		//dbg_mapping SWLog::getSystemLog()->logDebug("Perform reversed mapping.\n");
+		//dbg_mapping SWLOGD("Perform reversed mapping.\n");
 		int b = dstSys->getBookNumberByOSISName(*book)-1;
 
-		//dbg_mapping SWLog::getSystemLog()->logDebug("\tgetBookNumberByOSISName %i %s.\n", b, *book);
+		//dbg_mapping SWLOGD("\tgetBookNumberByOSISName %i %s.\n", b, *book);
 
 		if (b < 0) {
-			//dbg_mapping SWLog::getSystemLog()->logDebug("\tmappingsExtraBooks.size() %i.\n", dstSys->p->mappingsExtraBooks.size());
+			//dbg_mapping SWLOGD("\tmappingsExtraBooks.size() %i.\n", dstSys->p->mappingsExtraBooks.size());
 			for (int i=0; i<(int)dstSys->p->mappingsExtraBooks.size(); ++i) {
-				//dbg_mapping SWLog::getSystemLog()->logDebug("\t%s %s.\n", *book, dstSys->p->mappingsExtraBooks[i]);
+				//dbg_mapping SWLOGD("\t%s %s.\n", *book, dstSys->p->mappingsExtraBooks[i]);
 				if (!strcmp(*book, dstSys->p->mappingsExtraBooks[i])) {
 					b = (int)p->books.size()+i-2;
 					break;
@@ -454,10 +454,10 @@
 			}
 		}
 
-		//dbg_mapping SWLog::getSystemLog()->logDebug("\tb %i.\n", b);
+		//dbg_mapping SWLOGD("\tb %i.\n", b);
 
 		if (b >= (int)dstSys->p->mappings.size() || b < 0) {
-			//dbg_mapping SWLog::getSystemLog()->logDebug("no modification");
+			//dbg_mapping SWLOGD("no modification");
 			return;
 		}
 		
@@ -470,7 +470,7 @@
 			if (m[0] != b+1) continue; // filter inter-book rules
 
 			if (m[4] == *chapter && m[5] <= *verse) {
-				//dbg_mapping SWLog::getSystemLog()->logDebug("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
+				//dbg_mapping SWLOGD("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
 				if (m[5] == *verse || (m[6] >= *verse && m[5] <= *verse)) {
 					// inside of any mapping range
 					*chapter = m[1];
@@ -488,7 +488,7 @@
 			}
 		}
 		if (a != NULL) {
-			//dbg_mapping SWLog::getSystemLog()->logDebug("set appropriate: %i %i %i %i %i %i\n",a[1],a[2],a[3],a[4],a[5],a[6]);
+			//dbg_mapping SWLOGD("set appropriate: %i %i %i %i %i %i\n",a[1],a[2],a[3],a[4],a[5],a[6]);
 			(*chapter) = a[1];
 			// shift verse
 			const int d = (a[3]>a[2]?a[3]:a[2])-(a[6]>a[5]?a[6]:a[5]);
@@ -498,13 +498,13 @@
 				*verse_end = (*verse) + d;
 			*verse += d;
 			if (*a > dstSys->p->books.size()) {
-				//dbg_mapping SWLog::getSystemLog()->logDebug("appropriate: %i %i %i %i %i %i %i %i\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
-				//dbg_mapping SWLog::getSystemLog()->logDebug("book: %s\n", dstSys->getBook(a[7]-1)->getOSISName());
+				//dbg_mapping SWLOGD("appropriate: %i %i %i %i %i %i %i %i\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
+				//dbg_mapping SWLOGD("book: %s\n", dstSys->getBook(a[7]-1)->getOSISName());
 				*book = dstSys->getBook(a[7]-1)->getOSISName();
 			}
 			return;
 		}
-		//dbg_mapping SWLog::getSystemLog()->logDebug("There is no mapping.\n");
+		//dbg_mapping SWLOGD("There is no mapping.\n");
 	}
 	else if (strcmp(dstSys->getName(),"KJVA") && strcmp(dstSys->getName(),"KJV")) {
 		const System *kjva = getSystemVersificationMgr()->getVersificationSystem("KJVA");
@@ -530,7 +530,7 @@
 		}
 	}
 	else {
-		//dbg_mapping SWLog::getSystemLog()->logDebug("Perform forward mapping.\n");
+		//dbg_mapping SWLOGD("Perform forward mapping.\n");
 		const int b = getBookNumberByOSISName(*book)-1;
 		if (b >= (int)p->mappings.size())
 			return;
@@ -542,7 +542,7 @@
 				return;
 			}
 			if (m[1] == *chapter && m[2] <= *verse) {
-				//dbg_mapping SWLog::getSystemLog()->logDebug("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
+				//dbg_mapping SWLOGD("found mapping %i %i %i %i %i %i\n",m[1],m[2],m[3],m[4],m[5],m[6]);
 				if (m[2] == *verse || (m[3] >= *verse && m[2] <= *verse)) {
 					*chapter = m[4];
 					*verse = m[5];
@@ -563,7 +563,7 @@
 				return;
 			}
 		}
-		//dbg_mapping SWLog::getSystemLog()->logDebug("No mapping.\n");
+		//dbg_mapping SWLOGD("No mapping.\n");
 	}
 }
 

Modified: trunk/src/modules/comments/rawcom/rawcom.cpp
===================================================================
--- trunk/src/modules/comments/rawcom/rawcom.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/modules/comments/rawcom/rawcom.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -137,7 +137,7 @@
 
 
 void RawCom::linkEntry(const SWKey *inkey) {
-	VerseKey *destkey = &(VerseKey &)getVerseKey();
+	VerseKey *destkey = &getVerseKey();
 	const VerseKey *srckey = &getVerseKeyConst(inkey);
 
 	doLinkEntry(destkey->getTestament(), destkey->getTestamentIndex(), srckey->getTestamentIndex());

Modified: trunk/src/modules/common/rawstr.cpp
===================================================================
--- trunk/src/modules/common/rawstr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/modules/common/rawstr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -75,9 +75,9 @@
 	datfd = FileMgr::getSystemFileMgr()->open(buf, fileMode, true);
 
 	if (!datfd || datfd->getFd() < 0) {
-		// couldn't find datafile but this might be fine if we're
-		// merely instantiating a remote InstallMgr SWMgr
-		SWLog::getSystemLog()->logDebug("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
+// couldn't find datafile but this might be fine if we're
+// merely instantiating a remote InstallMgr SWMgr
+SWLOGD("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
 	}
 
 	instance++;

Modified: trunk/src/modules/common/rawstr4.cpp
===================================================================
--- trunk/src/modules/common/rawstr4.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/modules/common/rawstr4.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -75,9 +75,9 @@
 	datfd = FileMgr::getSystemFileMgr()->open(buf, fileMode, true);
 
 	if (!datfd || datfd->getFd() < 0) {
-		// couldn't find datafile but this might be fine if we're
-		// merely instantiating a remote InstallMgr SWMgr
-		SWLog::getSystemLog()->logDebug("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
+// couldn't find datafile but this might be fine if we're
+// merely instantiating a remote InstallMgr SWMgr
+SWLOGD("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
 	}
 
 	instance++;

Modified: trunk/src/modules/common/zstr.cpp
===================================================================
--- trunk/src/modules/common/zstr.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/modules/common/zstr.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -84,9 +84,9 @@
 	zdtfd = FileMgr::getSystemFileMgr()->open(buf, fileMode, true);
 
 	if (!zdtfd || zdtfd->getFd() < 0) {
-		// couldn't find datafile but this might be fine if we're
-		// merely instantiating a remote InstallMgr SWMgr
-		SWLog::getSystemLog()->logDebug("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
+// couldn't find datafile but this might be fine if we're
+// merely instantiating a remote InstallMgr SWMgr
+SWLOGD("Couldn't open file: %s. errno: %d", buf.c_str(), errno);
 	}
 
 	cacheBlock = 0;

Modified: trunk/src/modules/filters/utf8transliterator.cpp
===================================================================
--- trunk/src/modules/filters/utf8transliterator.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/modules/filters/utf8transliterator.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -179,7 +179,7 @@
 				UnicodeString id = ures_getUnicodeStringByIndex(colBund, 0, &status);
                         	UChar type = ures_getUnicodeStringByIndex(colBund, 1, &status).charAt(0);
 				UnicodeString resString = ures_getUnicodeStringByIndex(colBund, 2, &status);
-                        	SWLog::getSystemLog()->logDebug("ok so far");
+SWLOGD("ok so far");
 
 				 if (U_SUCCESS(status)) {
 					switch (type) {
@@ -194,9 +194,9 @@
 								0x0046 /*F*/) ?
 								UTRANS_FORWARD : UTRANS_REVERSE;
 		                                        //registry->put(id, resString, dir, visible);
-							SWLog::getSystemLog()->logDebug("instantiating %s ...", resString.getBuffer());
+SWLOGD("instantiating %s ...", resString.getBuffer());
 					    		registerTrans(id, resString, dir, status);
-							SWLog::getSystemLog()->logDebug("done.");
+SWLOGD("done.");
 	                                	}
 						break;
 					case 0x61: // 'a'
@@ -211,8 +211,7 @@
 			ures_close(colBund);
 		}
 	}
-	else
-	{
+	else {
 		SWLog::getSystemLog()->logError("UTF8Transliterator: ICU: no resource index to load");
 		SWLog::getSystemLog()->logError("UTF8Transliterator: ICU: status %s", u_errorName(status));
 	}
@@ -227,7 +226,7 @@
 		UTransDirection dir, UErrorCode &status )
 {
 #ifndef _ICUSWORD_
-		SWLog::getSystemLog()->logDebug("registering ID locally %s", ID.getBuffer());
+SWLOGD("registering ID locally %s", ID.getBuffer());
 		SWTransData swstuff;
 		swstuff.resource = resource;
 		swstuff.dir = dir;
@@ -242,25 +241,23 @@
 {
 #ifndef _ICUSWORD_
 		Transliterator *trans = Transliterator::createInstance(ID, UTRANS_FORWARD, status);
-		if (!U_FAILURE(status))
-		{
+		if (!U_FAILURE(status)) {
 			// already have it, clean up and return true
-			SWLog::getSystemLog()->logDebug("already have it %s", ID.getBuffer());
+SWLOGD("already have it %s", ID.getBuffer());
 			delete trans;
 			return true;
 		}
 		status = U_ZERO_ERROR;
 	
 	SWTransMap::iterator swelement;
-	if ((swelement = transMap.find(ID)) != transMap.end())
-	{
-		SWLog::getSystemLog()->logDebug("found element in map");
+	if ((swelement = transMap.find(ID)) != transMap.end()) {
+SWLOGD("found element in map");
 		SWTransData swstuff = (*swelement).second;
 		UParseError parseError;
 		//UErrorCode status;
 		//std::cout << "unregistering " << ID << std::endl;
 		//Transliterator::unregister(ID);
-		SWLog::getSystemLog()->logDebug("resource is %s", swstuff.resource.getBuffer());
+SWLOGD("resource is %s", swstuff.resource.getBuffer());
 
 		// Get the rules
 		//std::cout << "importing: " << ID << ", " << resource << std::endl;
@@ -297,8 +294,7 @@
 		//Transliterator *trans = instantiateTrans(ID, swstuff.resource, swstuff.dir, parseError, status);
 		//return trans;
 	}
-	else
-	{
+	else {
 		return false;
 	}
 #else

Modified: trunk/src/utilfuns/ftplib.c
===================================================================
--- trunk/src/utilfuns/ftplib.c	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/src/utilfuns/ftplib.c	2020-11-03 18:54:47 UTC (rev 3822)
@@ -58,8 +58,12 @@
 
 #include <winsock.h>
 
+#ifndef socklen_t
+#define socklen_t int
 #endif
 
+#endif
+
 #define BUILDING_LIBRARY
 #include "ftplib.h"
 
@@ -87,9 +91,6 @@
 #else
 #define lllog(M) fprintf(stderr, M);
 #endif
-#ifndef socklen_t
-#define socklen_t int
-#endif
 
 void *mymemccpy(void *dst, const void *src, int c, size_t n)
 {

Modified: trunk/tests/mgrtest.cpp
===================================================================
--- trunk/tests/mgrtest.cpp	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/tests/mgrtest.cpp	2020-11-03 18:54:47 UTC (rev 3822)
@@ -31,40 +31,42 @@
 #endif
 
 int main(int argc, char **argv) {
+
 	std::cerr << "\n";
-	SWLog::getSystemLog()->setLogLevel(SWLog::LOG_DEBUG);
+	std::cout << "\n";
+
+	SWLog::getSystemLog()->setLogLevel(SWLog::LOG_TIMEDINFO);
 	SWConfig *sysConf = 0;
 	if (argc > 1) {
 		sysConf = new SWConfig(argv[1]);
 	}
-	SWMgr mymgr(0, sysConf);
-	std::cerr << "\n\nprefixPath: " << mymgr.prefixPath;
-	std::cerr << "\nconfigPath: " << mymgr.configPath << "\n\n";
 
+	SWMgr myMgr(0, sysConf);
 
+	SWLog::getSystemLog()->logTimedInformation("prefixPath: %s", myMgr.prefixPath);
+	SWLog::getSystemLog()->logTimedInformation("configPath: %s\n\n", myMgr.configPath);
 
-	ModMap::iterator it;
-
-	for (it = mymgr.Modules.begin(); it != mymgr.Modules.end(); it++) {
-		std::cout << "[" << (*it).second->getName() << "] (Writable: " << (it->second->isWritable()?"Yes":"No") << ") [" << (*it).second->getDescription() << "]\n";
-		std::cout << "AbsoluteDataPath = " << it->second->getConfigEntry("AbsoluteDataPath") << "\n";
-		std::cout << "Has Feature HebrewDef = " << it->second->getConfig().has("Feature", "HebrewDef") << "\n";
-		if ((!strcmp((*it).second->getType(), "Biblical Texts")) || (!strcmp((*it).second->getType(), "Commentaries"))) {
+	for (ModMap::iterator it = myMgr.getModules().begin(); it != myMgr.getModules().end(); ++it) {
+		SWLog::getSystemLog()->logTimedInformation("[%s] Writable: %s) [%s]\n", it->second->getName(), (it->second->isWritable()?"Yes":"No"), it->second->getDescription());
+		SWLog::getSystemLog()->logTimedInformation("AbsoluteDataPath = %s\n", it->second->getConfigEntry("AbsoluteDataPath"));
+		SWLog::getSystemLog()->logTimedInformation("Has Feature HebrewDef = %s\n", (it->second->getConfig().has("Feature", "HebrewDef")?"Yes":"No"));
+		if ((!strcmp(it->second->getType(), SWMgr::MODTYPE_BIBLES)) || (!strcmp(it->second->getType(), SWMgr::MODTYPE_COMMENTARIES))) {
 			it->second->setKey("James 1:19");
-			std::cout << (*it).second->renderText() << "\n\n";
+			SWLog::getSystemLog()->logTimedInformation("%s\n\n", it->second->renderText().c_str());
 		}
 	}
 
-	SWModule *mhc = mymgr.Modules["MHC"];
+	SWModule *mhc = myMgr.Modules["MHC"];
 
 	if (mhc) {
-		std::cout << "MHC, Lang = " << mhc->getLanguage() << "\n\n";
+		SWLog::getSystemLog()->logTimedInformation("MHC, Lang = %s\n\n", mhc->getLanguage());
 		for (mhc->setKey("Gen 1:1"); *mhc->getKey() < (VerseKey) "Gen 1:10"; (*mhc)++)
-			std::cout << mhc->renderText() << "\n";
+			SWLog::getSystemLog()->logTimedInformation("%s\n", mhc->renderText().c_str());
 	}
 
 	if (sysConf)
 		delete sysConf;
 
+	SWLog::getSystemLog()->logTimedInformation("%s finished.", *argv);
 	return 0;
 }

Modified: trunk/usrinst.sh
===================================================================
--- trunk/usrinst.sh	2020-11-02 18:33:02 UTC (rev 3821)
+++ trunk/usrinst.sh	2020-11-03 18:54:47 UTC (rev 3822)
@@ -33,7 +33,10 @@
 OPTIONS="--disable-shared $OPTIONS"
 OPTIONS="--enable-debug $OPTIONS"
 #OPTIONS="--enable-profile $OPTIONS"
+#OPTIONS="--disable-logdebug $OPTIONS"
+#OPTIONS="--disable-loginfo $OPTIONS"
 
+OPTIONS="--with-cxx11time $OPTIONS"
 #OPTIONS="--with-cxx11regex $OPTIONS"
 OPTIONS="--with-icuregex $OPTIONS"
 #OPTIONS="--with-icusword $OPTIONS"



More information about the sword-cvs mailing list