On 12 September 2016 at 07:44, Jonathan Gray <j...@jsg.id.au> wrote: > On Mon, Sep 12, 2016 at 09:28:58AM +1000, Timothy Arceri wrote: >> On Thu, 2016-09-08 at 18:39 +0100, Emil Velikov wrote: >> > On 1 September 2016 at 18:12, Jonathan Gray <j...@jsg.id.au> wrote: >> > > >> > > program_invocation_short_name is a gnu extension.????Limit use of it >> > > to glibc and cygwin and otherwise use getprogname() which is >> > > available >> > > on BSD and OS X. >> > > >> > > Signed-off-by: Jonathan Gray <j...@jsg.id.au> >> > > --- >> > > ??src/intel/tools/aubinator.c | 8 +++++++- >> > > ??1 file changed, 7 insertions(+), 1 deletion(-) >> > > >> > > diff --git a/src/intel/tools/aubinator.c >> > > b/src/intel/tools/aubinator.c >> > > index df84469..fe1f369 100644 >> > > --- a/src/intel/tools/aubinator.c >> > > +++ b/src/intel/tools/aubinator.c >> > > @@ -1014,6 +1014,12 @@ setup_pager(void) >> > > ??static void >> > > ??print_help(FILE *file) >> > > ??{ >> > > +??????const char *progname; >> > > +#if defined(__GLIBC__) || defined(__CYGWIN__) >> > > +??????progname = program_invocation_short_name; >> > > +#else >> > > +??????progname = getprogname(); >> > > +#endif >> > We could really fold the ~5 hunks somehow. Then again it shouldn't >> > block this fix from getting it. >> > >> > R-b and pushed the series. Thanks ! >> > Emil >> >> This is causing a warning in GCC: >> >> aubinator.c: In function ???print_help???: >> aubinator.c:1034:21: warning: passing argument 1 of ???__xpg_basename??? >> discards ???const??? qualifier from pointer target type [-Wdiscarded- >> qualifiers] >> ????????????????????????basename(progname)); >> ??????????????????????????????????????????^~~~~~~~ >> In file included from aubinator.c:33:0: >> /usr/include/libgen.h:34:14: note: expected ???char *??? but argument is of >> type ???const char *??? >> ??extern char *__xpg_basename (char *__path) __THROW; >> ????????????????????????????^~~~~~~~~~~~~~ > > getprogname() returns const, it seems odd that program_invocation_short_name > would not be as well. > > Note that the gallium code in src/gallium/auxiliary/os/os_process.c > os_get_process_name() also stores program_invocation_short_name in > "const char *".
All this comes from the two implementations of basename - POSIX and GNU one. The former can modify the string, while the latter never does so. Fwiw the whole thing can be simplified - patch coming in a second. -Emil _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev