[FFmpeg-devel] [RFC][PATCH 2/2] ffmpeg_opt: assert_file_overwrite: Work for all file protocol outputs

Alexander Strasser eclipse7 at gmx.net
Mon Jan 6 17:15:18 CET 2014


On 2014-01-06 00:11 +0100, Stefano Sabatini wrote:
> On date Sunday 2014-01-05 03:30:27 +0100, Alexander Strasser encoded:
> > 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 other part of ticket #3249.
> > 
> > Signed-off-by: Alexander Strasser <eclipse7 at gmx.net>
> > ---
> >  ffmpeg_opt.c | 4 +---
> >  1 file changed, 1 insertion(+), 3 deletions(-)
> > 
> > diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
> > index d267c6d..1040a1c 100644
> > --- a/ffmpeg_opt.c
> > +++ b/ffmpeg_opt.c
> > @@ -697,9 +697,7 @@ 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 (!file_overwrite && !strcmp(avio_find_protocol(filename), "file")) {
> >          if (avio_check(filename, 0) == 0) {
> >              if (stdin_interaction && !no_file_overwrite) {
> >                  fprintf(stderr,"File '%s' already exists. Overwrite ? [y/N] ", filename);
> 
> Looks nice to me, thanks.

  I went for the empty string as "no protocol found" because that
way it turns out nicer for applications where you want to directly
compare the result of the avio_find_protocol call.

  If I return NULL to signal "no protocol found", this involves
an extra intermediate variable and an extra NULL check. Alternatively
a custom string function could be used that handles NULL inputs.

  Please tell what you prefer or if you know something better.

Thanks,
  Alexander
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140106/93474517/attachment.asc>


More information about the ffmpeg-devel mailing list