Mercurial > pidgin
comparison plugins/spellchk.c @ 10896:2714b51a0dad
[gaim-migrate @ 12610]
Now THAT'S code reuse.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 03 May 2005 02:39:55 +0000 |
parents | 9cf14a87eedc |
children | 0ef4fbeeefaf |
comparison
equal
deleted
inserted
replaced
10895:ffb30c2e82cb | 10896:2714b51a0dad |
---|---|
1656 save_list(); | 1656 save_list(); |
1657 } | 1657 } |
1658 | 1658 |
1659 static void save_list() | 1659 static void save_list() |
1660 { | 1660 { |
1661 FILE *f; | 1661 GString *data; |
1662 char *name; | |
1663 GtkTreeIter iter; | 1662 GtkTreeIter iter; |
1664 char tempfilename[BUF_LONG]; | 1663 |
1665 int fd; | 1664 data = g_string_new(""); |
1666 | |
1667 name = g_build_filename(gaim_user_dir(), "dict", NULL); | |
1668 strcpy(tempfilename, name); | |
1669 strcat(tempfilename,".XXXXXX"); | |
1670 fd = g_mkstemp(tempfilename); | |
1671 if (fd < 0) { | |
1672 perror(tempfilename); | |
1673 g_free(name); | |
1674 return; | |
1675 } | |
1676 if (!(f = fdopen(fd, "w"))) { | |
1677 perror("fdopen"); | |
1678 close(fd); | |
1679 g_free(name); | |
1680 return; | |
1681 } | |
1682 | |
1683 fchmod(fd, S_IRUSR | S_IWUSR); | |
1684 | 1665 |
1685 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { | 1666 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) { |
1686 do { | 1667 do { |
1687 GValue val0 = {0, }; | 1668 GValue val0 = {0, }; |
1688 GValue val1 = {0, }; | 1669 GValue val1 = {0, }; |
1689 | 1670 |
1690 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); | 1671 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 0, &val0); |
1691 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); | 1672 gtk_tree_model_get_value(GTK_TREE_MODEL(model), &iter, 1, &val1); |
1692 | 1673 |
1693 fprintf(f, "BAD %s\nGOOD %s\n\n", g_value_get_string(&val0), g_value_get_string(&val1)); | 1674 g_string_append_printf(data, "BAD %s\nGOOD %s\n\n", g_value_get_string(&val0), g_value_get_string(&val1)); |
1694 | 1675 |
1695 g_value_unset(&val0); | 1676 g_value_unset(&val0); |
1696 g_value_unset(&val1); | 1677 g_value_unset(&val1); |
1697 | 1678 |
1698 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); | 1679 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter)); |
1699 } | 1680 } |
1700 | 1681 |
1701 if (fclose(f)) { | 1682 gaim_util_write_data_to_file("dict", data->str, -1); |
1702 gaim_debug(GAIM_DEBUG_ERROR, "spellchk", | 1683 |
1703 "Error writing to %s: %m\n", tempfilename); | 1684 g_string_free(data, TRUE); |
1704 g_unlink(tempfilename); | |
1705 g_free(name); | |
1706 return; | |
1707 } | |
1708 g_rename(tempfilename, name); | |
1709 g_free(name); | |
1710 } | 1685 } |
1711 | 1686 |
1712 static void | 1687 static void |
1713 check_if_something_is_selected(GtkTreeModel *model, | 1688 check_if_something_is_selected(GtkTreeModel *model, |
1714 GtkTreePath *path, GtkTreeIter *iter, gpointer data) | 1689 GtkTreePath *path, GtkTreeIter *iter, gpointer data) |