[FFmpeg-devel] [PATCH] Define cmdline_program_name and use it in show_help

Benoit Fouet benoit.fouet
Tue Oct 28 22:41:09 CET 2008


Hi,

Stefano Sabatini a ?crit :
> On date Tuesday 2008-10-28 13:40:48 +0100, Aurelien Jacobs encoded:
>   
>> Stefano Sabatini wrote:
>>
>>     
>>> On date Monday 2008-10-27 13:46:24 +0100, Luca Abeni encoded:
>>>       
>>>> Hi all,
>>>>
>>>> Aurelien Jacobs wrote:
>>>> [...]
>>>>         
>>>>>>> Index: ffmpeg.c
>>>>>>> ===================================================================
>>>>>>> --- ffmpeg.c	(revision 15712)
>>>>>>> +++ ffmpeg.c	(working copy)
>>>>>>> @@ -71,6 +71,7 @@
>>>>>>>  #undef exit
>>>>>>>  
>>>>>>>  const char program_name[] = "FFmpeg";
>>>>>>> +const char* cmdline_program_name = NULL;
>>>>>>>   
>>>>>>>               
>>>>>> why is it not static ? btw, I'd prefer char *foo to char* foo, but maybe
>>>>>> that's just me...
>>>>>>             
>>>>> I also prefer char *foo.
>>>>> And no need to initialize it to NULL.
>>>>>           
>>> OK.
>>>  
>>>       
>>>> Maybe this is a stupid question, but... Why using a global variable instead
>>>> of passing argv[0] as an argument to show_help() (in ffplay.c and ffmpeg.c)?
>>>>         
>>> For consistency with program_name, no strong opinion on this.
>>>       
>> This don't give more consistency. program_name is used in other .c files,
>> while cmdline_program_name is not.
>>     
>
> Yes.
>
>   
>> If show_help() is only called from main, then passing argv[0] is definitely
>> the way to go.
>>     
>
> The problem is that show_help is called by cmdline.c:parse_options,
> where the OPT_EXIT callback is not meant to take an argument.
>
> We could change the OPT_EXIT callback to take an opaque argument, but
> this would look overkill (well, maybe this patch too is overkill...).
>
> So making the cmdline_program_name vars globals looks to me the better
> compromise.
>
> Regards.
>   
> ------------------------------------------------------------------------
>
> Index: ffmpeg.c
> ===================================================================
> --- ffmpeg.c	(revision 15731)
> +++ ffmpeg.c	(working copy)
> @@ -91,6 +91,8 @@
>  
>  #define MAX_FILES 20
>  
> +static const char *cmdline_program_name;
> +
>  static AVFormatContext *input_files[MAX_FILES];
>  static int64_t input_files_ts_offset[MAX_FILES];
>  static double input_files_ts_scale[MAX_FILES][MAX_STREAMS];
> @@ -3447,8 +3449,8 @@
>  static void show_help(void)
>  {
>      av_log_set_callback(log_callback_help);
> -    printf("usage: ffmpeg [[infile options] -i infile]... {[outfile options] outfile}...\n"
> -           "Hyper fast Audio and Video encoder\n");
> +    printf("usage: %s [[infile options] -i infile]... {[outfile options] outfile}...\n"
> +           "Hyper fast Audio and Video encoder\n", cmdline_program_name);
>      printf("\n");
>      show_help_options(options, "Main options:\n",
>                        OPT_EXPERT | OPT_AUDIO | OPT_VIDEO | OPT_SUBTITLE | OPT_GRAB, 0);
> @@ -3858,6 +3860,7 @@
>  {
>      int i;
>      int64_t ti;
> +    cmdline_program_name = argv[0];
>  
>   

sorry for the late notice, but it could be good to break a line between
declaration and assignment too...
(same goes for the two other ones)

-- 
Benoit Fouet




More information about the ffmpeg-devel mailing list