[freetds] ODBC configuration dialog on Windows
ZIGLIO, Frediano, VF-IT
Frediano.Ziglio at vodafone.com
Tue May 4 07:53:47 EDT 2004
> The attached archive contains new files and patches for adding setup
> login dialogs to the Windows version of the FreeTDS ODBC driver. The
> patches are relative to version 0.63.dev.20040428. The files in the
> archive are:
> The configuration dialog. This also defines the ConfigDSN(),
> ConfigDriver(), and ConfigTranslator() external symbols. Only
> ConfigDSN() does anything useful, though.
> The login dialog. It defines a get_login_info() function
> displays the dialog. THIS FUNCTION IS NOT DECLARED IN ANY
> FILE! I wasn't sure which header it should be declared in.
> code compiles and runs correctly without a declaration, but
> can expect a warning where the src/odbc/odbc.c file calls it.
I moved all files to win32 directory, renamed w32* files to win* files
(just to have future compatibility with win64)
I get some warnings for get_login_info() but it's not so bad...
I don't know if ConfigDriver implementation is right.
> A resource file, defining the layouts of the two dialogs.
> It also contains version numbers. There are separate version
> numbers for "file" and "product". The ODBC manager displays
> the "file" version number, so I suggest you change both of
> them to always show the same number. Note that there are
> *TWO* locations (one as numbers, one as a string) for each
> version number. I hope you can think of a good way to
> updates; if not, then I suggest you change them to something
> that's obviously wrong like all 0's. Remember, when compiling
> with MSVC you don't run "configure" so thats not a good place
> to do it. Maybe "make freetds-stable.tgz"?
> The same section also allows you to add copyright information,
> some of which is displayed by the ODBC manager. You might
> to look it over.
A solution is to write a version.rc.in from which generate a version.rc
included from resource.rc. However I don't know what's the best way to
update build version automatically (last version number)...
> A simple batch file that installs the FreeTDS ODBC driver.
Written also a NSIS installed (you can find it at win32/freets.nsi)
> This REPLACES an existing file. Patching doesn't seem to work
> very well on this file. I Added the new files to the project.
> The new files are win32/msvc6/w32setup.c,
> win32/msvc6/setup.rc and win32/msvc6/resource.h, described
> I also added the src/tds/md5.c and src/tds/net.c files, which
> apparently new.
I updated also dev-c++ project files.
> Patches for other files. These are:
> I added ConfigDSN, ConfigDriver, and ConfigTranslator
> the list of exported symbols.
> I added a global variable named "hinstFreeTDS" which
> the handle of the driver's instance. The dialogs need
> to know which instance they're supposed to run it.
> (Honestly, I don't quite understand what Microsoft is
> doing here, but this is what works.)
> I added the a call to the new get_login_info()
> protected by "#ifdef WIN32". If you prefer to use
> you're welcome to change it. That might be a good
> anybody is using a different compiler in Windows.
> Also, I moved the odbc_parse_connect_string() call
> immediately after the get_login_info() call, to
> before it. This allows the login dialog to display
> server name, and to have defaults for the user name
> password, if the DSN string contains "UID" and "PWD"
I also updated a bit directory handling. Now configuration data for user
is stored in "Application Data" directory (usually "c:\Document and
Settings\username\Application Data" under w2k/xp/w2k3). Log is stored
correctly on desktop.
There are still some issue to solve
- I would remove authentication type, now obsoleted
- Address information is always stored in DSN entry, I would avoid this
and use DNS/WINS
More information about the FreeTDS