Mercurial > pidgin.yaz
comparison libpurple/core.c @ 21418:38cc722159ff
propagate from branch 'im.pidgin.pidgin' (head d8103be97302efb404e2f6922925f661c807ad23)
to branch 'im.pidgin.cpw.resiak.disconnectreason' (head 0ac25a1f38ae28654c967caa143f1c0d12ef2e1c)
author | Will Thompson <will.thompson@collabora.co.uk> |
---|---|
date | Sat, 10 Nov 2007 12:10:04 +0000 |
parents | 0aa18e21a595 6de09629f091 |
children | 48d09d62912e 02eda4bd2b22 |
comparison
equal
deleted
inserted
replaced
21417:21bea7c72a80 | 21418:38cc722159ff |
---|---|
383 char *old_name; | 383 char *old_name; |
384 #endif | 384 #endif |
385 if (g_rename(path, new_name)) | 385 if (g_rename(path, new_name)) |
386 { | 386 { |
387 purple_debug_error("core", "Error renaming %s to %s: %s. Please report this at http://developer.pidgin.im\n", | 387 purple_debug_error("core", "Error renaming %s to %s: %s. Please report this at http://developer.pidgin.im\n", |
388 path, new_name, strerror(errno)); | 388 path, new_name, g_strerror(errno)); |
389 g_free(new_name); | 389 g_free(new_name); |
390 return FALSE; | 390 return FALSE; |
391 } | 391 } |
392 g_free(new_name); | 392 g_free(new_name); |
393 | 393 |
396 new_name = g_build_filename(relative, basename, NULL); | 396 new_name = g_build_filename(relative, basename, NULL); |
397 old_name = g_build_filename(old_base, basename, NULL); | 397 old_name = g_build_filename(old_base, basename, NULL); |
398 if (symlink(new_name, old_name)) | 398 if (symlink(new_name, old_name)) |
399 { | 399 { |
400 purple_debug_warning("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", | 400 purple_debug_warning("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", |
401 old_name, new_name, strerror(errno)); | 401 old_name, new_name, g_strerror(errno)); |
402 } | 402 } |
403 g_free(old_name); | 403 g_free(old_name); |
404 g_free(new_name); | 404 g_free(new_name); |
405 #endif | 405 #endif |
406 | 406 |
452 if (!g_file_test(user_dir, G_FILE_TEST_IS_DIR)) | 452 if (!g_file_test(user_dir, G_FILE_TEST_IS_DIR)) |
453 { | 453 { |
454 if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) | 454 if (g_mkdir(user_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) |
455 { | 455 { |
456 purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", | 456 purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", |
457 user_dir, strerror(errno)); | 457 user_dir, g_strerror(errno)); |
458 g_free(status_file); | 458 g_free(status_file); |
459 g_free(old_user_dir); | 459 g_free(old_user_dir); |
460 return FALSE; | 460 return FALSE; |
461 } | 461 } |
462 } | 462 } |
464 /* This writes ~/.purple/migrating, which allows us to detect | 464 /* This writes ~/.purple/migrating, which allows us to detect |
465 * incomplete migrations and properly retry. */ | 465 * incomplete migrations and properly retry. */ |
466 if (!(fp = g_fopen(status_file, "w"))) | 466 if (!(fp = g_fopen(status_file, "w"))) |
467 { | 467 { |
468 purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", | 468 purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", |
469 status_file, strerror(errno)); | 469 status_file, g_strerror(errno)); |
470 g_free(status_file); | 470 g_free(status_file); |
471 g_free(old_user_dir); | 471 g_free(old_user_dir); |
472 return FALSE; | 472 return FALSE; |
473 } | 473 } |
474 fclose(fp); | 474 fclose(fp); |
522 | 522 |
523 if ((linklen = readlink(name, buf, sizeof(buf) - 1) == -1)) | 523 if ((linklen = readlink(name, buf, sizeof(buf) - 1) == -1)) |
524 { | 524 { |
525 char *name_utf8 = g_filename_to_utf8(name, -1, NULL, NULL, NULL); | 525 char *name_utf8 = g_filename_to_utf8(name, -1, NULL, NULL, NULL); |
526 purple_debug_error("core", "Error reading symlink %s: %s. Please report this at http://developer.pidgin.im\n", | 526 purple_debug_error("core", "Error reading symlink %s: %s. Please report this at http://developer.pidgin.im\n", |
527 name_utf8, strerror(errno)); | 527 name_utf8, g_strerror(errno)); |
528 g_free(name_utf8); | 528 g_free(name_utf8); |
529 g_free(name); | 529 g_free(name); |
530 g_dir_close(dir); | 530 g_dir_close(dir); |
531 g_free(status_file); | 531 g_free(status_file); |
532 g_free(old_user_dir); | 532 g_free(old_user_dir); |
560 * valid from ~/.purple, though it's not | 560 * valid from ~/.purple, though it's not |
561 * guaranteed. Oh well. */ | 561 * guaranteed. Oh well. */ |
562 if (symlink(link, logs_dir)) | 562 if (symlink(link, logs_dir)) |
563 { | 563 { |
564 purple_debug_error("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", | 564 purple_debug_error("core", "Error symlinking %s to %s: %s. Please report this at http://developer.pidgin.im\n", |
565 logs_dir, link, strerror(errno)); | 565 logs_dir, link, g_strerror(errno)); |
566 g_free(link); | 566 g_free(link); |
567 g_free(name); | 567 g_free(name); |
568 g_free(logs_dir); | 568 g_free(logs_dir); |
569 g_dir_close(dir); | 569 g_dir_close(dir); |
570 g_free(status_file); | 570 g_free(status_file); |
617 if (!g_file_test(new_icons_dir, G_FILE_TEST_IS_DIR)) | 617 if (!g_file_test(new_icons_dir, G_FILE_TEST_IS_DIR)) |
618 { | 618 { |
619 if (g_mkdir(new_icons_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) | 619 if (g_mkdir(new_icons_dir, S_IRUSR | S_IWUSR | S_IXUSR) == -1) |
620 { | 620 { |
621 purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", | 621 purple_debug_error("core", "Error creating directory %s: %s. Please report this at http://developer.pidgin.im\n", |
622 new_icons_dir, strerror(errno)); | 622 new_icons_dir, g_strerror(errno)); |
623 g_free(new_icons_dir); | 623 g_free(new_icons_dir); |
624 g_dir_close(icons_dir); | 624 g_dir_close(icons_dir); |
625 g_free(name); | 625 g_free(name); |
626 g_dir_close(dir); | 626 g_dir_close(dir); |
627 g_free(status_file); | 627 g_free(status_file); |
680 FILE *new_file; | 680 FILE *new_file; |
681 | 681 |
682 if (!(fp = g_fopen(name, "rb"))) | 682 if (!(fp = g_fopen(name, "rb"))) |
683 { | 683 { |
684 purple_debug_error("core", "Error opening file %s for reading: %s. Please report this at http://developer.pidgin.im\n", | 684 purple_debug_error("core", "Error opening file %s for reading: %s. Please report this at http://developer.pidgin.im\n", |
685 name, strerror(errno)); | 685 name, g_strerror(errno)); |
686 g_free(name); | 686 g_free(name); |
687 g_dir_close(dir); | 687 g_dir_close(dir); |
688 g_free(status_file); | 688 g_free(status_file); |
689 g_free(old_user_dir); | 689 g_free(old_user_dir); |
690 return FALSE; | 690 return FALSE; |
692 | 692 |
693 new_name = g_build_filename(user_dir, entry, NULL); | 693 new_name = g_build_filename(user_dir, entry, NULL); |
694 if (!(new_file = g_fopen(new_name, "wb"))) | 694 if (!(new_file = g_fopen(new_name, "wb"))) |
695 { | 695 { |
696 purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", | 696 purple_debug_error("core", "Error opening file %s for writing: %s. Please report this at http://developer.pidgin.im\n", |
697 new_name, strerror(errno)); | 697 new_name, g_strerror(errno)); |
698 fclose(fp); | 698 fclose(fp); |
699 g_free(new_name); | 699 g_free(new_name); |
700 g_free(name); | 700 g_free(name); |
701 g_dir_close(dir); | 701 g_dir_close(dir); |
702 g_free(status_file); | 702 g_free(status_file); |
711 | 711 |
712 size = fread(buf, 1, sizeof(buf), fp); | 712 size = fread(buf, 1, sizeof(buf), fp); |
713 if (size != sizeof(buf) && !feof(fp)) | 713 if (size != sizeof(buf) && !feof(fp)) |
714 { | 714 { |
715 purple_debug_error("core", "Error reading %s: %s. Please report this at http://developer.pidgin.im\n", | 715 purple_debug_error("core", "Error reading %s: %s. Please report this at http://developer.pidgin.im\n", |
716 name, strerror(errno)); | 716 name, g_strerror(errno)); |
717 fclose(new_file); | 717 fclose(new_file); |
718 fclose(fp); | 718 fclose(fp); |
719 g_free(new_name); | 719 g_free(new_name); |
720 g_free(name); | 720 g_free(name); |
721 g_dir_close(dir); | 721 g_dir_close(dir); |
725 } | 725 } |
726 | 726 |
727 if (!fwrite(buf, size, 1, new_file) && ferror(new_file) != 0) | 727 if (!fwrite(buf, size, 1, new_file) && ferror(new_file) != 0) |
728 { | 728 { |
729 purple_debug_error("core", "Error writing %s: %s. Please report this at http://developer.pidgin.im\n", | 729 purple_debug_error("core", "Error writing %s: %s. Please report this at http://developer.pidgin.im\n", |
730 new_name, strerror(errno)); | 730 new_name, g_strerror(errno)); |
731 fclose(new_file); | 731 fclose(new_file); |
732 fclose(fp); | 732 fclose(fp); |
733 g_free(new_name); | 733 g_free(new_name); |
734 g_free(name); | 734 g_free(name); |
735 g_dir_close(dir); | 735 g_dir_close(dir); |
740 } | 740 } |
741 | 741 |
742 if (fclose(new_file)) | 742 if (fclose(new_file)) |
743 { | 743 { |
744 purple_debug_error("core", "Error writing: %s: %s. Please report this at http://developer.pidgin.im\n", | 744 purple_debug_error("core", "Error writing: %s: %s. Please report this at http://developer.pidgin.im\n", |
745 new_name, strerror(errno)); | 745 new_name, g_strerror(errno)); |
746 } | 746 } |
747 if (fclose(fp)) | 747 if (fclose(fp)) |
748 { | 748 { |
749 purple_debug_warning("core", "Error closing %s: %s\n", | 749 purple_debug_warning("core", "Error closing %s: %s\n", |
750 name, strerror(errno)); | 750 name, g_strerror(errno)); |
751 } | 751 } |
752 g_free(new_name); | 752 g_free(new_name); |
753 } | 753 } |
754 else | 754 else |
755 purple_debug_warning("core", "Not a regular file or directory: %s\n", name); | 755 purple_debug_warning("core", "Not a regular file or directory: %s\n", name); |
759 | 759 |
760 /* The migration was successful, so delete the status file. */ | 760 /* The migration was successful, so delete the status file. */ |
761 if (g_unlink(status_file)) | 761 if (g_unlink(status_file)) |
762 { | 762 { |
763 purple_debug_error("core", "Error unlinking file %s: %s. Please report this at http://developer.pidgin.im\n", | 763 purple_debug_error("core", "Error unlinking file %s: %s. Please report this at http://developer.pidgin.im\n", |
764 status_file, strerror(errno)); | 764 status_file, g_strerror(errno)); |
765 g_free(status_file); | 765 g_free(status_file); |
766 return FALSE; | 766 return FALSE; |
767 } | 767 } |
768 | 768 |
769 old_icons_dir = g_build_filename(old_user_dir, "icons", NULL); | 769 old_icons_dir = g_build_filename(old_user_dir, "icons", NULL); |