Am 19.01.2015 19:41, schrieb Alan Coopersmith:
> Signed-off-by: Alan Coopersmith <[email protected]>
> ---
>  configure.ac    |    5 ++++-
>  util/makestrs.c |   17 +++++++++++++++++
>  2 files changed, 21 insertions(+), 1 deletion(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 34e6aab..3633ec6 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -64,7 +64,10 @@ if test x"$CC_FOR_BUILD" = x; then
>       fi
>  fi
>  AC_SUBST([CC_FOR_BUILD])
> -CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
> +DEFAULT_CPPFLAGS_FOR_BUILD="${CPPFLAGS}"
> +AC_CHECK_FUNC(asprintf,
> +  [DEFAULT_CPPFLAGS_FOR_BUILD="${DEFAULT_CPPFLAGS_FOR_BUILD} 
> -DHAVE_ASPRINTF"])
> +CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${DEFAULT_CPPFLAGS_FOR_BUILD}}
>  AC_SUBST(CPPFLAGS_FOR_BUILD)
>  DEFAULT_CFLAGS_FOR_BUILD="${CFLAGS} ${CWARNFLAGS}"
>  CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${DEFAULT_CFLAGS_FOR_BUILD}}
> diff --git a/util/makestrs.c b/util/makestrs.c
> index f872ec8..5764849 100644
> --- a/util/makestrs.c
> +++ b/util/makestrs.c
> @@ -90,19 +90,26 @@ static int   solaris_abi_names = FALSE;
>  static char* includedir = NULL;
>  static FILE *ifopen(const char *file, const char *mode)
>  {
> +#ifndef HAVE_ASPRINTF
>      size_t len;
> +#endif
>      char *buffer;
>      FILE *ret;
>  
>      if (includedir == NULL)
>          return fopen(file, mode);
>  
> +#ifdef HAVE_ASPRINTF
> +    if (asprintf(&buffer, "%s/%s", includedir, file) == -1)
> +        return NULL;
> +#else
>      len = strlen(file) + strlen(includedir) + 1;
>      buffer = (char*)malloc(len + 1);
>      if (buffer == NULL)
>          return NULL;
>  
>      snprintf(buffer, len + 1, "%s/%s", includedir, file);
> +#endif
>  
>      ret = fopen(buffer, mode);
>  
> @@ -269,13 +276,23 @@ static void WriteHeader (char *tagline, File *phile, 
> int abi)
>  
>      /* do the right thing for Motif, i.e. avoid _XmXmStrDefs_h_ */
>      if (strcmp (prefixstr, "Xm") == 0) {
> +#ifdef HAVE_ASPRINTF
> +     if (asprintf (&fileprotstr, "_%s_", phile->name) == -1)
> +         exit (1);
> +#else
>       if ((fileprotstr = malloc (strlen (phile->name) + 3)) == NULL)
>          exit (1);
>       (void) sprintf (fileprotstr, "_%s_", phile->name);
> +#endif
>      } else {
> +#ifdef HAVE_ASPRINTF
> +     if (asprintf (&fileprotstr, "_%s%s_", prefixstr, phile->name) == -1)
> +         exit (1);
> +#else
>       if ((fileprotstr = malloc (strlen (phile->name) + strlen (prefixstr) +  
> 3)) == NULL)
>          exit (1);
>       (void) sprintf (fileprotstr, "_%s%s_", prefixstr, phile->name);
> +#endif
>      }
>  
>      for (tmp = fileprotstr; *tmp; tmp++) if (*tmp == '.') *tmp = '_';


IMHO, it would be better to have a private asprintf() in case ifndef 
HAVE_ASPRINTF
1. this may be useful in other places
2. this would improve readability

re,
 wh
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to