diff options
Diffstat (limited to 'metacontacts/meta_utils.c')
-rw-r--r-- | metacontacts/meta_utils.c | 22 |
1 files changed, 20 insertions, 2 deletions
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);
|