Changeset 2410
- Timestamp:
- 08/05/07 22:19:56 (1 year ago)
- Files:
-
- plugins/irmc-sync/src/irmc_sync.c (modified) (20 diffs)
- plugins/irmc-sync/src/irmc_sync.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/irmc-sync/src/irmc_sync.c
r2409 r2410 230 230 231 231 /** 232 * Load the synchronization anchors.232 * Load the general synchronization anchor. 233 233 */ 234 234 void load_sync_anchors( irmc_environment *env ) … … 238 238 irmc_config *config = &(env->config); 239 239 240 char *anchor = osync_anchor_retrieve(env->anchor_path, "event"); 241 if (!anchor) { 242 config->calendar_changecounter = 0; 243 config->calendar_dbid = NULL; 244 } else { 245 char data[ 256 ]; 246 memset( data, 0, sizeof( data ) ); 247 248 sscanf( anchor, "%d:%256s", &config->calendar_changecounter, data ); 249 config->calendar_dbid = g_strdup( data ); 250 } 251 g_free( anchor ); 252 253 anchor = osync_anchor_retrieve(env->anchor_path, "contact"); 254 if (!anchor) { 255 config->addressbook_changecounter = 0; 256 config->addressbook_dbid = NULL; 257 } else { 258 char data[ 256 ]; 259 memset( data, 0, sizeof( data ) ); 260 sscanf( anchor, "%d:%256s", &config->addressbook_changecounter, data ); 261 config->addressbook_dbid = g_strdup( data ); 262 } 263 g_free( anchor ); 264 265 anchor = osync_anchor_retrieve(env->anchor_path, "note"); 266 if (!anchor) { 267 config->notebook_changecounter = 0; 268 config->notebook_dbid = NULL; 269 } else { 270 char data[ 256 ]; 271 memset( data, 0, sizeof( data ) ); 272 273 sscanf( anchor, "%d:%256s", &config->notebook_changecounter, data ); 274 config->notebook_dbid = g_strdup( data ); 275 } 276 g_free( anchor ); 277 278 anchor = osync_anchor_retrieve(env->anchor_path, "general"); 240 char *anchor = osync_anchor_retrieve(env->anchor_path, "general"); 279 241 if (!anchor) { 280 242 config->serial_number = NULL; … … 297 259 osync_trace(TRACE_ENTRY, "%s(%p)", __func__, env); 298 260 299 char anchor[ 1024 ];300 261 const irmc_config *config = &(env->config); 301 302 /* TODO: check if sink is active303 if (osync_member_objtype_enabled(member, "event")) {304 if (config->calendar_changecounter >= 0 && strcmp(config->calendar_dbid, "FFFFFF")) {305 snprintf( anchor, sizeof( anchor ), "%d:%s", config->calendar_changecounter, config->calendar_dbid );306 osync_anchor_update( env->anchor_path, "event", anchor );307 } else {308 osync_trace(TRACE_INTERNAL, "ERROR: Invalid values for event anchor detected.");309 }310 } else {311 osync_trace(TRACE_INTERNAL, "WARNING: Synchronization of events was disabled.");312 }313 314 if (osync_member_objtype_enabled(member, "contact")) {315 if (config->addressbook_changecounter >= 0 && strcmp(config->addressbook_dbid, "FFFFFF")) {316 snprintf( anchor, sizeof( anchor ), "%d:%s", config->addressbook_changecounter, config->addressbook_dbid );317 osync_anchor_update( env->anchor_path, "contact", anchor );318 } else {319 osync_trace(TRACE_INTERNAL, "ERROR: Invalid values for contact anchor detected.");320 }321 } else {322 osync_trace(TRACE_INTERNAL, "WARNING: Synchronization of contacts was disabled.");323 }324 325 if (osync_member_objtype_enabled(member, "note")) {326 if (config->notebook_changecounter >= 0 && strcmp(config->notebook_dbid, "FFFFFF")) {327 snprintf( anchor, sizeof( anchor ), "%d:%s", config->notebook_changecounter, config->notebook_dbid );328 osync_anchor_update( env->anchor_path, "note", anchor );329 } else {330 osync_trace(TRACE_INTERNAL, "ERROR: Invalid values for note anchor detected.");331 }332 } else {333 osync_trace(TRACE_INTERNAL, "WARNING: Synchronization of notes was disabled.");334 }335 */336 262 337 snprintf( anchor, sizeof( anchor ), "%s", config->serial_number ); 338 osync_anchor_update( env->anchor_path, "general", anchor ); 263 osync_anchor_update( env->anchor_path, "general", config->serial_number ); 339 264 osync_trace(TRACE_EXIT, "%s", __func__); 340 265 } … … 937 862 { 938 863 osync_trace(TRACE_ENTRY, "%s(%p)", __func__, ctx); 864 939 865 irmc_environment *env = (irmc_environment *)data; 940 866 irmc_config *config = &(env->config); 867 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 868 irmc_database *database = osync_objtype_sink_get_userdata(sink); 869 870 const char *objtype = osync_objtype_sink_get_name(sink); 871 872 char *anchor = osync_anchor_retrieve(env->anchor_path, objtype); 873 if (!anchor) { 874 database->changecounter = 0; 875 database->dbid = NULL; 876 } else { 877 char data[ 256 ]; 878 memset( data, 0, sizeof( data ) ); 879 880 sscanf( anchor, "%d:%256s", &(database->changecounter), data ); 881 database->dbid = g_strdup( data ); 882 } 883 g_free( anchor ); 941 884 942 885 config->obexhandle = irmc_obex_client(config); … … 951 894 } 952 895 953 // load the synchronization anchors896 // load the general synchronization anchors 954 897 load_sync_anchors(env); 955 898 … … 1019 962 irmc_disconnect(&(env->config)); 1020 963 964 save_sync_anchors(env); 965 1021 966 osync_context_report_success(ctx); 1022 967 … … 1030 975 { 1031 976 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); 977 978 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 979 1032 980 irmc_environment *env = (irmc_environment *)data; 1033 1034 // save synchronization anchors 1035 save_sync_anchors( env ); 981 irmc_database *database = osync_objtype_sink_get_userdata(sink); 982 983 const char *objtype = osync_objtype_sink_get_name(sink); 984 985 if (database->changecounter >= 0 && strcmp(database->dbid, "FFFFFF")) { 986 char *anchor = g_strdup_printf("%d:%s", database->changecounter, database->dbid); 987 osync_anchor_update( env->anchor_path, objtype, anchor ); 988 g_free(anchor); 989 } else { 990 osync_trace(TRACE_INTERNAL, "ERROR: Invalid values for event anchor detected."); 991 } 1036 992 1037 993 osync_context_report_success(ctx); … … 1051 1007 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1052 1008 irmc_environment *env = (irmc_environment *)data; 1053 irmc_ config *config = &(env->config);1009 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1054 1010 1055 1011 data_type_information datainfo; … … 1060 1016 strcpy(datainfo.path_identifier, "cal"); 1061 1017 strcpy(datainfo.path_extension, "vcs"); 1062 datainfo.change_counter = &(config->calendar_changecounter); 1018 datainfo.change_counter = &(database->changecounter); 1019 1063 1020 1064 1021 if (!get_generic_changeinfo(env, sink, ctx, &datainfo, &error)) … … 1086 1043 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1087 1044 irmc_environment *env = (irmc_environment *)data; 1088 irmc_ config *config = &(env->config);1045 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1089 1046 1090 1047 data_type_information datainfo; … … 1095 1052 strcpy(datainfo.path_identifier, "pb"); 1096 1053 strcpy(datainfo.path_extension, "vcf"); 1097 datainfo.change_counter = &( config->addressbook_changecounter);1054 datainfo.change_counter = &(database->changecounter); 1098 1055 1099 1056 if (!get_generic_changeinfo(env, sink, ctx, &datainfo, &error)) … … 1121 1078 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1122 1079 irmc_environment *env = (irmc_environment *)data; 1123 irmc_ config *config = &(env->config);1080 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1124 1081 1125 1082 data_type_information datainfo; … … 1130 1087 strcpy(datainfo.path_identifier, "nt"); 1131 1088 strcpy(datainfo.path_extension, "vnt"); 1132 datainfo.change_counter = &( config->notebook_changecounter);1089 datainfo.change_counter = &(database->changecounter); 1133 1090 1134 1091 if (!get_generic_changeinfo(env, sink, ctx, &datainfo, &error)) … … 1291 1248 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1292 1249 irmc_environment *env = (irmc_environment *)data; 1293 irmc_ config *config = &(env->config);1250 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1294 1251 1295 1252 memset(&datainfo, 0, sizeof(datainfo)); … … 1298 1255 strcpy(datainfo.path_identifier, "cal"); 1299 1256 strcpy(datainfo.path_extension, "vcs"); 1300 datainfo.change_counter = &( config->calendar_changecounter);1257 datainfo.change_counter = &(database->changecounter); 1301 1258 1302 1259 irmcGenericCommitChange(env, sink, ctx, &datainfo, change); … … 1314 1271 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1315 1272 irmc_environment *env = (irmc_environment *)data; 1316 irmc_ config *config = &(env->config);1273 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1317 1274 1318 1275 memset(&datainfo, 0, sizeof(datainfo)); … … 1321 1278 strcpy(datainfo.path_identifier, "pb"); 1322 1279 strcpy(datainfo.path_extension, "vcf"); 1323 datainfo.change_counter = &( config->addressbook_changecounter);1280 datainfo.change_counter = &(database->changecounter); 1324 1281 1325 1282 irmcGenericCommitChange(env, sink, ctx, &datainfo, change); … … 1337 1294 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 1338 1295 irmc_environment *env = (irmc_environment *)data; 1339 irmc_ config *config = &(env->config);1296 irmc_database *database = osync_objtype_sink_get_userdata(sink); 1340 1297 1341 1298 memset(&datainfo, 0, sizeof(datainfo)); … … 1344 1301 strcpy(datainfo.path_identifier, "nt"); 1345 1302 strcpy(datainfo.path_extension, "vnt"); 1346 datainfo.change_counter = &( config->notebook_changecounter);1303 datainfo.change_counter = &(database->changecounter); 1347 1304 1348 1305 irmcGenericCommitChange(env, sink, ctx, &datainfo, change); … … 1358 1315 1359 1316 irmc_environment *env = (irmc_environment *)data; 1317 1360 1318 g_free(env->anchor_path); 1361 1319 plugins/irmc-sync/src/irmc_sync.h
r2409 r2410 34 34 typedef struct { 35 35 char *serial_number; 36 unsigned int calendar_changecounter;37 char *calendar_dbid;38 unsigned int addressbook_changecounter;39 char *addressbook_dbid;40 unsigned int notebook_changecounter;41 char *notebook_dbid;42 36 43 37 obex_t obexhandle; // Handle to the obex connection … … 72 66 typedef struct irmc_database { 73 67 OSyncObjFormat *objformat; // The configured objformat for this database 68 unsigned int changecounter; 69 char *dbid; 74 70 } irmc_database; 75 71
