OSDN Git Service

ffmpeg_opt: assert_file_overwrite: Work for all file protocol outputs
authorAlexander Strasser <eclipse7@gmx.net>
Sun, 5 Jan 2014 02:06:20 +0000 (03:06 +0100)
committerAlexander Strasser <eclipse7@gmx.net>
Sun, 16 Feb 2014 21:34:21 +0000 (22:34 +0100)
Currently the file overwrite check does not work for paths that
contain a colon.

Use avio_find_protocol to always execute the existence check if
the file protocol is going to be used.

Fix remaining part of ticket #3249.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
ffmpeg_opt.c

index 4e0dc47..26798f7 100644 (file)
@@ -697,10 +697,9 @@ static void assert_file_overwrite(const char *filename)
         exit_program(1);
     }
 
-    if (!file_overwrite &&
-        (strchr(filename, ':') == NULL || filename[1] == ':' ||
-         av_strstart(filename, "file:", NULL))) {
-        if (avio_check(filename, 0) == 0) {
+    if (!file_overwrite) {
+        const char *proto_name = avio_find_protocol_name(filename);
+        if (proto_name && !strcmp(proto_name, "file") && avio_check(filename, 0) == 0) {
             if (stdin_interaction && !no_file_overwrite) {
                 fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
                 fflush(stderr);