From 3b3357e070418f96b90a9db82bf6eeb730ebc054 Mon Sep 17 00:00:00 2001 From: Pavel Roskin Date: Wed, 1 Aug 2001 21:54:59 +0000 Subject: [PATCH] * editcmd.c (edit_save_file): Temporarily disable safe save and backups on remote VFS because it doesn't work. Use mc_mkstemps() instead of tempnam(). --- gtkedit/ChangeLog | 6 ++++++ gtkedit/editcmd.c | 31 +++++++++++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/gtkedit/ChangeLog b/gtkedit/ChangeLog index f4a7dafa6..e0a88a9c2 100644 --- a/gtkedit/ChangeLog +++ b/gtkedit/ChangeLog @@ -1,3 +1,9 @@ +2001-08-01 Pavel Roskin + + * editcmd.c (edit_save_file): Temporarily disable safe save + and backups on remote VFS because it doesn't work. Use + mc_mkstemps() instead of tempnam(). + 2001-07-29 Pavel Roskin * syntax.c (syntax_text): Add support for S-Lang. diff --git a/gtkedit/editcmd.c b/gtkedit/editcmd.c index 106e9e6d5..b224ae2a9 100644 --- a/gtkedit/editcmd.c +++ b/gtkedit/editcmd.c @@ -261,15 +261,27 @@ int edit_save_file (WEdit * edit, const char *filename) savename = (char *) strdup ((char *) filename); - if ((fd = open (savename, O_WRONLY)) == -1) { - this_save_mode = 0; /* the file does not exists yet, so no safe save or backup necessary */ + if (vfs_file_is_local (filename)) { + if ((fd = open (savename, O_WRONLY)) == -1) { + /* + * The file does not exists yet, so no safe save or + * backup are necessary. + */ + this_save_mode = 0; + } else { + close (fd); + this_save_mode = option_save_mode; + } } else { - close (fd); - this_save_mode = option_save_mode; + /* + * FIXME - rename is not impemented in VFS, so only + * quick save is possible. + */ + this_save_mode = 0; } if (this_save_mode > 0) { - char *savedir, *slashpos; + char *savedir, *slashpos, *saveprefix; savedir = (char *) strdup ("."); slashpos = strrchr (filename, '/'); if (slashpos) { @@ -279,10 +291,17 @@ int edit_save_file (WEdit * edit, const char *filename) } if (savename) free (savename); - savename = (char *) tempnam (savedir, "cooledit"); + saveprefix = concat_dir_and_file (savedir, "cooledit"); + fd = mc_mkstemps(&savename, saveprefix, NULL); + g_free (saveprefix); free (savedir); if (!savename) return 0; + /* + * Close for now because it needs to be reopened by + * VFS-aware mc_open() and MY_O_TEXT should be used. + */ + close (fd); } if ((fd = open (savename, O_CREAT | O_WRONLY | O_TRUNC | MY_O_TEXT,