On 11/22/16 20:01, Tony Whyman wrote: > On 22/11/16 16:56, Alex Peshkoff wrote: >> On 11/22/16 16:42, Tony Whyman wrote: >>> I am trying to find a way of determining whether Engine12 is available >>> as a provider when using the FIrebird 3 API. >>> >>> Enumerating the list of Providers in firebird.conf tells you whether it >>> has been configured but because the list is interpreted permissively, >>> all this tells you is that it might be available and not will be available. >>> >>> IPluginManager.getPlugins looks hopeful, but calling >>> >>> getPlugins(status,TYPE_PROVIDER,"Engine12",null) >>> >>> returns a nil pointer, while >>> >>> getPlugins(status,TYPE_PROVIDER,"engine12",null) >>> >>> returns an IPluginSet with an empty getName and repeated calls to >>> IPluginSet.next get you nowhere but an unending loop. >>> >>> Any ideas? >> Do you have default for Providers in .conf files? > Yes. But as I understand it if the engine12 library file is not > installed then even though I have the default list of providers, that > doesn't matter as the missing engine12 is silently ignored.
OK, just wanted make sure. Looks like you experiment with posix system - I see a case-dependent difference. NULL pointer returned means that there is an error loading provider - what error may be discovered analysing status vector (i.e. IStatus interface). Sorry, right now I have no idea why does it not load for you. May be some required library missing? Empty value returned by getName() is a kind of "EOF" for IPluginSet - no more plugins available. Empty getName() right after plugin set creation means it's an empty set. Certainly calling next() changes nothing in this case (next() always behaves this way in EOF state - just does nothing). ------------------------------------------------------------------------------ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel
