Changeset 3299
- Timestamp:
- 04/27/08 15:51:24 (3 months ago)
- Files:
-
- plugins/file-sync/src/file_sync.c (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/file-sync/src/file_sync.c
r3157 r3299 39 39 40 40 if (dir->hashtable) 41 osync_hashtable_ free(dir->hashtable);41 osync_hashtable_unref(dir->hashtable); 42 42 43 43 g_free(dir); … … 452 452 relative_filename = g_build_filename(subdir, de, NULL); 453 453 454 osync_hashtable_report(directory->hashtable, relative_filename);455 454 osync_trace(TRACE_INTERNAL, "path2 %s %s", filename, relative_filename); 456 455 … … 463 462 struct stat buf; 464 463 stat(filename, &buf); 465 char *hash = osync_filesync_generate_hash(&buf);466 467 468 OSyncChangeType type = osync_hashtable_get_changetype(directory->hashtable, relative_filename, hash);469 if (type == OSYNC_CHANGE_TYPE_UNMODIFIED) {470 g_free(hash);471 g_free(filename);472 g_free(relative_filename);473 continue;474 }475 osync_hashtable_update_hash(directory->hashtable, type, relative_filename, hash);476 464 477 465 /* Report normal files */ … … 480 468 osync_context_report_osyncwarning(ctx, error); 481 469 osync_error_unref(&error); 482 g_free(hash);483 g_free(filename);484 470 g_free(relative_filename); 485 471 continue; 486 472 } 487 473 488 474 osync_change_set_uid(change, relative_filename); 475 476 char *hash = osync_filesync_generate_hash(&buf); 489 477 osync_change_set_hash(change, hash); 478 g_free(hash); 479 480 OSyncChangeType type = osync_hashtable_get_changetype(directory->hashtable, change); 490 481 osync_change_set_changetype(change, type); 491 482 492 g_free(hash); 493 483 osync_hashtable_update_change(directory->hashtable, change); 484 485 if (type == OSYNC_CHANGE_TYPE_UNMODIFIED) { 486 g_free(filename); 487 g_free(relative_filename); 488 osync_change_unref(change); 489 continue; 490 } 494 491 495 492 char *data; … … 501 498 osync_error_unref(&error); 502 499 g_free(filename); 500 g_free(relative_filename); 503 501 continue; 504 502 } … … 516 514 osync_error_unref(&error); 517 515 g_free(data); 516 g_free(filename); 517 g_free(relative_filename); 518 518 519 continue; 519 520 } … … 541 542 osync_error_unref(&error); 542 543 g_free(data); 544 g_free(filename); 545 g_free(relative_filename); 546 g_free(file->path); 543 547 continue; 544 548 } … … 575 579 576 580 577 osync_hashtable_reset_reports(dir->hashtable);578 581 if (osync_objtype_sink_get_slowsync(dir->sink)) { 579 582 osync_trace(TRACE_INTERNAL, "Slow sync requested"); … … 591 594 osync_filesync_report_dir(dir, info, NULL, ctx); 592 595 593 char **uids = osync_hashtable_get_deleted(dir->hashtable);594 for ( i = 0; uids[i]; i++) {596 OSyncList *u, *uids = osync_hashtable_get_deleted(dir->hashtable); 597 for (u = uids; uids; u = u->next) { 595 598 OSyncChange *change = osync_change_new(&error); 596 599 if (!change) { 597 g_free(uids[i]);598 600 osync_context_report_osyncwarning(ctx, error); 599 601 osync_error_unref(&error); … … 601 603 } 602 604 603 osync_change_set_uid(change, uids[i]); 605 const char *uid = u->data; 606 osync_change_set_uid(change, uid); 604 607 osync_change_set_changetype(change, OSYNC_CHANGE_TYPE_DELETED); 605 608 606 609 OSyncData *odata = osync_data_new(NULL, 0, dir->objformat_output, &error); 607 610 if (!odata) { 608 g_free(uids[i]);609 611 osync_change_unref(change); 610 612 osync_context_report_osyncwarning(ctx, error); … … 619 621 osync_context_report_change(ctx, change); 620 622 621 osync_hashtable_update_ hash(dir->hashtable, osync_change_get_changetype(change), osync_change_get_uid(change), NULL);623 osync_hashtable_update_change(dir->hashtable, change); 622 624 623 625 osync_change_unref(change); 624 g_free(uids[i]); 625 } 626 g_free(uids); 626 } 627 osync_list_free(uids); 627 628 628 629 osync_context_report_success(ctx); … … 653 654 g_free(filename); 654 655 655 osync_hashtable_update_ hash(dir->hashtable, osync_change_get_changetype(change), osync_change_get_uid(change), hash);656 osync_hashtable_update_change(dir->hashtable, change); 656 657 g_free(hash); 657 658 … … 664 665 { 665 666 osync_trace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, data, info, ctx); 667 668 OSyncError *error = NULL; 669 666 670 OSyncObjTypeSink *sink = osync_plugin_info_get_sink(info); 667 671 OSyncFileDir *dir = osync_objtype_sink_get_userdata(sink); … … 672 676 g_free(anchorpath); 673 677 g_free(path_field); 678 679 if (!osync_hashtable_save(dir->hashtable, &error)) 680 goto error; 674 681 675 682 osync_context_report_success(ctx); 676 683 677 684 osync_trace(TRACE_EXIT, "%s", __func__); 685 return; 686 687 error: 688 osync_context_report_osyncerror(ctx, error); 689 osync_trace(TRACE_EXIT_ERROR, "%s: %s", __func__, osync_error_print(&error)); 690 osync_error_unref(&error); 691 return; 678 692 } 679 693 … … 746 760 goto error_free_env; 747 761 762 if (!osync_hashtable_load(dir->hashtable, error)) 763 goto error_free_env; 764 748 765 char *anchorpath = g_strdup_printf("%s/anchor.db", osync_plugin_info_get_configdir(info)); 749 766 char *path_field = g_strdup_printf("path_%s", osync_objtype_sink_get_name(sink));
