Re: Question regarding InstallMgr

P Mosier <[email protected]>
Newsgroups gmane.comp.literature.sword.devel
Message-ID <[email protected]>
Okay, so I've made some progress but appear to be stalled a bit.

When instructed to install a module, the command line installmgr doesn't 
seem to call InstallMgr::refreshRemoteSource() at all, and somehow the 
call to do the install succeeds.  Yet my example below fails if I don't 
call to refresh the source.

However, if I DO call refreshRemoteSource(), I will end up downloading 
EVERY module, despite only specifying one:

int myInstallModule(const char* modname) {
     sword::InstallSource is("FTP");
     is.source = "ftp.crosswire.org";
     is.directory = "/pub/sword/raw";

     sword::SWBuf installpath = getenv("HOME");
     installpath += "/.sword/";
     sword::InstallMgr* im = new sword::InstallMgr(installpath);
     im->setUserDisclaimerConfirmed(true);

     // XXX -- the call below appears to be required
     int refresh = im->refreshRemoteSource(&is);
     if (refresh) {
         printf("Refresh call failed, error: %d\n", refresh);
         exit(0);
     }

     // XXX -- this installs EVERY module, not just what is passed as an 
argument
     return im->installModule(&swrd, 0, modname, &is);
}

Someone have an idea what I might be missing?

Thanks,
- Paul M

On 12/8/22 16:18, Greg Hellings wrote:
> I believe you will need to refresh that source before you call the 
> install method. It's trying to look up the config file for that module 
> and isn't finding it. Those get downloaded and cached by the 
> Installmgr class when it refreshes a source.
>
> --Greg
>
> On Thu, Dec 8, 2022, 14:51 P Mosier <[email protected]> wrote:
>
>     Hello,
>
>     I am trying to figure out what the appropriate steps to take are for
>     programmatically installing a module through FTP.  Looking through
>     the
>     backend codebase, it seems like there are some configuration settings
>     that have to be initialized in SWMgr order for
>     InstallMgr::installModule
>     to work.  However, tracking this down has eluded me as InstallMgr
>     never
>     seems to be set up and called the same way twice.
>
>     I have this as a simple example:
>
>          sword::SWMgr swrd;
>          sword::InstallSource is("FTP");
>          is.source = "ftp.crosswire.org <http://ftp.crosswire.org>";
>          is.directory = "/pub/sword";
>
>          sword::InstallMgr im;
>          im.installModule(&swrd, 0, "KJVA", &is);
>
>     The call to installModule segfaults at this line:
>
>          module = mgr.config->getSections().find(modName);
>
>     I recognize it might be related to my own environment.  This is the
>     entire content of my /etc/sword:
>     [Install]
>     DataPath=/usr/share/sword/
>
>     Does someone have an idea for what I'm missing, or an example to
>     direct
>     me to so I can get a better handle on this area of code?
>
>     Thanks,
>     - Paul M
>
>     _______________________________________________
>     sword-devel mailing list: [email protected]
>     http://crosswire.org/mailman/listinfo/sword-devel
>     Instructions to unsubscribe/change your settings at above page
>
>
> _______________________________________________
> sword-devel mailing list:[email protected]
> http://crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page

_______________________________________________
sword-devel mailing list: [email protected]
http://crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.