[Mesa-dev] [PATCH v2 1/5] util: manually extract the program name from program_invocation_name

Eric Engestrom eric.engestrom at intel.com
Thu Jun 14 09:40:14 UTC 2018


On Thursday, 2018-06-14 11:00:21 +1000, Timothy Arceri wrote:
> Glibc has the same code to get program_invocation_short_name. However
> for some reason the short name gets mangled for some wine apps.
> 
> For example with Google Earth VR I get:
> 
> program_invocation_name:
> "/home/tarceri/.local/share/Steam/steamapps/common/EarthVR/Earth.exe"
> 
> program_invocation_short_name:
> "e"
> ---
>  src/util/xmlconfig.c | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/src/util/xmlconfig.c b/src/util/xmlconfig.c
> index 60a6331c86c..ad943e2ce48 100644
> --- a/src/util/xmlconfig.c
> +++ b/src/util/xmlconfig.c
> @@ -45,7 +45,16 @@
>  /* These aren't declared in any libc5 header */
>  extern char *program_invocation_name, *program_invocation_short_name;
>  #    endif
> -#    define GET_PROGRAM_NAME() program_invocation_short_name
> +static const char *
> +__getProgramName()
> +{
> +    char * arg = strrchr(program_invocation_name, '/');
> +    if (arg)
> +        return arg+1;
> +    else
> +        return program_invocation_name;
> +}
> +#    define GET_PROGRAM_NAME() __getProgramName()

How about:

  #include <libgen.h>
  #define GET_PROGRAM_NAME() basename(program_invocation_name)

>  #elif defined(__CYGWIN__)
>  #    define GET_PROGRAM_NAME() program_invocation_short_name
>  #elif defined(__FreeBSD__) && (__FreeBSD__ >= 2)
> -- 
> 2.17.1
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list