From c94a4dbc5bff33b467fa08a3543f3f20c9aca65e Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@4f64403b-2f21-0410-a795-97e2b3489a10> Date: Tue, 12 Feb 2008 01:17:31 +0000 Subject: db string fixes git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@397 4f64403b-2f21-0410-a795-97e2b3489a10 --- metacontacts/meta_utils.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'metacontacts/meta_utils.c') diff --git a/metacontacts/meta_utils.c b/metacontacts/meta_utils.c index 7d064e1..2c00ddc 100644 --- a/metacontacts/meta_utils.c +++ b/metacontacts/meta_utils.c @@ -38,11 +38,12 @@ int MyDBWriteContactSetting(HANDLE hContact, const char *szModule, const char *s int MyDBGetContactSetting(HANDLE hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv) { static BOOL strsvc, strsvcset = FALSE; + memset(dbv, 0, sizeof(DBVARIANT)); if(!strsvcset) {strsvc = ServiceExists(MS_DB_CONTACT_GETSETTING_STR); strsvcset = TRUE;} // preserve unicode strings - this service should return other data types unchanged - if(strsvc) return DBGetContactSettingStringUtf(hContact, szModule, szSetting, dbv); + if(strsvc) return DBGetContactSettingW(hContact, szModule, szSetting, dbv); return DBGetContactSetting(hContact, szModule, szSetting, dbv); } @@ -56,7 +57,6 @@ int Meta_EqualDBV(DBVARIANT *dbv, DBVARIANT *id) { switch(dbv->type) { case DBVT_DELETED: - return 1; case DBVT_BYTE: if(dbv->bVal == id->bVal) @@ -69,8 +69,12 @@ int Meta_EqualDBV(DBVARIANT *dbv, DBVARIANT *id) { return 1; break; case DBVT_ASCIIZ: + case DBVT_UTF8: if(!strcmp(dbv->pszVal,id->pszVal)) return 1; + case DBVT_WCHAR: + if(!wcscmp(dbv->pwszVal,id->pwszVal)) + return 1; case DBVT_BLOB: if(dbv->cpbVal == id->cpbVal) { @@ -135,6 +139,7 @@ HANDLE Meta_GetHandle(const char *protocol, DBVARIANT *id) return hUser; break; case DBVT_ASCIIZ: + case DBVT_UTF8: if(!strcmp(dbv.pszVal,id->pszVal)) { DBFreeVariant(&dbv); @@ -145,6 +150,17 @@ HANDLE Meta_GetHandle(const char *protocol, DBVARIANT *id) DBFreeVariant(&dbv); break; } + case DBVT_WCHAR: + if(!wcscmp(dbv.pwszVal,id->pwszVal)) + { + DBFreeVariant(&dbv); + return hUser; + } + else + { + DBFreeVariant(&dbv); + break; + } case DBVT_BLOB: if(dbv.cpbVal == id->cpbVal) { @@ -696,7 +712,9 @@ void CopyStatusData(HANDLE hMeta) { bDoneStatus = TRUE; } if((!bDoneXStatus) && (!MyDBGetContactSetting(hContact, proto, "XStatusId", &dbv)) && dbv.type != DBVT_DELETED) { + DBWriteContactSettingString(hMeta, META_PROTO, "XStatusProto", proto); MyDBWriteContactSetting(hMeta, META_PROTO, "XStatusId", &dbv); + DBFreeVariant(&dbv); if(!MyDBGetContactSetting(hContact, proto, "XStatusMsg", &dbv)) { MyDBWriteContactSetting(hMeta, META_PROTO, "XStatusMsg", &dbv); -- cgit v1.2.3