diff options
Diffstat (limited to 'src/modules/database')
-rw-r--r-- | src/modules/database/database.cpp | 22 | ||||
-rw-r--r-- | src/modules/database/profilemanager.cpp | 22 | ||||
-rw-r--r-- | src/modules/database/profilemanager.h | 18 |
3 files changed, 31 insertions, 31 deletions
diff --git a/src/modules/database/database.cpp b/src/modules/database/database.cpp index 2a8acd4a37..ec25931527 100644 --- a/src/modules/database/database.cpp +++ b/src/modules/database/database.cpp @@ -414,10 +414,9 @@ int makeDatabase(TCHAR *profile, DATABASELINK * link, HWND hwndDlg) }
// enumerate all plugins that had valid DatabasePluginInfo()
-static int FindDbPluginForProfile(const char*, DATABASELINK * dblink, LPARAM lParam)
+static int FindDbPluginForProfile(const TCHAR*, DATABASELINK *dblink, LPARAM lParam)
{
TCHAR* tszProfile = (TCHAR*)lParam;
-
int res = DBPE_CONT;
if (dblink && dblink->cbSize == sizeof(DATABASELINK)) {
char* szProfile = makeFileName(tszProfile);
@@ -450,12 +449,11 @@ static int FindDbPluginForProfile(const char*, DATABASELINK * dblink, LPARAM lPa }
// enumerate all plugins that had valid DatabasePluginInfo()
-static int FindDbPluginAutoCreate(const char*, DATABASELINK * dblink, LPARAM lParam)
+static int FindDbPluginAutoCreate(const TCHAR* ptszProfile, DATABASELINK * dblink, LPARAM lParam)
{
- TCHAR* tszProfile = (TCHAR*)lParam;
-
int res = DBPE_CONT;
if (dblink && dblink->cbSize == sizeof(DATABASELINK)) {
+ TCHAR* tszProfile = NEWTSTR_ALLOCA(ptszProfile);
CreatePathToFileT(tszProfile);
int err;
@@ -519,21 +517,18 @@ int LoadDatabaseModule(void) if ( !getProfile(szProfile, SIZEOF(szProfile)))
return 1;
- PLUGIN_DB_ENUM dbe;
- dbe.cbSize = sizeof(PLUGIN_DB_ENUM);
- dbe.lParam = (LPARAM)szProfile;
-
+ pfnDbEnumCallback pFunc;
if (_taccess(szProfile, 0) && shouldAutoCreate(szProfile))
- dbe.pfnEnumCallback = (int(*) (const char*, void*, LPARAM))FindDbPluginAutoCreate;
+ pFunc = FindDbPluginAutoCreate;
else
- dbe.pfnEnumCallback = (int(*) (const char*, void*, LPARAM))FindDbPluginForProfile;
+ pFunc = FindDbPluginForProfile;
// find a driver to support the given profile
bool retry;
int rc;
do {
retry = false;
- rc = CallService(MS_PLUGINS_ENUMDBPLUGINS, 0, (LPARAM)&dbe);
+ rc = enumDbPlugins(pFunc, (LPARAM)szProfile);
switch (rc) {
case -1: {
// no plugins at all
@@ -560,7 +555,8 @@ int LoadDatabaseModule(void) }
break;
}
- } while (retry);
+ }
+ while (retry);
return (rc != 0);
}
diff --git a/src/modules/database/profilemanager.cpp b/src/modules/database/profilemanager.cpp index 558646e510..63e6cd1c4d 100644 --- a/src/modules/database/profilemanager.cpp +++ b/src/modules/database/profilemanager.cpp @@ -115,7 +115,7 @@ static LRESULT CALLBACK ProfileNameValidate(HWND edit, UINT msg, WPARAM wParam, return CallWindowProc((WNDPROC)GetWindowLongPtr(edit, GWLP_USERDATA), edit, msg, wParam, lParam);
}
-static int FindDbProviders(const char*, DATABASELINK * dblink, LPARAM lParam)
+static int FindDbProviders(const TCHAR* tszProfileName, DATABASELINK *dblink, LPARAM lParam)
{
HWND hwndDlg = (HWND)lParam;
HWND hwndCombo = GetDlgItem(hwndDlg, IDC_PROFILEDRIVERS);
@@ -141,12 +141,8 @@ static INT_PTR CALLBACK DlgProfileNew(HWND hwndDlg, UINT msg, WPARAM wParam, LPA dat = (struct DlgProfData *)lParam;
{
// fill in the db plugins present
- PLUGIN_DB_ENUM dbe;
- dbe.cbSize = sizeof(dbe);
- dbe.pfnEnumCallback = (int(*)(const char*, void*, LPARAM))FindDbProviders;
- dbe.lParam = (LPARAM)hwndDlg;
- if (CallService(MS_PLUGINS_ENUMDBPLUGINS, 0, (LPARAM)&dbe) == -1) {
- // no plugins?!
+ if (enumDbPlugins(FindDbProviders, (LPARAM)hwndDlg) == -1) {
+ // what, no plugins?!
EnableWindow(GetDlgItem(hwndDlg, IDC_PROFILEDRIVERS), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_PROFILENAME), FALSE);
ShowWindow(GetDlgItem(hwndDlg, IDC_NODBDRIVERS), TRUE);
@@ -222,11 +218,11 @@ static INT_PTR CALLBACK DlgProfileNew(HWND hwndDlg, UINT msg, WPARAM wParam, LPA return FALSE;
}
-static int DetectDbProvider(const char*, DATABASELINK * dblink, LPARAM lParam)
+static int DetectDbProvider(const TCHAR*, DATABASELINK * dblink, LPARAM lParam)
{
int error;
-char* fullpath = makeFileName((TCHAR*)lParam);
+ char* fullpath = makeFileName((TCHAR*)lParam);
int ret = dblink->grokHeader(fullpath, &error);
mir_free(fullpath);
@@ -287,18 +283,14 @@ BOOL EnumProfilesForList(TCHAR *fullpath, TCHAR *profile, LPARAM lParam) SendMessage(hwndList, LVM_SETITEMTEXT, iItem, (LPARAM)&item);
if (bFileExists) {
- PLUGIN_DB_ENUM dbe;
TCHAR szPath[MAX_PATH];
+ _tcscpy(szPath, fullpath);
LVITEM item2;
item2.mask = LVIF_TEXT;
item2.iItem = iItem;
- dbe.cbSize = sizeof(dbe);
- dbe.pfnEnumCallback = (int(*)(const char*, void*, LPARAM))DetectDbProvider;
- dbe.lParam = (LPARAM)szPath;
- _tcscpy(szPath, fullpath);
- if (CallService(MS_PLUGINS_ENUMDBPLUGINS, 0, (LPARAM)&dbe) == 1) {
+ if ( enumDbPlugins(DetectDbProvider, (LPARAM)szPath) == 1) {
if (bFileLocked) {
// file locked
item2.pszText = TranslateT("<In Use>");
diff --git a/src/modules/database/profilemanager.h b/src/modules/database/profilemanager.h index 416403f057..64e4960fdc 100644 --- a/src/modules/database/profilemanager.h +++ b/src/modules/database/profilemanager.h @@ -21,13 +21,14 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-typedef struct {
+struct PROFILEMANAGERDATA
+{
TCHAR *szProfile; // in/out
TCHAR *szProfileDir; // in/out
BOOL noProfiles; // in
BOOL newProfile; // out
- DATABASELINK * dblink; // out
-} PROFILEMANAGERDATA;
+ DATABASELINK *dblink; // out
+};
int InitUtils(void);
@@ -41,3 +42,14 @@ bool shouldAutoCreate(TCHAR *szProfile); extern TCHAR g_profileDir[MAX_PATH];
extern TCHAR g_profileName[MAX_PATH];
+
+///////////////////////////////////////////////////////////////////////////////
+// former m_plugins.h
+
+#define DBPE_DONE 1
+#define DBPE_CONT 0
+#define DBPE_HALT (-1)
+
+typedef int (*pfnDbEnumCallback) (const TCHAR *pluginname, DATABASELINK* link, LPARAM lParam);
+
+int enumDbPlugins(pfnDbEnumCallback pFunc, LPARAM lParam);
|