vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Tue Sep 4 12:14:44 2012 +0300| [4dfda7ce68f29dad72da61188abf162c80aa3f65] | committer: Rémi Denis-Courmont
file out: ask for confirmation to overwrite file To avoid disrupting existing workflows, the dialog is only shown when overwrite is disabled. If there is no UI, then it will be assumed that the file is not overwritten. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4dfda7ce68f29dad72da61188abf162c80aa3f65 --- modules/access_output/file.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/access_output/file.c b/modules/access_output/file.c index ec874ec..99ebb89 100644 --- a/modules/access_output/file.c +++ b/modules/access_output/file.c @@ -41,6 +41,7 @@ #include <vlc_block.h> #include <vlc_fs.h> #include <vlc_strings.h> +#include <vlc_dialog.h> #if defined( WIN32 ) || defined( __OS2__ ) # include <io.h> @@ -171,9 +172,23 @@ static int Open( vlc_object_t *p_this ) if (var_GetBool (p_access, SOUT_CFG_PREFIX"sync")) flags |= O_SYNC; #endif - fd = vlc_open (path, flags, 0666); - if (fd == -1) - msg_Err (p_access, "cannot create %s: %m", path); + do + { + fd = vlc_open (path, flags, 0666); + if (fd != -1) + break; + if (fd == -1) + msg_Err (p_access, "cannot create %s: %m", path); + if (overwrite || errno != EEXIST) + break; + flags &= ~O_EXCL; + } + while (dialog_Question (p_access, path, + N_("The output file already exists. " + "If recording continues, the file will be " + "overriden and its content will be lost."), + N_("Keep existing file"), + N_("Overwrite"), NULL) == 2); free (path); if (fd == -1) return VLC_EGENERIC; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
