diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2002-08-07 04:31:40 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2002-08-07 04:31:40 +0800 |
commit | 71eabe9f8c8c6a31f26cd1a02d1f49612bc46f38 (patch) | |
tree | b607d2de6baa67786a11caa320d4991ac258472c /widgets/table/e-table.c | |
parent | eb83dd4dd0cc797f1a83fbcd99a41cb4723a0e51 (diff) | |
download | gsoc2013-evolution-71eabe9f8c8c6a31f26cd1a02d1f49612bc46f38.tar.gz gsoc2013-evolution-71eabe9f8c8c6a31f26cd1a02d1f49612bc46f38.tar.zst gsoc2013-evolution-71eabe9f8c8c6a31f26cd1a02d1f49612bc46f38.zip |
#include <string.h> for memset
2002-08-06 Jeffrey Stedfast <fejj@ximian.com>
* e-cell-progress.c: #include <string.h> for memset
* e-table.c (e_table_save_specification): Updated to use
e_xml_save_file() instead of xmlSaveFile(). Also fixed to save to
a tmp file first.
* e-table-specification.c (e_table_specification_save_to_file):
Same as above.
* e-table-state.c (e_table_state_save_to_file): Same here.
* e-tree-table-adapter.c
(e_tree_table_adapter_save_expanded_state): And here too.
svn path=/trunk/; revision=17717
Diffstat (limited to 'widgets/table/e-table.c')
-rw-r--r-- | widgets/table/e-table.c | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/widgets/table/e-table.c b/widgets/table/e-table.c index 13873f12b0..2fba247dab 100644 --- a/widgets/table/e-table.c +++ b/widgets/table/e-table.c @@ -22,11 +22,16 @@ * 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H #include <config.h> -#include <stdlib.h> +#endif + #include <stdio.h> +#include <stdlib.h> #include <string.h> -#include <stdio.h> +#include <unistd.h> + #include <gdk/gdkkeysyms.h> #include <gtk/gtksignal.h> #include <libgnomeui/gnome-canvas.h> @@ -1785,15 +1790,30 @@ e_table_set_specification (ETable *e_table, const char *spec) } void -e_table_save_specification (ETable *e_table, gchar *filename) +e_table_save_specification (ETable *e_table, const char *filename) { xmlDoc *doc = et_build_tree (e_table); - + char *tmp, *slash; + int ret; + g_return_if_fail(e_table != NULL); g_return_if_fail(E_IS_TABLE(e_table)); g_return_if_fail(filename != NULL); - - xmlSaveFile (filename, doc); + + tmp = alloca (strlen (filename) + 5); + slash = strrchr (filename, '/'); + if (slash) + sprintf (tmp, "%.*s.#%s", slash - filename + 1, filename, slash + 1); + else + sprintf (tmp, ".#%s", filename); + + ret = e_xml_save_file (tmp, doc); + if (ret != -1) + ret = rename (tmp, filename); + + if (ret == -1) + unlink (tmp); + xmlFreeDoc (doc); } |