Dear Eeli and Chris,
I believe you are both talking about different things.
*** Multiple Remote Installation Repositories (class InstallMgr)
If a module is installed from one Remote Repository with a name KJV, and
from another repository a module named KJV is installed, on this second
install InstallMgr will remove the previous version and install this
second one.
*** Multiple Local Repositories (class SWMgr)
If SWMgr find a module with the same name at different install locations
on the local machine (specified with AugementPath, or automatically
augmented to the global install from $HOME/.sword) then the frontend
developer has 2 option. Here is the comment from the code on SWMgr:
/**
* Adds books from a new path to the library
* @param path the path in which to search for books
* @param multiMod whether or not to keep multiple copies of the same
* book if found in different paths
* default - false, uses last found version of the book
*/
virtual void augmentModules(const char *path, bool multiMod = false);
Does this clear things up?
-Troy.
Eeli Kaikkonen wrote:
Chris Little wrote:
I have never heard of the module renaming facility that Eeli suggests,
and it is not part of the Sword library itself. When InstallMgr
discovers modules with the same ID in multiple repositories, it
assumes they refer to the same module (though possibly different
versions of it). By this facility, we publish one version via the
public repository while publishing a beta version (with an incremented
version number) from the beta repository. When testers download the
beta version, it overwrites the publicly released version, which can
only be regained by uninstalling and re-installing from the public
repository.
What's this then? The result is seen at least in BibleTime, and BT code
does nothing for it. It's from SWMgr::augmentModules():
// fix config's Section names to rename modules which are available more
than once
// find out which sections are in both config
objects
// inserting all configs first is not good
because that overwrites old keys and new modules would share the same
config
for (SectionMap::iterator it =
config->Sections.begin(); it != config->Sections.end(); ++it) {
if (saveConfig->Sections.find(
(*it).first ) != saveConfig->Sections.end()) { //if the new section is
already present rename it
ConfigEntMap entMap((*it).second);
SWBuf name;
int i = 1;
do { //module name already used?
name.setFormatted("%s_%d", (*it).first.c_str(), i);
i++;
} while
(config->Sections.find(name) != config->Sections.end());
config->Sections.insert(SectionMap::value_type(name, entMap) );
config->Sections.erase(it);
}
}
--Eeli Kaikkonen
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page