This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Oracle OCI under cygwin


On Mar  7 14:38, Michel Bardiaux wrote:
> I have an up-to-date cygwin on XP SP3 (and yes, rebasealled). I have
> also installed the Oracle basic (NOT instant) client for Win32. And I
> have a C application that queries an Oracle DB using OCI. Another
> relevant bit of setup info: environment variable TNS_ADMIN =
> \\besprd01\techdoc\database\oracle\OracleNet_WinClient (set in XP
> Control Panel).
> 
> Now, when compiled with MS Visual Studio 2010 Express, and run from a
> DOS (sic) box, the app works fine, which proves both the app and the
> setup are basically fine. Ditto when run from a Cygwin mintty.
> 
> But if I compile my app with cygwin, and run it in mintty (of course), I
> get an error message meaning essentially that OCILogon failed because it
> did not find an Oracle config file called tnsnames.ora that is supposed
> to be in $TNS_ADMIN.
> 
> Strace gives no clue - because the app WORKS when run by strace! The
> Win32 PROCMON shows that tnsnames.ora is looked for in %TNS_ADMIN% for
> the pure win32 app, but in the local directory for the cygwin app.
> Indeed, if I kluge my code in the cygwin case to temporarily chdir to
> $TNS_ADMIN (rewritten as a cygwin path of course) just before calling
> OCILogon, it works.

Cygwin applications don't use the WIN32 environment.  Rather they have
their own copy of the environment in a POSIX layout.  What happens is
probably that the OCI lib calls GetEnvironmentString ("TNS_ADMIN",...)
and gets nothing back, since the variable is just not in the Win32
environment of the Cygwin application.

The workaround is to do this before calling ani OCI lib function:

  #include <sys/cygwin.h>

  cygwin_internal (CW_SYNC_WINENV);

This call copies the POSIX environment over to the Win32 environment
correctly in 


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]