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);