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
|
#include "common.h"
#include "import.h"
#include "core_functions.h"
#include "proto.h"
void ImportOldMetas() {
HANDLE hContact = (HANDLE)CallService( MS_DB_CONTACT_FINDFIRST, 0, 0);
char *proto;
HANDLE hMeta;
while(hContact != NULL) {
DWORD id = DBGetContactSettingDword(hContact, "MetaContacts", "MetaLink", (DWORD)-1);
if(id != (DWORD)-1) {
if(id > next_meta_id) next_meta_id = id + 1;
hMeta = GetMetaHandle(id);
if(hMeta) {
Meta_Assign(hContact, hMeta);
} else {
hMeta = NewMetaContact();
DBWriteContactSettingDword(hMeta, MODULE, META_ID, id);
DBWriteContactSettingByte(hMeta, MODULE, "Default", 0);
Meta_Assign(hContact, hMeta);
DBVARIANT dbv;
if(!DBGetContactSettingUTF8String(hContact, "CList", "Group", &dbv)) {
DBWriteContactSettingUTF8String(hMeta, "CList", "Group", dbv.pszVal);
DBFreeVariant(&dbv);
}
if(!DBGetContactSettingUTF8String(hContact, "CList", "MyHandle", &dbv)) {
DBWriteContactSettingUTF8String(hMeta, "CList", "MyHandle", dbv.pszVal);
DBFreeVariant(&dbv);
}
char *subProto = ContactProto(hContact);
if(subProto) {
if(!DBGetContactSettingUTF8String(hContact, subProto, "Nick", &dbv)) {
DBWriteContactSettingUTF8String(hMeta, MODULE, "Nick", dbv.pszVal);
DBFreeVariant(&dbv);
}
}
}
}
hContact = ( HANDLE )CallService( MS_DB_CONTACT_FINDNEXT,( WPARAM )hContact, 0 );
}
}
|