summaryrefslogtreecommitdiff
path: root/meta2/import.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'meta2/import.cpp')
-rw-r--r--meta2/import.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/meta2/import.cpp b/meta2/import.cpp
new file mode 100644
index 0000000..abdab20
--- /dev/null
+++ b/meta2/import.cpp
@@ -0,0 +1,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 );
+ }
+} \ No newline at end of file