File: main.cpp.alternative

package info (click to toggle)
myodbc 3.51.11-6.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 5,056 kB
  • ctags: 1,933
  • sloc: ansic: 31,656; sh: 10,955; cpp: 2,439; makefile: 1,120
file content (120 lines) | stat: -rw-r--r-- 4,001 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
/* Copyright (C) 2000-2004 MySQL AB

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   There are special exceptions to the terms and conditions of the GPL as it
   is applied to this software. View the full text of the exception in file
   EXCEPTIONS in the directory of this software distribution.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */

#include "../util/MYODBCUtil.h"

/*!
    \brief    Allow one to manage DSN without using DM.

              This method seems to be unusable on OSX despite building
              and running fine. It suffers from 'focus' problems which
              I suspect is related to how we use QApplication.
 
              It still exists so that nobody tries to do it again
              without knowing the problems on OSX and because it may be 
              a good solution on other platforms as it can work with
              any implementation of a setup library.
*/

/*!
    Default args (in case missing on command-line).
*/
char *pszDriver         = "MySQL ODBC 3.51 Driver";
char *pszAttributes     = "DSN=myodbc";

int main( int argc, char **argv )
{
#ifdef WIN32
        HMODULE hModule = NULL;
#else
        void *hModule  = NULL;
#endif
        BOOL (*pFunc)( HWND, WORD, LPCSTR, LPCSTR );
        MYODBCUTIL_DRIVER *     pDriver     = MYODBCUtilAllocDriver();      /* we have to read in driver info to get setup lib */

        /*
           At this point we should have a driver name (friendly name).
           So lets determine the setup library file name (better to not 
           assume name). We read from ODBC system info.
        */
        MYODBCUtilReadDriver( pDriver, pszDriver );

        if ( !pDriver->pszSETUP )
        {
            fprintf( stderr, "Could not determine the file name of setup library.\n" );
            goto exit1;
        }

        /*
           We dynamically load setup lib to avoid introducing gui link dependencies
           into driver and also allowing the setup library to be pluggable. So
           a ncurses ver or a gtk ver etc could be created/used and this code is ok.
        */
#ifdef WIN32
        if ( !(hModule = LoadLibrary( pDriver->pszSETUP )) )
#else
        lt_dlinit();
        if ( !(hModule = (void *)lt_dlopen( pDriver->pszSETUP ))  )
#endif
        {
            fprintf( stderr, "Could not load the setup library.\n" );
            goto exit1;
        }
        /*
           The setup library should expose a ConfigDSN() C entry point
           for us to call.
        */
#ifdef WIN32
        pFunc = (BOOL (*)( HWND, WORD, LPCSTR, LPCSTR )) GetProcAddress( hModule, "ConfigDSN" );
#else
        pFunc = (BOOL (*)( HWND, WORD, LPCSTR, LPCSTR )) lt_dlsym( hModule, "ConfigDSN" );
#endif
        if ( pFunc == NULL )
        {
            fprintf( stderr, "Could not find ConfigDSN in setup library.\n" );
            goto exit1;
        }

        /*
           Prompt. 
        */
        if ( !pFunc( (HWND)1, ODBC_CONFIG_DSN, pszDriver, pszAttributes ) )
        {
            fprintf( stderr, "ConfigDSN failed.\n" );
            exit1; 

        /*
           Cleanup - we do not need the setup lib now :)
        */
#ifdef WIN32
        FreeLibrary( hModule );
#else
#endif


exit1:
    MYODBCUtilFreeDriver( pDriver );
    
    /* return code will get used by postinstall on OSX installer */
    /* for now - always return success */
    return 0;
}