Ticket #1114: patch_svn5496_printf_wince.diff

File patch_svn5496_printf_wince.diff, 92.9 KB (added by ftom.myopenid.com, 7 years ago)

patch generated by svn diff, uses glib/gnulib printf for wince build

  • navit/support/glib/CMakeLists.txt

     
    11supportlib_add_library(support_glib fake.c galiasdef.c gatomic.c gerror.c ghash.c
    22      glib_init.c glist.c gmem.c gmessages.c gprimes.c gprintf.c gslice.c gslist.c
    3       gstrfuncs.c gstring.c gutf8.c gutils.c)
     3      gstrfuncs.c gstring.c gutf8.c gutils.c gnulib/asnprintf.c gnulib/printf.c gnulib/printf-args.c gnulib/printf-parse.c gnulib/vasnprintf.c)
  • navit/support/glib/gnulib/Makefile.am

     
     1## Process this file with automake to produce Makefile.in
     2include $(top_srcdir)/Makefile.decl
     3
     4AM_CPPFLAGS =                           \
     5        $(glib_INCLUDES)                \
     6        -DG_LOG_DOMAIN=\"GLib\"         \
     7        $(GLIB_DEBUG_FLAGS)             \
     8        -DG_DISABLE_DEPRECATED          \
     9        -DGLIB_COMPILATION
     10
     11noinst_LTLIBRARIES = libgnulib.la
     12
     13libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
     14libgnulib_la_SOURCES =  \
     15        asnprintf.c \
     16        printf-args.c \
     17        printf-args.h \
     18        printf-parse.c \
     19        printf-parse.h \
     20        vasnprintf.c \
     21        vasnprintf.h \
     22        printf.c \
     23        printf.h \
     24        g-gnulib.h
     25
     26
     27EXTRA_DIST += makefile.msc
  • navit/support/glib/gnulib/g-gnulib.h

     
     1/* GLIB - Library of useful routines for C programming
     2 * Copyright (C) 2003  Matthias Clasen
     3 *
     4 * This library is free software; you can redistribute it and/or
     5 * modify it under the terms of the GNU Lesser General Public
     6 * License as published by the Free Software Foundation; either
     7 * version 2 of the License, or (at your option) any later version.
     8 *
     9 * This library is distributed in the hope that it will be useful,
     10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12 * Lesser General Public License for more details.
     13 *
     14 * You should have received a copy of the GNU Lesser General Public
     15 * License along with this library; if not, write to the
     16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     17 * Boston, MA 02111-1307, USA.
     18 */
     19#ifndef __G_GNULIB_H__
     20
     21#include "config.h"
     22#include <stdlib.h>
     23#include "glib/glib.h"
     24
     25/* Private namespace for gnulib functions */
     26#define asnprintf        _g_gnulib_asnprintf
     27#define vasnprintf       _g_gnulib_vasnprintf
     28#define printf_parse     _g_gnulib_printf_parse
     29#define printf_fetchargs _g_gnulib_printf_fetchargs
     30
     31/* Use GLib memory allocation */
     32#undef malloc
     33#undef realloc
     34#undef free
     35#define malloc  g_malloc
     36#define realloc g_realloc
     37#define free    g_free
     38
     39/* Ensure only C99 snprintf gets used */
     40#undef HAVE_SNPRINTF
     41#ifdef HAVE_C99_SNPRINTF
     42#define HAVE_SNPRINTF 1
     43#else
     44#define HAVE_SNPRINTF 0
     45#endif
     46
     47
     48#endif  /* __G_GNULIB_H__ */
     49
  • navit/support/glib/gnulib/vasnprintf.c

     
     1/* vsprintf with automatic memory allocation.
     2   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifndef _WIN32
     20/* Tell glibc's <stdio.h> to provide a prototype for snprintf().
     21   This must come before <config.h> because <config.h> may include
     22   <features.h>, and once <features.h> has been included, it's too late.  */
     23#ifndef _GNU_SOURCE
     24# define _GNU_SOURCE    1
     25#endif
     26#endif
     27
     28#ifdef HAVE_CONFIG_H
     29# include <config.h>
     30#endif
     31#include "glib/galloca.h"
     32
     33#include "g-gnulib.h"
     34
     35/* Specification.  */
     36#include "vasnprintf.h"
     37
     38#include <stdio.h>      /* snprintf(), sprintf() */
     39#include <stdlib.h>     /* abort(), malloc(), realloc(), free() */
     40#include <string.h>     /* memcpy(), strlen() */
     41#include <errno.h>      /* errno */
     42#include <limits.h>     /* CHAR_BIT */
     43#include <float.h>      /* DBL_MAX_EXP, LDBL_MAX_EXP */
     44#include "printf-parse.h"
     45
     46#ifdef HAVE_WCHAR_T
     47# ifdef HAVE_WCSLEN
     48#  define local_wcslen wcslen
     49# else
     50   /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid
     51      a dependency towards this library, here is a local substitute.
     52      Define this substitute only once, even if this file is included
     53      twice in the same compilation unit.  */
     54#  ifndef local_wcslen_defined
     55#   define local_wcslen_defined 1
     56static size_t
     57local_wcslen (const wchar_t *s)
     58{
     59  const wchar_t *ptr;
     60
     61  for (ptr = s; *ptr != (wchar_t) 0; ptr++)
     62    ;
     63  return ptr - s;
     64}
     65#  endif
     66# endif
     67#endif
     68
     69/* For those losing systems which don't have 'alloca' we have to add
     70   some additional code emulating it.  */
     71#ifdef HAVE_ALLOCA
     72# define freea(p) /* nothing */
     73#else
     74# define alloca(n) malloc (n)
     75# define freea(p) free (p)
     76#endif
     77
     78#ifndef HAVE_LONG_LONG_FORMAT
     79static int
     80print_long_long (char *buf,
     81                 int len,
     82                 int width,
     83                 int precision,
     84                 unsigned long flags,
     85                 char conversion,
     86                 unsigned long long number)
     87{
     88  int negative = FALSE;
     89  char buffer[128];
     90  char *bufferend;
     91  char *pointer;
     92  int base;
     93  static const char *upper = "0123456789ABCDEFX";
     94  static const char *lower = "0123456789abcdefx";
     95  const char *digits;
     96  int i;
     97  char *p;
     98  int count;
     99
     100#define EMIT(c)           \
     101  if (p - buf == len - 1) \
     102    {                     \
     103      *p++ = '\0';        \
     104      return len;         \
     105    }                     \
     106  else                    \
     107    *p++ = c;
     108 
     109  p = buf;
     110 
     111  switch (conversion)
     112    {
     113    case 'o':
     114      base = 8;
     115      digits = lower;
     116      negative = FALSE;
     117      break;
     118    case 'x':
     119      base = 16;
     120      digits = lower;
     121      negative = FALSE;
     122      break;
     123    case 'X':
     124      base = 16;
     125      digits = upper;
     126      negative = FALSE;
     127      break;
     128    default:
     129      base = 10;
     130      digits = lower;
     131      negative = (long long)number < 0;
     132      if (negative)
     133        number = -((long long)number);
     134      break;
     135    }
     136
     137  /* Build number */
     138  pointer = bufferend = &buffer[sizeof(buffer) - 1];
     139  *pointer-- = '\0';
     140  for (i = 1; i < (int)sizeof(buffer); i++)
     141    {
     142      *pointer-- = digits[number % base];
     143      number /= base;
     144      if (number == 0)
     145        break;
     146    }
     147
     148  /* Adjust width */
     149  width -= (bufferend - pointer) - 1;
     150
     151  /* Adjust precision */
     152  if (precision != -1)
     153    {
     154      precision -= (bufferend - pointer) - 1;
     155      if (precision < 0)
     156        precision = 0;
     157      flags |= FLAG_ZERO;
     158    }
     159
     160  /* Adjust width further */
     161  if (negative || (flags & FLAG_SHOWSIGN) || (flags & FLAG_SPACE))
     162    width--;
     163  if (flags & FLAG_ALT)
     164    {
     165      switch (base)
     166        {
     167        case 16:
     168          width -= 2;
     169          break;
     170        case 8:
     171          width--;
     172          break;
     173        default:
     174          break;
     175        }
     176    }
     177
     178  /* Output prefixes spaces if needed */
     179  if (! ((flags & FLAG_LEFT) ||
     180         ((flags & FLAG_ZERO) && (precision == -1))))
     181    {
     182      count = (precision == -1) ? 0 : precision;
     183      while (width-- > count)
     184        *p++ = ' ';
     185    }
     186
     187  /* width has been adjusted for signs and alternatives */
     188  if (negative)
     189    {
     190      EMIT ('-');
     191    }
     192  else if (flags & FLAG_SHOWSIGN)
     193    {
     194      EMIT('+');
     195    }
     196  else if (flags & FLAG_SPACE)
     197    {
     198      EMIT(' ');
     199    }
     200 
     201  if (flags & FLAG_ALT)
     202    {
     203      switch (base)
     204        {
     205        case 8:
     206          EMIT('0');
     207          break;
     208        case 16:
     209          EMIT('0');
     210          EMIT(digits[16]);
     211          break;
     212        default:
     213          break;
     214        } /* switch base */
     215    }
     216 
     217  /* Output prefixed zero padding if needed */
     218  if (flags & FLAG_ZERO)
     219    {
     220      if (precision == -1)
     221        precision = width;
     222      while (precision-- > 0)
     223        {
     224          EMIT('0');
     225          width--;
     226        }
     227    }
     228 
     229  /* Output the number itself */
     230  while (*(++pointer))
     231    {
     232      EMIT(*pointer);
     233    }
     234 
     235  /* Output trailing spaces if needed */
     236  if (flags & FLAG_LEFT)
     237    {
     238      while (width-- > 0)
     239        EMIT(' ');
     240    }
     241 
     242  EMIT('\0');
     243 
     244  return p - buf - 1;
     245}
     246#endif
     247
     248char *
     249vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
     250{
     251  char_directives d;
     252  arguments a;
     253
     254  if (printf_parse (format, &d, &a) < 0)
     255    {
     256      errno = EINVAL;
     257      return NULL;
     258    }
     259
     260#define CLEANUP() \
     261  free (d.dir);                                                         \
     262  if (a.arg)                                                            \
     263    free (a.arg);
     264
     265  if (printf_fetchargs (args, &a) < 0)
     266    {
     267      CLEANUP ();
     268      errno = EINVAL;
     269      return NULL;
     270    }
     271
     272  {
     273    char *buf =
     274      (char *) alloca (7 + d.max_width_length + d.max_precision_length + 6);
     275    const char *cp;
     276    unsigned int i;
     277    char_directive *dp;
     278    /* Output string accumulator.  */
     279    char *result;
     280    size_t allocated;
     281    size_t length;
     282
     283    if (resultbuf != NULL)
     284      {
     285        result = resultbuf;
     286        allocated = *lengthp;
     287      }
     288    else
     289      {
     290        result = NULL;
     291        allocated = 0;
     292      }
     293    length = 0;
     294    /* Invariants:
     295       result is either == resultbuf or == NULL or malloc-allocated.
     296       If length > 0, then result != NULL.  */
     297
     298#define ENSURE_ALLOCATION(needed) \
     299    if ((needed) > allocated)                                           \
     300      {                                                                 \
     301        char *memory;                                                   \
     302                                                                        \
     303        allocated = (allocated > 0 ? 2 * allocated : 12);               \
     304        if ((needed) > allocated)                                       \
     305          allocated = (needed);                                         \
     306        if (result == resultbuf || result == NULL)                      \
     307          memory = (char *) malloc (allocated);                         \
     308        else                                                            \
     309          memory = (char *) realloc (result, allocated);                \
     310                                                                        \
     311        if (memory == NULL)                                             \
     312          {                                                             \
     313            if (!(result == resultbuf || result == NULL))               \
     314              free (result);                                            \
     315            freea (buf);                                                \
     316            CLEANUP ();                                                 \
     317            errno = ENOMEM;                                             \
     318            return NULL;                                                \
     319          }                                                             \
     320        if (result == resultbuf && length > 0)                          \
     321          memcpy (memory, result, length);                              \
     322        result = memory;                                                \
     323      }
     324
     325    for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++)
     326      {
     327        if (cp != dp->dir_start)
     328          {
     329            size_t n = dp->dir_start - cp;
     330
     331            ENSURE_ALLOCATION (length + n);
     332            memcpy (result + length, cp, n);
     333            length += n;
     334          }
     335        if (i == d.count)
     336          break;
     337
     338        /* Execute a single directive.  */
     339        if (dp->conversion == '%')
     340          {
     341            if (!(dp->arg_index < 0))
     342              abort ();
     343            ENSURE_ALLOCATION (length + 1);
     344            result[length] = '%';
     345            length += 1;
     346          }
     347        else
     348          {
     349            if (!(dp->arg_index >= 0))
     350              abort ();
     351
     352            if (dp->conversion == 'n')
     353              {
     354                switch (a.arg[dp->arg_index].type)
     355                  {
     356                  case TYPE_COUNT_SCHAR_POINTER:
     357                    *a.arg[dp->arg_index].a.a_count_schar_pointer = length;
     358                    break;
     359                  case TYPE_COUNT_SHORT_POINTER:
     360                    *a.arg[dp->arg_index].a.a_count_short_pointer = length;
     361                    break;
     362                  case TYPE_COUNT_INT_POINTER:
     363                    *a.arg[dp->arg_index].a.a_count_int_pointer = length;
     364                    break;
     365                  case TYPE_COUNT_LONGINT_POINTER:
     366                    *a.arg[dp->arg_index].a.a_count_longint_pointer = length;
     367                    break;
     368#ifdef HAVE_LONG_LONG
     369                  case TYPE_COUNT_LONGLONGINT_POINTER:
     370                    *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length;
     371                    break;
     372#endif
     373                  default:
     374                    abort ();
     375                  }
     376              }
     377            else
     378              {
     379                arg_type type = a.arg[dp->arg_index].type;
     380                char *p;
     381                unsigned int prefix_count;
     382                int prefixes[2];
     383#if !HAVE_SNPRINTF
     384                unsigned int tmp_length;
     385                char tmpbuf[700];
     386                char *tmp;
     387
     388                /* Allocate a temporary buffer of sufficient size for calling
     389                   sprintf.  */
     390                {
     391                  unsigned int width;
     392                  unsigned int precision;
     393
     394                  width = 0;
     395                  if (dp->width_start != dp->width_end)
     396                    {
     397                      if (dp->width_arg_index >= 0)
     398                        {
     399                          int arg;
     400
     401                          if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
     402                            abort ();
     403                          arg = a.arg[dp->width_arg_index].a.a_int;
     404                          width = (arg < 0 ? -arg : arg);
     405                        }
     406                      else
     407                        {
     408                          const char *digitp = dp->width_start;
     409
     410                          do
     411                            width = width * 10 + (*digitp++ - '0');
     412                          while (digitp != dp->width_end);
     413                        }
     414                    }
     415
     416                  precision = 6;
     417                  if (dp->precision_start != dp->precision_end)
     418                    {
     419                      if (dp->precision_arg_index >= 0)
     420                        {
     421                          int arg;
     422
     423                          if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
     424                            abort ();
     425                          arg = a.arg[dp->precision_arg_index].a.a_int;
     426                          precision = (arg < 0 ? 0 : arg);
     427                        }
     428                      else
     429                        {
     430                          const char *digitp = dp->precision_start + 1;
     431
     432                          precision = 0;
     433                          while (digitp != dp->precision_end)
     434                            precision = precision * 10 + (*digitp++ - '0');
     435                        }
     436                    }
     437
     438                  switch (dp->conversion)
     439                    {
     440                    case 'd': case 'i': case 'u':
     441# ifdef HAVE_LONG_LONG
     442                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
     443                        tmp_length =
     444                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
     445                                          * 0.30103 /* binary -> decimal */
     446                                          * 2 /* estimate for FLAG_GROUP */
     447                                         )
     448                          + 1 /* turn floor into ceil */
     449                          + 1; /* account for leading sign */
     450                      else
     451# endif
     452                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
     453                        tmp_length =
     454                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
     455                                          * 0.30103 /* binary -> decimal */
     456                                          * 2 /* estimate for FLAG_GROUP */
     457                                         )
     458                          + 1 /* turn floor into ceil */
     459                          + 1; /* account for leading sign */
     460                      else
     461                        tmp_length =
     462                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
     463                                          * 0.30103 /* binary -> decimal */
     464                                          * 2 /* estimate for FLAG_GROUP */
     465                                         )
     466                          + 1 /* turn floor into ceil */
     467                          + 1; /* account for leading sign */
     468                      break;
     469
     470                    case 'o':
     471# ifdef HAVE_LONG_LONG
     472                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
     473                        tmp_length =
     474                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
     475                                          * 0.333334 /* binary -> octal */
     476                                         )
     477                          + 1 /* turn floor into ceil */
     478                          + 1; /* account for leading sign */
     479                      else
     480# endif
     481                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
     482                        tmp_length =
     483                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
     484                                          * 0.333334 /* binary -> octal */
     485                                         )
     486                          + 1 /* turn floor into ceil */
     487                          + 1; /* account for leading sign */
     488                      else
     489                        tmp_length =
     490                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
     491                                          * 0.333334 /* binary -> octal */
     492                                         )
     493                          + 1 /* turn floor into ceil */
     494                          + 1; /* account for leading sign */
     495                      break;
     496
     497                    case 'x': case 'X':
     498# ifdef HAVE_LONG_LONG
     499                      if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT)
     500                        tmp_length =
     501                          (unsigned int) (sizeof (unsigned long long) * CHAR_BIT
     502                                          * 0.25 /* binary -> hexadecimal */
     503                                         )
     504                          + 1 /* turn floor into ceil */
     505                          + 2; /* account for leading sign or alternate form */
     506                      else
     507# endif
     508# ifdef HAVE_INT64_AND_I64
     509                      if (type == TYPE_INT64 || type == TYPE_UINT64)
     510                        tmp_length =
     511                          (unsigned int) (sizeof (unsigned __int64) * CHAR_BIT
     512                                          * 0.25 /* binary -> hexadecimal */
     513                                          )
     514                          + 1 /* turn floor into ceil */
     515                          + 2; /* account for leading sign or alternate form */
     516                      else
     517# endif
     518                      if (type == TYPE_LONGINT || type == TYPE_ULONGINT)
     519                        tmp_length =
     520                          (unsigned int) (sizeof (unsigned long) * CHAR_BIT
     521                                          * 0.25 /* binary -> hexadecimal */
     522                                         )
     523                          + 1 /* turn floor into ceil */
     524                          + 2; /* account for leading sign or alternate form */
     525                      else
     526                        tmp_length =
     527                          (unsigned int) (sizeof (unsigned int) * CHAR_BIT
     528                                          * 0.25 /* binary -> hexadecimal */
     529                                         )
     530                          + 1 /* turn floor into ceil */
     531                          + 2; /* account for leading sign or alternate form */
     532                      break;
     533
     534                    case 'f': case 'F':
     535# ifdef HAVE_LONG_DOUBLE
     536                      if (type == TYPE_LONGDOUBLE)
     537                        tmp_length =
     538                          (unsigned int) (LDBL_MAX_EXP
     539                                          * 0.30103 /* binary -> decimal */
     540                                          * 2 /* estimate for FLAG_GROUP */
     541                                         )
     542                          + 1 /* turn floor into ceil */
     543                          + precision
     544                          + 10; /* sign, decimal point etc. */
     545                      else
     546# endif
     547                        tmp_length =
     548                          (unsigned int) (DBL_MAX_EXP
     549                                          * 0.30103 /* binary -> decimal */
     550                                          * 2 /* estimate for FLAG_GROUP */
     551                                         )
     552                          + 1 /* turn floor into ceil */
     553                          + precision
     554                          + 10; /* sign, decimal point etc. */
     555                      break;
     556
     557                    case 'e': case 'E': case 'g': case 'G':
     558                    case 'a': case 'A':
     559                      tmp_length =
     560                        precision
     561                        + 12; /* sign, decimal point, exponent etc. */
     562                      break;
     563
     564                    case 'c':
     565# ifdef HAVE_WINT_T
     566                      if (type == TYPE_WIDE_CHAR)
     567                        tmp_length = MB_CUR_MAX;
     568                      else
     569# endif
     570                        tmp_length = 1;
     571                      break;
     572
     573                    case 's':
     574# ifdef HAVE_WCHAR_T
     575                      if (type == TYPE_WIDE_STRING)
     576                        tmp_length =
     577                          (a.arg[dp->arg_index].a.a_wide_string == NULL
     578                          ? 6 /* wcslen(L"(null)") */
     579                           : local_wcslen (a.arg[dp->arg_index].a.a_wide_string))
     580                          * MB_CUR_MAX;
     581                      else
     582# endif
     583                        tmp_length = a.arg[dp->arg_index].a.a_string == NULL
     584                          ? 6 /* strlen("(null)") */
     585                          : strlen (a.arg[dp->arg_index].a.a_string);
     586                      break;
     587
     588                    case 'p':
     589                      tmp_length =
     590                        (unsigned int) (sizeof (void *) * CHAR_BIT
     591                                        * 0.25 /* binary -> hexadecimal */
     592                                       )
     593                          + 1 /* turn floor into ceil */
     594                          + 2; /* account for leading 0x */
     595                      break;
     596
     597                    default:
     598                      abort ();
     599                    }
     600
     601                  if (tmp_length < width)
     602                    tmp_length = width;
     603
     604                  tmp_length++; /* account for trailing NUL */
     605                }
     606
     607                if (tmp_length <= sizeof (tmpbuf))
     608                  tmp = tmpbuf;
     609                else
     610                  {
     611                    tmp = (char *) malloc (tmp_length);
     612                    if (tmp == NULL)
     613                      {
     614                        /* Out of memory.  */
     615                        if (!(result == resultbuf || result == NULL))
     616                          free (result);
     617                        freea (buf);
     618                        CLEANUP ();
     619                        errno = ENOMEM;
     620                        return NULL;
     621                      }
     622                  }
     623#endif
     624
     625                /* Construct the format string for calling snprintf or
     626                   sprintf.  */
     627                p = buf;
     628                *p++ = '%';
     629                if (dp->flags & FLAG_GROUP)
     630                  *p++ = '\'';
     631                if (dp->flags & FLAG_LEFT)
     632                  *p++ = '-';
     633                if (dp->flags & FLAG_SHOWSIGN)
     634                  *p++ = '+';
     635                if (dp->flags & FLAG_SPACE)
     636                  *p++ = ' ';
     637                if (dp->flags & FLAG_ALT)
     638                  *p++ = '#';
     639                if (dp->flags & FLAG_ZERO)
     640                  *p++ = '0';
     641                if (dp->width_start != dp->width_end)
     642                  {
     643                    size_t n = dp->width_end - dp->width_start;
     644                    memcpy (p, dp->width_start, n);
     645                    p += n;
     646                  }
     647                if (dp->precision_start != dp->precision_end)
     648                  {
     649                    size_t n = dp->precision_end - dp->precision_start;
     650                    memcpy (p, dp->precision_start, n);
     651                    p += n;
     652                  }
     653
     654                switch (type)
     655                  {
     656#ifdef HAVE_INT64_AND_I64
     657                  case TYPE_INT64:
     658                  case TYPE_UINT64:
     659                    *p++ = 'I';
     660                    *p++ = '6';
     661                    *p++ = '4';
     662                    break;
     663#endif
     664#ifdef HAVE_LONG_LONG
     665                  case TYPE_LONGLONGINT:
     666                  case TYPE_ULONGLONGINT:
     667#ifdef HAVE_INT64_AND_I64       /* The system (sn)printf uses %I64. Also assume
     668                                 * that long long == __int64.
     669                                 */
     670                    *p++ = 'I';
     671                    *p++ = '6';
     672                    *p++ = '4';
     673                    break;
     674#else
     675                    *p++ = 'l';
     676                    /*FALLTHROUGH*/
     677#endif
     678#endif
     679                  case TYPE_LONGINT:
     680                  case TYPE_ULONGINT:
     681#ifdef HAVE_WINT_T
     682                  case TYPE_WIDE_CHAR:
     683#endif
     684#ifdef HAVE_WCHAR_T
     685                  case TYPE_WIDE_STRING:
     686#endif
     687                    *p++ = 'l';
     688                    break;
     689#ifdef HAVE_LONG_DOUBLE
     690                  case TYPE_LONGDOUBLE:
     691                    *p++ = 'L';
     692                    break;
     693#endif
     694                  default:
     695                    break;
     696                  }
     697                *p = dp->conversion;
     698#if HAVE_SNPRINTF
     699                p[1] = '%';
     700                p[2] = 'n';
     701                p[3] = '\0';
     702#else
     703                p[1] = '\0';
     704#endif
     705
     706                /* Construct the arguments for calling snprintf or sprintf.  */
     707                prefix_count = 0;
     708                if (dp->width_arg_index >= 0)
     709                  {
     710                    if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
     711                      abort ();
     712                    prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
     713                  }
     714                if (dp->precision_arg_index >= 0)
     715                  {
     716                    if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
     717                      abort ();
     718                    prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int;
     719                  }
     720
     721#if HAVE_SNPRINTF
     722                /* Prepare checking whether snprintf returns the count
     723                   via %n.  */
     724                ENSURE_ALLOCATION (length + 1);
     725                result[length] = '\0';
     726#endif
     727
     728                for (;;)
     729                  {
     730                    size_t maxlen;
     731                    int count;
     732#if HAVE_SNPRINTF
     733                    int retcount;
     734#endif
     735
     736                    maxlen = allocated - length;
     737                    count = -1;
     738
     739#if HAVE_SNPRINTF
     740                    retcount = 0;
     741
     742#define SNPRINTF_BUF(arg) \
     743                    switch (prefix_count)                                   \
     744                      {                                                     \
     745                      case 0:                                               \
     746                        retcount = snprintf (result + length, maxlen, buf,  \
     747                                             arg, &count);                  \
     748                        break;                                              \
     749                      case 1:                                               \
     750                        retcount = snprintf (result + length, maxlen, buf,  \
     751                                             prefixes[0], arg, &count);     \
     752                        break;                                              \
     753                      case 2:                                               \
     754                        retcount = snprintf (result + length, maxlen, buf,  \
     755                                             prefixes[0], prefixes[1], arg, \
     756                                             &count);                       \
     757                        break;                                              \
     758                      default:                                              \
     759                        abort ();                                           \
     760                      }
     761#else
     762#define SNPRINTF_BUF(arg) \
     763                    switch (prefix_count)                                   \
     764                      {                                                     \
     765                      case 0:                                               \
     766                        count = sprintf (tmp, buf, arg);                    \
     767                        break;                                              \
     768                      case 1:                                               \
     769                        count = sprintf (tmp, buf, prefixes[0], arg);       \
     770                        break;                                              \
     771                      case 2:                                               \
     772                        count = sprintf (tmp, buf, prefixes[0], prefixes[1],\
     773                                         arg);                              \
     774                        break;                                              \
     775                      default:                                              \
     776                        abort ();                                           \
     777                      }
     778#endif
     779
     780                    switch (type)
     781                      {
     782                      case TYPE_SCHAR:
     783                        {
     784                          int arg = a.arg[dp->arg_index].a.a_schar;
     785                          SNPRINTF_BUF (arg);
     786                        }
     787                        break;
     788                      case TYPE_UCHAR:
     789                        {
     790                          unsigned int arg = a.arg[dp->arg_index].a.a_uchar;
     791                          SNPRINTF_BUF (arg);
     792                        }
     793                        break;
     794                      case TYPE_SHORT:
     795                        {
     796                          int arg = a.arg[dp->arg_index].a.a_short;
     797                          SNPRINTF_BUF (arg);
     798                        }
     799                        break;
     800                      case TYPE_USHORT:
     801                        {
     802                          unsigned int arg = a.arg[dp->arg_index].a.a_ushort;
     803                          SNPRINTF_BUF (arg);
     804                        }
     805                        break;
     806                      case TYPE_INT:
     807                        {
     808                          int arg = a.arg[dp->arg_index].a.a_int;
     809                          SNPRINTF_BUF (arg);
     810                        }
     811                        break;
     812                      case TYPE_UINT:
     813                        {
     814                          unsigned int arg = a.arg[dp->arg_index].a.a_uint;
     815                          SNPRINTF_BUF (arg);
     816                        }
     817                        break;
     818                      case TYPE_LONGINT:
     819                        {
     820                          long int arg = a.arg[dp->arg_index].a.a_longint;
     821                          SNPRINTF_BUF (arg);
     822                        }
     823                        break;
     824                      case TYPE_ULONGINT:
     825                        {
     826                          unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint;
     827                          SNPRINTF_BUF (arg);
     828                        }
     829                        break;
     830#ifdef HAVE_INT64_AND_I64
     831                      case TYPE_INT64:
     832                        {
     833                          __int64 arg = a.arg[dp->arg_index].a.a_int64;
     834                          SNPRINTF_BUF (arg);
     835                        }
     836                        break;
     837                      case TYPE_UINT64:
     838                        {
     839                          unsigned __int64 arg = a.arg[dp->arg_index].a.a_uint64;
     840                          SNPRINTF_BUF (arg);
     841                        }
     842                        break;                 
     843#endif
     844#ifdef HAVE_LONG_LONG
     845#ifndef HAVE_LONG_LONG_FORMAT
     846                      case TYPE_LONGLONGINT:
     847                      case TYPE_ULONGLONGINT:
     848                        {
     849                          unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
     850                          int width;
     851                          int precision;
     852
     853                          width = 0;
     854                          if (dp->width_start != dp->width_end)
     855                            {
     856                              if (dp->width_arg_index >= 0)
     857                                {
     858                                  int arg;
     859                                 
     860                                  if (!(a.arg[dp->width_arg_index].type == TYPE_INT))
     861                                    abort ();
     862                                  arg = a.arg[dp->width_arg_index].a.a_int;
     863                                  width = (arg < 0 ? -arg : arg);
     864                                }
     865                              else
     866                                {
     867                                  const char *digitp = dp->width_start;
     868                                 
     869                                  do
     870                                    width = width * 10 + (*digitp++ - '0');
     871                                  while (digitp != dp->width_end);
     872                                }
     873                            }
     874
     875                          precision = -1;
     876                          if (dp->precision_start != dp->precision_end)
     877                            {
     878                              if (dp->precision_arg_index >= 0)
     879                                {
     880                                  int arg;
     881                                 
     882                                  if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
     883                                    abort ();
     884                                  arg = a.arg[dp->precision_arg_index].a.a_int;
     885                                  precision = (arg < 0 ? 0 : arg);
     886                                }
     887                              else
     888                                {
     889                                  const char *digitp = dp->precision_start + 1;
     890                                 
     891                                  precision = 0;
     892                                  do
     893                                    precision = precision * 10 + (*digitp++ - '0');
     894                                  while (digitp != dp->precision_end);
     895                                }
     896                            }
     897                         
     898#if HAVE_SNPRINTF
     899                          count = print_long_long (result + length, maxlen,
     900                                                   width, precision,
     901                                                   dp->flags,
     902                                                   dp->conversion,
     903                                                   arg);
     904#else
     905                          count = print_long_long (tmp, tmp_length,
     906                                                   width, precision,
     907                                                   dp->flags,
     908                                                   dp->conversion,
     909                                                   arg);
     910#endif
     911                        }
     912                        break;
     913#else
     914                      case TYPE_LONGLONGINT:
     915                        {
     916                          long long int arg = a.arg[dp->arg_index].a.a_longlongint;
     917                          SNPRINTF_BUF (arg);
     918                        }
     919                        break;
     920                      case TYPE_ULONGLONGINT:
     921                        {
     922                          unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint;
     923                          SNPRINTF_BUF (arg);
     924                        }
     925                        break;
     926#endif
     927#endif
     928                      case TYPE_DOUBLE:
     929                        {
     930                          double arg = a.arg[dp->arg_index].a.a_double;
     931                          SNPRINTF_BUF (arg);
     932                        }
     933                        break;
     934#ifdef HAVE_LONG_DOUBLE
     935                      case TYPE_LONGDOUBLE:
     936                        {
     937                          long double arg = a.arg[dp->arg_index].a.a_longdouble;
     938                          SNPRINTF_BUF (arg);
     939                        }
     940                        break;
     941#endif
     942                      case TYPE_CHAR:
     943                        {
     944                          int arg = a.arg[dp->arg_index].a.a_char;
     945                          SNPRINTF_BUF (arg);
     946                        }
     947                        break;
     948#ifdef HAVE_WINT_T
     949                      case TYPE_WIDE_CHAR:
     950                        {
     951                          wint_t arg = a.arg[dp->arg_index].a.a_wide_char;
     952                          SNPRINTF_BUF (arg);
     953                        }
     954                        break;
     955#endif
     956                      case TYPE_STRING:
     957                        {
     958                          const char *arg = a.arg[dp->arg_index].a.a_string == NULL
     959                            ? "(null)"
     960                            : a.arg[dp->arg_index].a.a_string;
     961                          SNPRINTF_BUF (arg);
     962                        }
     963                        break;
     964#ifdef HAVE_WCHAR_T
     965                      case TYPE_WIDE_STRING:
     966                        {
     967                          const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string == NULL
     968                            ? L"(null)"
     969                            : a.arg[dp->arg_index].a.a_wide_string;
     970                          SNPRINTF_BUF (arg);
     971                        }
     972                        break;
     973#endif
     974                      case TYPE_POINTER:
     975                        {
     976                          void *arg = a.arg[dp->arg_index].a.a_pointer;
     977                          SNPRINTF_BUF (arg);
     978                        }
     979                        break;
     980                      default:
     981                        abort ();
     982                      }
     983
     984#if HAVE_SNPRINTF
     985                    /* Portability: Not all implementations of snprintf()
     986                       are ISO C 99 compliant.  Determine the number of
     987                       bytes that snprintf() has produced or would have
     988                       produced.  */
     989                    if (count >= 0)
     990                      {
     991                        /* Verify that snprintf() has NUL-terminated its
     992                           result.  */
     993                        if (count < maxlen && result[length + count] != '\0')
     994                          abort ();
     995                        /* Portability hack.  */
     996                        if (retcount > count)
     997                          count = retcount;
     998                      }
     999                    else
     1000                      {
     1001                        /* snprintf() doesn't understand the '%n'
     1002                           directive.  */
     1003                        if (p[1] != '\0')
     1004                          {
     1005                            /* Don't use the '%n' directive; instead, look
     1006                               at the snprintf() return value.  */
     1007                            p[1] = '\0';
     1008                            continue;
     1009                          }
     1010                        count = retcount;
     1011                      }
     1012#endif
     1013
     1014                    /* Attempt to handle failure.  */
     1015                    if (count < 0)
     1016                      {
     1017                        if (!(result == resultbuf || result == NULL))
     1018                          free (result);
     1019                        freea (buf);
     1020                        CLEANUP ();
     1021                        errno = EINVAL;
     1022                        return NULL;
     1023                      }
     1024
     1025#if !HAVE_SNPRINTF
     1026                    if (count >= tmp_length)
     1027                      /* tmp_length was incorrectly calculated - fix the
     1028                         code above!  */
     1029                      abort ();
     1030#endif
     1031
     1032                    /* Make room for the result.  */
     1033                    if (count >= maxlen)
     1034                      {
     1035                        /* Need at least count bytes.  But allocate
     1036                           proportionally, to avoid looping eternally if
     1037                           snprintf() reports a too small count.  */
     1038                        size_t n = length + count;
     1039
     1040                        if (n < 2 * allocated)
     1041                          n = 2 * allocated;
     1042
     1043                        ENSURE_ALLOCATION (n);
     1044#if HAVE_SNPRINTF
     1045                        continue;
     1046#endif
     1047                      }
     1048
     1049#if HAVE_SNPRINTF
     1050                    /* The snprintf() result did fit.  */
     1051#else
     1052                    /* Append the sprintf() result.  */
     1053                    memcpy (result + length, tmp, count);
     1054                    if (tmp != tmpbuf)
     1055                      free (tmp);
     1056#endif
     1057
     1058                    length += count;
     1059                    break;
     1060                  }
     1061              }
     1062          }
     1063      }
     1064
     1065    /* Add the final NUL.  */
     1066    ENSURE_ALLOCATION (length + 1);
     1067    result[length] = '\0';
     1068
     1069    if (result != resultbuf && length + 1 < allocated)
     1070      {
     1071        /* Shrink the allocated memory if possible.  */
     1072        char *memory;
     1073
     1074        memory = (char *) realloc (result, length + 1);
     1075        if (memory != NULL)
     1076          result = memory;
     1077      }
     1078
     1079    freea (buf);
     1080    CLEANUP ();
     1081    *lengthp = length;
     1082    return result;
     1083  }
     1084}
  • navit/support/glib/gnulib/printf-parse.c

     
     1/* Formatted output to strings.
     2   Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifdef HAVE_CONFIG_H
     20# include <config.h>
     21#endif
     22
     23#include "g-gnulib.h"
     24
     25/* Specification.  */
     26#include "printf-parse.h"
     27
     28/* Get size_t, NULL.  */
     29#include <stddef.h>
     30
     31/* Get intmax_t.  */
     32#if HAVE_STDINT_H_WITH_UINTMAX
     33# include <stdint.h>
     34#endif
     35#if HAVE_INTTYPES_H_WITH_UINTMAX
     36# include <inttypes.h>
     37#endif
     38
     39/* malloc(), realloc(), free().  */
     40#include <stdlib.h>
     41
     42#ifdef STATIC
     43STATIC
     44#endif
     45int
     46printf_parse (const char *format, char_directives *d, arguments *a)
     47{
     48  const char *cp = format;              /* pointer into format */
     49  int arg_posn = 0;             /* number of regular arguments consumed */
     50  unsigned int d_allocated;             /* allocated elements of d->dir */
     51  unsigned int a_allocated;             /* allocated elements of a->arg */
     52  unsigned int max_width_length = 0;
     53  unsigned int max_precision_length = 0;
     54
     55  d->count = 0;
     56  d_allocated = 1;
     57  d->dir = malloc (d_allocated * sizeof (char_directive));
     58  if (d->dir == NULL)
     59    /* Out of memory.  */
     60    return -1;
     61
     62  a->count = 0;
     63  a_allocated = 0;
     64  a->arg = NULL;
     65
     66#define REGISTER_ARG(_index_,_type_) \
     67  {                                                                     \
     68    unsigned int n = (_index_);                                         \
     69    if (n >= a_allocated)                                               \
     70      {                                                                 \
     71        argument *memory;                                               \
     72        a_allocated = 2 * a_allocated;                                  \
     73        if (a_allocated <= n)                                           \
     74          a_allocated = n + 1;                                          \
     75        memory = (a->arg                                                \
     76                  ? realloc (a->arg, a_allocated * sizeof (argument))   \
     77                  : malloc (a_allocated * sizeof (argument)));          \
     78        if (memory == NULL)                                             \
     79          /* Out of memory.  */                                         \
     80          goto error;                                                   \
     81        a->arg = memory;                                                \
     82      }                                                                 \
     83    while (a->count <= n)                                               \
     84      a->arg[a->count++].type = TYPE_NONE;                              \
     85    if (a->arg[n].type == TYPE_NONE)                                    \
     86      a->arg[n].type = (_type_);                                        \
     87    else if (a->arg[n].type != (_type_))                                \
     88      /* Ambiguous type for positional argument.  */                    \
     89      goto error;                                                       \
     90  }
     91
     92  while (*cp != '\0')
     93    {
     94      char c = *cp++;
     95      if (c == '%')
     96        {
     97          int arg_index = -1;
     98          char_directive *dp = &d->dir[d->count];/* pointer to next directive */
     99
     100          /* Initialize the next directive.  */
     101          dp->dir_start = cp - 1;
     102          dp->flags = 0;
     103          dp->width_start = NULL;
     104          dp->width_end = NULL;
     105          dp->width_arg_index = -1;
     106          dp->precision_start = NULL;
     107          dp->precision_end = NULL;
     108          dp->precision_arg_index = -1;
     109          dp->arg_index = -1;
     110
     111          /* Test for positional argument.  */
     112          if (*cp >= '0' && *cp <= '9')
     113            {
     114              const char *np;
     115
     116              for (np = cp; *np >= '0' && *np <= '9'; np++)
     117                ;
     118              if (*np == '$')
     119                {
     120                  unsigned int n = 0;
     121
     122                  for (np = cp; *np >= '0' && *np <= '9'; np++)
     123                    n = 10 * n + (*np - '0');
     124                  if (n == 0)
     125                    /* Positional argument 0.  */
     126                    goto error;
     127                  arg_index = n - 1;
     128                  cp = np + 1;
     129                }
     130            }
     131
     132          /* Read the flags.  */
     133          for (;;)
     134            {
     135              if (*cp == '\'')
     136                {
     137                  dp->flags |= FLAG_GROUP;
     138                  cp++;
     139                }
     140              else if (*cp == '-')
     141                {
     142                  dp->flags |= FLAG_LEFT;
     143                  cp++;
     144                }
     145              else if (*cp == '+')
     146                {
     147                  dp->flags |= FLAG_SHOWSIGN;
     148                  cp++;
     149                }
     150              else if (*cp == ' ')
     151                {
     152                  dp->flags |= FLAG_SPACE;
     153                  cp++;
     154                }
     155              else if (*cp == '#')
     156                {
     157                  dp->flags |= FLAG_ALT;
     158                  cp++;
     159                }
     160              else if (*cp == '0')
     161                {
     162                  dp->flags |= FLAG_ZERO;
     163                  cp++;
     164                }
     165              else
     166                break;
     167            }
     168
     169          /* Parse the field width.  */
     170          if (*cp == '*')
     171            {
     172              dp->width_start = cp;
     173              cp++;
     174              dp->width_end = cp;
     175              if (max_width_length < 1)
     176                max_width_length = 1;
     177
     178              /* Test for positional argument.  */
     179              if (*cp >= '0' && *cp <= '9')
     180                {
     181                  const char *np;
     182
     183                  for (np = cp; *np >= '0' && *np <= '9'; np++)
     184                    ;
     185                  if (*np == '$')
     186                    {
     187                      unsigned int n = 0;
     188
     189                      for (np = cp; *np >= '0' && *np <= '9'; np++)
     190                        n = 10 * n + (*np - '0');
     191                      if (n == 0)
     192                        /* Positional argument 0.  */
     193                        goto error;
     194                      dp->width_arg_index = n - 1;
     195                      cp = np + 1;
     196                    }
     197                }
     198              if (dp->width_arg_index < 0)
     199                dp->width_arg_index = arg_posn++;
     200              REGISTER_ARG (dp->width_arg_index, TYPE_INT);
     201            }
     202          else if (*cp >= '0' && *cp <= '9')
     203            {
     204              unsigned int width_length;
     205
     206              dp->width_start = cp;
     207              for (; *cp >= '0' && *cp <= '9'; cp++)
     208                ;
     209              dp->width_end = cp;
     210              width_length = dp->width_end - dp->width_start;
     211              if (max_width_length < width_length)
     212                max_width_length = width_length;
     213            }
     214
     215          /* Parse the precision.  */
     216          if (*cp == '.')
     217            {
     218              cp++;
     219              if (*cp == '*')
     220                {
     221                  dp->precision_start = cp - 1;
     222                  cp++;
     223                  dp->precision_end = cp;
     224                  if (max_precision_length < 2)
     225                    max_precision_length = 2;
     226
     227                  /* Test for positional argument.  */
     228                  if (*cp >= '0' && *cp <= '9')
     229                    {
     230                      const char *np;
     231
     232                      for (np = cp; *np >= '0' && *np <= '9'; np++)
     233                        ;
     234                      if (*np == '$')
     235                        {
     236                          unsigned int n = 0;
     237
     238                          for (np = cp; *np >= '0' && *np <= '9'; np++)
     239                            n = 10 * n + (*np - '0');
     240                          if (n == 0)
     241                            /* Positional argument 0.  */
     242                            goto error;
     243                          dp->precision_arg_index = n - 1;
     244                          cp = np + 1;
     245                        }
     246                    }
     247                  if (dp->precision_arg_index < 0)
     248                    dp->precision_arg_index = arg_posn++;
     249                  REGISTER_ARG (dp->precision_arg_index, TYPE_INT);
     250                }
     251              else
     252                {
     253                  unsigned int precision_length;
     254
     255                  dp->precision_start = cp - 1;
     256                  for (; *cp >= '0' && *cp <= '9'; cp++)
     257                    ;
     258                  dp->precision_end = cp;
     259                  precision_length = dp->precision_end - dp->precision_start;
     260                  if (max_precision_length < precision_length)
     261                    max_precision_length = precision_length;
     262                }
     263            }
     264
     265          {
     266            arg_type type;
     267
     268            /* Parse argument type/size specifiers.  */
     269            {
     270              int flags = 0;
     271
     272              for (;;)
     273                {
     274                  if (*cp == 'h')
     275                    {
     276                      flags |= (1 << (flags & 1));
     277                      cp++;
     278                    }
     279                  else if (*cp == 'L')
     280                    {
     281                      flags |= 4;
     282                      cp++;
     283                    }
     284                  else if (*cp == 'l')
     285                    {
     286                      flags += 8;
     287                      cp++;
     288                    }
     289#ifdef HAVE_INT64_AND_I64
     290                  else if (cp[0] == 'I' &&
     291                           cp[1] == '6' &&
     292                           cp[2] == '4')
     293                    {
     294                      flags = 64;
     295                      cp += 3;
     296                    }
     297#endif
     298#ifdef HAVE_INTMAX_T
     299                  else if (*cp == 'j')
     300                    {
     301                      if (sizeof (intmax_t) > sizeof (long))
     302                        {
     303                          /* intmax_t = long long */
     304                          flags += 16;
     305                        }
     306                      else if (sizeof (intmax_t) > sizeof (int))
     307                        {
     308                          /* intmax_t = long */
     309                          flags += 8;
     310                        }
     311                      cp++;
     312                    }
     313#endif
     314                  else if (*cp == 'z' || *cp == 'Z')
     315                    {
     316                      /* 'z' is standardized in ISO C 99, but glibc uses 'Z'
     317                         because the warning facility in gcc-2.95.2 understands
     318                         only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784).  */
     319                      if (sizeof (size_t) > sizeof (long))
     320                        {
     321                          /* size_t = long long */
     322                          flags += 16;
     323                        }
     324                      else if (sizeof (size_t) > sizeof (int))
     325                        {
     326                          /* size_t = long */
     327                          flags += 8;
     328                        }
     329                      cp++;
     330                    }
     331                  else if (*cp == 't')
     332                    {
     333                      if (sizeof (ptrdiff_t) > sizeof (long))
     334                        {
     335                          /* ptrdiff_t = long long */
     336                          flags += 16;
     337                        }
     338                      else if (sizeof (ptrdiff_t) > sizeof (int))
     339                        {
     340                          /* ptrdiff_t = long */
     341                          flags += 8;
     342                        }
     343                      cp++;
     344                    }
     345                  else
     346                    break;
     347                }
     348
     349              /* Read the conversion character.  */
     350              c = *cp++;
     351              switch (c)
     352                {
     353                case 'd': case 'i':
     354#ifdef HAVE_INT64_AND_I64
     355                  if (flags == 64)
     356                    type = TYPE_INT64;
     357                  else
     358#endif
     359#ifdef HAVE_LONG_LONG
     360                  if (flags >= 16 || (flags & 4))
     361                    type = TYPE_LONGLONGINT;
     362                  else
     363#endif
     364                  if (flags >= 8)
     365                    type = TYPE_LONGINT;
     366                  else if (flags & 2)
     367                    type = TYPE_SCHAR;
     368                  else if (flags & 1)
     369                    type = TYPE_SHORT;
     370                  else
     371                    type = TYPE_INT;
     372                  break;
     373                case 'o': case 'u': case 'x': case 'X':
     374#ifdef HAVE_INT64_AND_I64
     375                  if (flags == 64)
     376                    type = TYPE_UINT64;
     377                  else
     378#endif
     379#ifdef HAVE_LONG_LONG
     380                  if (flags >= 16 || (flags & 4))
     381                    type = TYPE_ULONGLONGINT;
     382                  else
     383#endif
     384                  if (flags >= 8)
     385                    type = TYPE_ULONGINT;
     386                  else if (flags & 2)
     387                    type = TYPE_UCHAR;
     388                  else if (flags & 1)
     389                    type = TYPE_USHORT;
     390                  else
     391                    type = TYPE_UINT;
     392                  break;
     393                case 'f': case 'F': case 'e': case 'E': case 'g': case 'G':
     394                case 'a': case 'A':
     395#ifdef HAVE_LONG_DOUBLE
     396                  if (flags >= 16 || (flags & 4))
     397                    type = TYPE_LONGDOUBLE;
     398                  else
     399#endif
     400                  type = TYPE_DOUBLE;
     401                  break;
     402                case 'c':
     403                  if (flags >= 8)
     404#ifdef HAVE_WINT_T
     405                    type = TYPE_WIDE_CHAR;
     406#else
     407                    goto error;
     408#endif
     409                  else
     410                    type = TYPE_CHAR;
     411                  break;
     412#ifdef HAVE_WINT_T
     413                case 'C':
     414                  type = TYPE_WIDE_CHAR;
     415                  c = 'c';
     416                  break;
     417#endif
     418                case 's':
     419                  if (flags >= 8)
     420#ifdef HAVE_WCHAR_T
     421                    type = TYPE_WIDE_STRING;
     422#else
     423                    goto error;
     424#endif
     425                  else
     426                    type = TYPE_STRING;
     427                  break;
     428#ifdef HAVE_WCHAR_T
     429                case 'S':
     430                  type = TYPE_WIDE_STRING;
     431                  c = 's';
     432                  break;
     433#endif
     434                case 'p':
     435                  type = TYPE_POINTER;
     436                  break;
     437                case 'n':
     438#ifdef HAVE_LONG_LONG
     439                  if (flags >= 16 || (flags & 4))
     440                    type = TYPE_COUNT_LONGLONGINT_POINTER;
     441                  else
     442#endif
     443                  if (flags >= 8)
     444                    type = TYPE_COUNT_LONGINT_POINTER;
     445                  else if (flags & 2)
     446                    type = TYPE_COUNT_SCHAR_POINTER;
     447                  else if (flags & 1)
     448                    type = TYPE_COUNT_SHORT_POINTER;
     449                  else
     450                    type = TYPE_COUNT_INT_POINTER;
     451                  break;
     452                case '%':
     453                  type = TYPE_NONE;
     454                  break;
     455                default:
     456                  /* Unknown conversion character.  */
     457                  goto error;
     458                }
     459            }
     460
     461            if (type != TYPE_NONE)
     462              {
     463                dp->arg_index = arg_index;
     464                if (dp->arg_index < 0)
     465                  dp->arg_index = arg_posn++;
     466                REGISTER_ARG (dp->arg_index, type);
     467              }
     468            dp->conversion = c;
     469            dp->dir_end = cp;
     470          }
     471
     472          d->count++;
     473          if (d->count >= d_allocated)
     474            {
     475              char_directive *memory;
     476
     477              d_allocated = 2 * d_allocated;
     478              memory = realloc (d->dir, d_allocated * sizeof (char_directive));
     479              if (memory == NULL)
     480                /* Out of memory.  */
     481                goto error;
     482              d->dir = memory;
     483            }
     484        }
     485    }
     486  d->dir[d->count].dir_start = cp;
     487
     488  d->max_width_length = max_width_length;
     489  d->max_precision_length = max_precision_length;
     490  return 0;
     491
     492error:
     493  if (a->arg)
     494    free (a->arg);
     495  if (d->dir)
     496    free (d->dir);
     497  return -1;
     498}
  • navit/support/glib/gnulib/printf-args.c

     
     1/* Decomposed printf argument list.
     2   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifdef HAVE_CONFIG_H
     20# include <config.h>
     21#endif
     22
     23#include "g-gnulib.h"
     24
     25/* Specification.  */
     26#include "printf-args.h"
     27
     28#ifdef STATIC
     29STATIC
     30#endif
     31int
     32printf_fetchargs (va_list args, arguments *a)
     33{
     34  unsigned int i;
     35  argument *ap;
     36
     37  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
     38    switch (ap->type)
     39      {
     40      case TYPE_SCHAR:
     41        ap->a.a_schar = va_arg (args, /*signed char*/ int);
     42        break;
     43      case TYPE_UCHAR:
     44        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
     45        break;
     46      case TYPE_SHORT:
     47        ap->a.a_short = va_arg (args, /*short*/ int);
     48        break;
     49      case TYPE_USHORT:
     50        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
     51        break;
     52      case TYPE_INT:
     53        ap->a.a_int = va_arg (args, int);
     54        break;
     55      case TYPE_UINT:
     56        ap->a.a_uint = va_arg (args, unsigned int);
     57        break;
     58      case TYPE_LONGINT:
     59        ap->a.a_longint = va_arg (args, long int);
     60        break;
     61      case TYPE_ULONGINT:
     62        ap->a.a_ulongint = va_arg (args, unsigned long int);
     63        break;
     64#ifdef HAVE_LONG_LONG
     65      case TYPE_LONGLONGINT:
     66        ap->a.a_longlongint = va_arg (args, long long int);
     67        break;
     68      case TYPE_ULONGLONGINT:
     69        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
     70        break;
     71#endif
     72#ifdef HAVE_INT64_AND_I64
     73      case TYPE_INT64:
     74        ap->a.a_int64 = va_arg (args, __int64);
     75        break;
     76      case TYPE_UINT64:
     77        ap->a.a_uint64 = va_arg (args, unsigned __int64);
     78        break;
     79#endif
     80      case TYPE_DOUBLE:
     81        ap->a.a_double = va_arg (args, double);
     82        break;
     83#ifdef HAVE_LONG_DOUBLE
     84      case TYPE_LONGDOUBLE:
     85        ap->a.a_longdouble = va_arg (args, long double);
     86        break;
     87#endif
     88      case TYPE_CHAR:
     89        ap->a.a_char = va_arg (args, int);
     90        break;
     91#ifdef HAVE_WINT_T
     92      case TYPE_WIDE_CHAR:
     93#ifdef _WIN32
     94        ap->a.a_wide_char = va_arg (args, int);
     95#else
     96        ap->a.a_wide_char = va_arg (args, wint_t);
     97#endif
     98        break;
     99#endif
     100      case TYPE_STRING:
     101        ap->a.a_string = va_arg (args, const char *);
     102        break;
     103#ifdef HAVE_WCHAR_T
     104      case TYPE_WIDE_STRING:
     105        ap->a.a_wide_string = va_arg (args, const wchar_t *);
     106        break;
     107#endif
     108      case TYPE_POINTER:
     109        ap->a.a_pointer = va_arg (args, void *);
     110        break;
     111      case TYPE_COUNT_SCHAR_POINTER:
     112        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
     113        break;
     114      case TYPE_COUNT_SHORT_POINTER:
     115        ap->a.a_count_short_pointer = va_arg (args, short *);
     116        break;
     117      case TYPE_COUNT_INT_POINTER:
     118        ap->a.a_count_int_pointer = va_arg (args, int *);
     119        break;
     120      case TYPE_COUNT_LONGINT_POINTER:
     121        ap->a.a_count_longint_pointer = va_arg (args, long int *);
     122        break;
     123#ifdef HAVE_LONG_LONG
     124      case TYPE_COUNT_LONGLONGINT_POINTER:
     125        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
     126        break;
     127#endif
     128      default:
     129        /* Unknown type.  */
     130        return -1;
     131      }
     132  return 0;
     133}
  • navit/support/glib/gnulib/README

     
     1The files
     2 
     3 asnprintf.c
     4 printf-args.c
     5 printf-args.h
     6 printf-parse.c
     7 printf-parse.h
     8 vasnprintf.c
     9 vasnprintf.h
     10
     11are taken from the vasnprintf module of the GNUlib package, which can
     12be found at:
     13
     14 http://www.gnu.org/software/gnulib/
     15
     16All files have been modified to include g-gnulib.h.
     17
     18vasnprintf.c has also been modified to include support for long long
     19printing if the system printf doesn't. This code is protected by
     20#ifndef HAVE_LONG_LONG_FORMAT.
     21
     22Code has been added to printf-args.[ch], printf-parse.c and vasnprintf.c
     23to support printing of __int64 values with the I64 format modifier. This
     24is protected by #ifdef HAVE_INT64_AND_I64.
     25
     26The files
     27
     28 printf.h
     29 printf.c
     30 g-gnulib.h
     31
     32have been written by me. printf.[hc] contain implementations of the 
     33remaining functions in the printf family based on vasnprintf.
     34g-gnulib.h is included by all source files in order to move all
     35exported functions to the _g_gnulib namespace, replace malloc by
     36g_malloc and make sure that snprintf is only used if it implements
     37C99 return value semantics.
     38
     39Matthias Clasen
     40November 1, 2003
     41
     42
     43
     44
  • navit/support/glib/gnulib/makefile.msc

     
     1TOP = ..\..\..
     2!INCLUDE ..\..\build\win32\make.msc
     3
     4INCLUDES = -I ..\.. -I ..
     5DEFINES = -DHAVE_CONFIG_H -DHAVE_LONG_LONG_FORMAT
     6
     7OBJECTS = \
     8        asnprintf.obj \
     9        printf.obj \
     10        printf-args.obj \
     11        printf-parse.obj \
     12        vasnprintf.obj
     13
     14all : gnulib.lib
     15
     16gnulib.lib : $(OBJECTS)
     17        lib -out:gnulib.lib $(OBJECTS)
     18
  • navit/support/glib/gnulib/vasnprintf.h

     
     1/* vsprintf with automatic memory allocation.
     2   Copyright (C) 2002-2003 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifndef _VASNPRINTF_H
     20#define _VASNPRINTF_H
     21
     22/* Get va_list.  */
     23#include <stdarg.h>
     24
     25/* Get size_t.  */
     26#include <stddef.h>
     27
     28#ifndef __attribute__
     29/* This feature is available in gcc versions 2.5 and later.  */
     30# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
     31#  define __attribute__(Spec) /* empty */
     32# endif
     33/* The __-protected variants of `format' and `printf' attributes
     34   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
     35# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
     36#  define __format__ format
     37#  define __printf__ printf
     38# endif
     39#endif
     40
     41#ifdef  __cplusplus
     42extern "C" {
     43#endif
     44
     45/* Write formatted output to a string dynamically allocated with malloc().
     46   You can pass a preallocated buffer for the result in RESULTBUF and its
     47   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
     48   If successful, return the address of the string (this may be = RESULTBUF
     49   if no dynamic memory allocation was necessary) and set *LENGTHP to the
     50   number of resulting bytes, excluding the trailing NUL.  Upon error, set
     51   errno and return NULL.  */
     52extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
     53       __attribute__ ((__format__ (__printf__, 3, 4)));
     54extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
     55       __attribute__ ((__format__ (__printf__, 3, 0)));
     56
     57#ifdef  __cplusplus
     58}
     59#endif
     60
     61#endif /* _VASNPRINTF_H */
  • navit/support/glib/gnulib/printf-parse.h

     
     1/* Parse printf format string.
     2   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifndef _PRINTF_PARSE_H
     20#define _PRINTF_PARSE_H
     21
     22#include "printf-args.h"
     23
     24/* Private namespace for gnulib functions */
     25#define printf_parse _g_gnulib_printf_parse
     26
     27/* Flags */
     28#define FLAG_GROUP       1      /* ' flag */
     29#define FLAG_LEFT        2      /* - flag */
     30#define FLAG_SHOWSIGN    4      /* + flag */
     31#define FLAG_SPACE       8      /* space flag */
     32#define FLAG_ALT        16      /* # flag */
     33#define FLAG_ZERO       32
     34
     35/* A parsed directive.  */
     36typedef struct
     37{
     38  const char* dir_start;
     39  const char* dir_end;
     40  int flags;
     41  const char* width_start;
     42  const char* width_end;
     43  int width_arg_index;
     44  const char* precision_start;
     45  const char* precision_end;
     46  int precision_arg_index;
     47  char conversion; /* d i o u x X f e E g G c s p n U % but not C S */
     48  int arg_index;
     49}
     50char_directive;
     51
     52/* A parsed format string.  */
     53typedef struct
     54{
     55  unsigned int count;
     56  char_directive *dir;
     57  unsigned int max_width_length;
     58  unsigned int max_precision_length;
     59}
     60char_directives;
     61
     62
     63/* Parses the format string.  Fills in the number N of directives, and fills
     64   in directives[0], ..., directives[N-1], and sets directives[N].dir_start
     65   to the end of the format string.  Also fills in the arg_type fields of the
     66   arguments and the needed count of arguments.  */
     67#ifdef STATIC
     68STATIC
     69#else
     70extern
     71#endif
     72int printf_parse (const char *format, char_directives *d, arguments *a);
     73
     74#endif /* _PRINTF_PARSE_H */
  • navit/support/glib/gnulib/printf-args.h

     
     1/* Decomposed printf argument list.
     2   Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifndef _PRINTF_ARGS_H
     20#define _PRINTF_ARGS_H
     21
     22/* Get wchar_t.  */
     23#ifdef HAVE_WCHAR_T
     24# include <stddef.h>
     25#endif
     26
     27/* Get wint_t.  */
     28#ifdef HAVE_WINT_T
     29# include <wchar.h>
     30#endif
     31
     32/* Get va_list.  */
     33#include <stdarg.h>
     34
     35
     36/* Argument types */
     37typedef enum
     38{
     39  TYPE_NONE,
     40  TYPE_SCHAR,
     41  TYPE_UCHAR,
     42  TYPE_SHORT,
     43  TYPE_USHORT,
     44  TYPE_INT,
     45  TYPE_UINT,
     46  TYPE_LONGINT,
     47  TYPE_ULONGINT,
     48#ifdef HAVE_LONG_LONG
     49  TYPE_LONGLONGINT,
     50  TYPE_ULONGLONGINT,
     51#endif
     52#ifdef HAVE_INT64_AND_I64
     53  TYPE_INT64,
     54  TYPE_UINT64,
     55#endif
     56  TYPE_DOUBLE,
     57#ifdef HAVE_LONG_DOUBLE
     58  TYPE_LONGDOUBLE,
     59#endif
     60  TYPE_CHAR,
     61#ifdef HAVE_WINT_T
     62  TYPE_WIDE_CHAR,
     63#endif
     64  TYPE_STRING,
     65#ifdef HAVE_WCHAR_T
     66  TYPE_WIDE_STRING,
     67#endif
     68  TYPE_POINTER,
     69  TYPE_COUNT_SCHAR_POINTER,
     70  TYPE_COUNT_SHORT_POINTER,
     71  TYPE_COUNT_INT_POINTER,
     72  TYPE_COUNT_LONGINT_POINTER
     73#ifdef HAVE_LONG_LONG
     74, TYPE_COUNT_LONGLONGINT_POINTER
     75#endif
     76} arg_type;
     77
     78/* Polymorphic argument */
     79typedef struct
     80{
     81  arg_type type;
     82  union
     83  {
     84    signed char                 a_schar;
     85    unsigned char               a_uchar;
     86    short                       a_short;
     87    unsigned short              a_ushort;
     88    int                         a_int;
     89    unsigned int                a_uint;
     90    long int                    a_longint;
     91    unsigned long int           a_ulongint;
     92#ifdef HAVE_LONG_LONG
     93    long long int               a_longlongint;
     94    unsigned long long int      a_ulonglongint;
     95#endif
     96#ifdef HAVE_INT64_AND_I64
     97    __int64                     a_int64;
     98    unsigned __int64            a_uint64;
     99#endif
     100    float                       a_float;
     101    double                      a_double;
     102#ifdef HAVE_LONG_DOUBLE
     103    long double                 a_longdouble;
     104#endif
     105    int                         a_char;
     106#ifdef HAVE_WINT_T
     107    wint_t                      a_wide_char;
     108#endif
     109    const char*                 a_string;
     110#ifdef HAVE_WCHAR_T
     111    const wchar_t*              a_wide_string;
     112#endif
     113    void*                       a_pointer;
     114    signed char *               a_count_schar_pointer;
     115    short *                     a_count_short_pointer;
     116    int *                       a_count_int_pointer;
     117    long int *                  a_count_longint_pointer;
     118#ifdef HAVE_LONG_LONG
     119    long long int *             a_count_longlongint_pointer;
     120#endif
     121  }
     122  a;
     123}
     124argument;
     125
     126typedef struct
     127{
     128  unsigned int count;
     129  argument *arg;
     130}
     131arguments;
     132
     133
     134/* Fetch the arguments, putting them into a. */
     135#ifdef STATIC
     136STATIC
     137#else
     138extern
     139#endif
     140int printf_fetchargs (va_list args, arguments *a);
     141
     142#endif /* _PRINTF_ARGS_H */
  • navit/support/glib/gnulib/Makefile.in

     
     1# Makefile.in generated by automake 1.13.1 from Makefile.am.
     2# @configure_input@
     3
     4# Copyright (C) 1994-2012 Free Software Foundation, Inc.
     5
     6# This Makefile.in is free software; the Free Software Foundation
     7# gives unlimited permission to copy and/or distribute it,
     8# with or without modifications, as long as this notice is preserved.
     9
     10# This program is distributed in the hope that it will be useful,
     11# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
     12# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
     13# PARTICULAR PURPOSE.
     14
     15@SET_MAKE@
     16
     17# GLIB - Library of useful C routines
     18
     19VPATH = @srcdir@
     20am__make_dryrun = \
     21  { \
     22    am__dry=no; \
     23    case $$MAKEFLAGS in \
     24      *\\[\ \   ]*) \
     25        echo 'am--echo: ; @echo "AM"  OK' | $(MAKE) -f - 2>/dev/null \
     26          | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
     27      *) \
     28        for am__flg in $$MAKEFLAGS; do \
     29          case $$am__flg in \
     30            *=*|--*) ;; \
     31            *n*) am__dry=yes; break;; \
     32          esac; \
     33        done;; \
     34    esac; \
     35    test $$am__dry = yes; \
     36  }
     37pkgdatadir = $(datadir)/@PACKAGE@
     38pkgincludedir = $(includedir)/@PACKAGE@
     39pkglibdir = $(libdir)/@PACKAGE@
     40pkglibexecdir = $(libexecdir)/@PACKAGE@
     41am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
     42install_sh_DATA = $(install_sh) -c -m 644
     43install_sh_PROGRAM = $(install_sh) -c
     44install_sh_SCRIPT = $(install_sh) -c
     45INSTALL_HEADER = $(INSTALL_DATA)
     46transform = $(program_transform_name)
     47NORMAL_INSTALL = :
     48PRE_INSTALL = :
     49POST_INSTALL = :
     50NORMAL_UNINSTALL = :
     51PRE_UNINSTALL = :
     52POST_UNINSTALL = :
     53build_triplet = @build@
     54host_triplet = @host@
     55DIST_COMMON = $(top_srcdir)/Makefile.decl $(srcdir)/Makefile.in \
     56        $(srcdir)/Makefile.am $(top_srcdir)/depcomp README
     57subdir = glib/gnulib
     58ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
     59am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
     60        $(top_srcdir)/m4macros/gtk-doc.m4 \
     61        $(top_srcdir)/m4macros/libtool.m4 \
     62        $(top_srcdir)/m4macros/ltoptions.m4 \
     63        $(top_srcdir)/m4macros/ltsugar.m4 \
     64        $(top_srcdir)/m4macros/ltversion.m4 \
     65        $(top_srcdir)/m4macros/lt~obsolete.m4 \
     66        $(top_srcdir)/acinclude.m4 $(top_srcdir)/acglib.m4 \
     67        $(top_srcdir)/glib/libcharset/codeset.m4 \
     68        $(top_srcdir)/glib/libcharset/glibc21.m4 \
     69        $(top_srcdir)/m4macros/glib-gettext.m4 \
     70        $(top_srcdir)/configure.ac
     71am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
     72        $(ACLOCAL_M4)
     73mkinstalldirs = $(install_sh) -d
     74CONFIG_HEADER = $(top_builddir)/config.h
     75CONFIG_CLEAN_FILES =
     76CONFIG_CLEAN_VPATH_FILES =
     77LTLIBRARIES = $(noinst_LTLIBRARIES)
     78libgnulib_la_LIBADD =
     79am_libgnulib_la_OBJECTS = libgnulib_la-asnprintf.lo \
     80        libgnulib_la-printf-args.lo libgnulib_la-printf-parse.lo \
     81        libgnulib_la-vasnprintf.lo libgnulib_la-printf.lo
     82libgnulib_la_OBJECTS = $(am_libgnulib_la_OBJECTS)
     83AM_V_lt = $(am__v_lt_@AM_V@)
     84am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
     85am__v_lt_0 = --silent
     86am__v_lt_1 =
     87libgnulib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     88        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libgnulib_la_CFLAGS) \
     89        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
     90AM_V_P = $(am__v_P_@AM_V@)
     91am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
     92am__v_P_0 = false
     93am__v_P_1 = :
     94AM_V_GEN = $(am__v_GEN_@AM_V@)
     95am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
     96am__v_GEN_0 = @echo "  GEN     " $@;
     97am__v_GEN_1 =
     98AM_V_at = $(am__v_at_@AM_V@)
     99am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
     100am__v_at_0 = @
     101am__v_at_1 =
     102DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
     103depcomp = $(SHELL) $(top_srcdir)/depcomp
     104am__depfiles_maybe = depfiles
     105am__mv = mv -f
     106COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
     107        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
     108LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     109        $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
     110        $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
     111        $(AM_CFLAGS) $(CFLAGS)
     112AM_V_CC = $(am__v_CC_@AM_V@)
     113am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
     114am__v_CC_0 = @echo "  CC      " $@;
     115am__v_CC_1 =
     116CCLD = $(CC)
     117LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
     118        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
     119        $(AM_LDFLAGS) $(LDFLAGS) -o $@
     120AM_V_CCLD = $(am__v_CCLD_@AM_V@)
     121am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
     122am__v_CCLD_0 = @echo "  CCLD    " $@;
     123am__v_CCLD_1 =
     124SOURCES = $(libgnulib_la_SOURCES)
     125DIST_SOURCES = $(libgnulib_la_SOURCES)
     126am__can_run_installinfo = \
     127  case $$AM_UPDATE_INFO_DIR in \
     128    n|no|NO) false;; \
     129    *) (install-info --version) >/dev/null 2>&1;; \
     130  esac
     131am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
     132# Read a list of newline-separated strings from the standard input,
     133# and print each of them once, without duplicates.  Input order is
     134# *not* preserved.
     135am__uniquify_input = $(AWK) '\
     136  BEGIN { nonempty = 0; } \
     137  { items[$$0] = 1; nonempty = 1; } \
     138  END { if (nonempty) { for (i in items) print i; }; } \
     139'
     140# Make sure the list of sources is unique.  This is necessary because,
     141# e.g., the same source file might be shared among _SOURCES variables
     142# for different programs/libraries.
     143am__define_uniq_tagged_files = \
     144  list='$(am__tagged_files)'; \
     145  unique=`for i in $$list; do \
     146    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
     147  done | $(am__uniquify_input)`
     148ETAGS = etags
     149CTAGS = ctags
     150DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
     151ABS_GLIB_RUNTIME_LIBDIR = @ABS_GLIB_RUNTIME_LIBDIR@
     152ABS_TAPSET_DIR = @ABS_TAPSET_DIR@
     153ACLOCAL = @ACLOCAL@
     154ALLOCA = @ALLOCA@
     155AMTAR = @AMTAR@
     156AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
     157AR = @AR@
     158AS = @AS@
     159AUTOCONF = @AUTOCONF@
     160AUTOHEADER = @AUTOHEADER@
     161AUTOMAKE = @AUTOMAKE@
     162AWK = @AWK@
     163CATALOGS = @CATALOGS@
     164CATOBJEXT = @CATOBJEXT@
     165CC = @CC@
     166CCDEPMODE = @CCDEPMODE@
     167CFLAGS = @CFLAGS@
     168CONFIG_STATUS_DEPENDENCIES = @CONFIG_STATUS_DEPENDENCIES@
     169CPP = @CPP@
     170CPPFLAGS = @CPPFLAGS@
     171CXX = @CXX@
     172CXXCPP = @CXXCPP@
     173CXXDEPMODE = @CXXDEPMODE@
     174CXXFLAGS = @CXXFLAGS@
     175CYGPATH_W = @CYGPATH_W@
     176DATADIRNAME = @DATADIRNAME@
     177DBUS1_CFLAGS = @DBUS1_CFLAGS@
     178DBUS1_LIBS = @DBUS1_LIBS@
     179DBUS_DAEMON = @DBUS_DAEMON@
     180DEFS = @DEFS@
     181DEPDIR = @DEPDIR@
     182DLLTOOL = @DLLTOOL@
     183DSYMUTIL = @DSYMUTIL@
     184DTRACE = @DTRACE@
     185DUMPBIN = @DUMPBIN@
     186ECHO_C = @ECHO_C@
     187ECHO_N = @ECHO_N@
     188ECHO_T = @ECHO_T@
     189EGREP = @EGREP@
     190EXEEXT = @EXEEXT@
     191FAM_LIBS = @FAM_LIBS@
     192FGREP = @FGREP@
     193GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
     194GIO = @GIO@
     195GIO_MODULE_DIR = @GIO_MODULE_DIR@
     196GLIBC21 = @GLIBC21@
     197GLIB_BINARY_AGE = @GLIB_BINARY_AGE@
     198GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
     199GLIB_COMPILE_SCHEMAS = @GLIB_COMPILE_SCHEMAS@
     200GLIB_DEBUG_FLAGS = @GLIB_DEBUG_FLAGS@
     201GLIB_EXTRA_CFLAGS = @GLIB_EXTRA_CFLAGS@
     202GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
     203GLIB_HIDDEN_VISIBILITY_CFLAGS = @GLIB_HIDDEN_VISIBILITY_CFLAGS@
     204GLIB_INTERFACE_AGE = @GLIB_INTERFACE_AGE@
     205GLIB_LINK_FLAGS = @GLIB_LINK_FLAGS@
     206GLIB_MAJOR_VERSION = @GLIB_MAJOR_VERSION@
     207GLIB_MICRO_VERSION = @GLIB_MICRO_VERSION@
     208GLIB_MINOR_VERSION = @GLIB_MINOR_VERSION@
     209GLIB_RUNTIME_LIBDIR = @GLIB_RUNTIME_LIBDIR@
     210GLIB_VERSION = @GLIB_VERSION@
     211GLIB_WARN_CFLAGS = @GLIB_WARN_CFLAGS@
     212GLIB_WIN32_STATIC_COMPILATION_DEFINE = @GLIB_WIN32_STATIC_COMPILATION_DEFINE@
     213GMOFILES = @GMOFILES@
     214GMSGFMT = @GMSGFMT@
     215GREP = @GREP@
     216GSPAWN = @GSPAWN@
     217GTHREAD_COMPILE_IMPL_DEFINES = @GTHREAD_COMPILE_IMPL_DEFINES@
     218GTKDOC_CHECK = @GTKDOC_CHECK@
     219GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@
     220GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@
     221GTKDOC_MKPDF = @GTKDOC_MKPDF@
     222GTKDOC_REBASE = @GTKDOC_REBASE@
     223G_LIBS_EXTRA = @G_LIBS_EXTRA@
     224G_MODULE_BROKEN_RTLD_GLOBAL = @G_MODULE_BROKEN_RTLD_GLOBAL@
     225G_MODULE_HAVE_DLERROR = @G_MODULE_HAVE_DLERROR@
     226G_MODULE_IMPL = @G_MODULE_IMPL@
     227G_MODULE_LDFLAGS = @G_MODULE_LDFLAGS@
     228G_MODULE_LIBS = @G_MODULE_LIBS@
     229G_MODULE_LIBS_EXTRA = @G_MODULE_LIBS_EXTRA@
     230G_MODULE_NEED_USCORE = @G_MODULE_NEED_USCORE@
     231G_MODULE_PLUGIN_LIBS = @G_MODULE_PLUGIN_LIBS@
     232G_MODULE_SUPPORTED = @G_MODULE_SUPPORTED@
     233G_THREAD_CFLAGS = @G_THREAD_CFLAGS@
     234G_THREAD_LIBS = @G_THREAD_LIBS@
     235G_THREAD_LIBS_EXTRA = @G_THREAD_LIBS_EXTRA@
     236G_THREAD_LIBS_FOR_GTHREAD = @G_THREAD_LIBS_FOR_GTHREAD@
     237HTML_DIR = @HTML_DIR@
     238ICONV_LIBS = @ICONV_LIBS@
     239INDENT = @INDENT@
     240INSTALL = @INSTALL@
     241INSTALL_DATA = @INSTALL_DATA@
     242INSTALL_PROGRAM = @INSTALL_PROGRAM@
     243INSTALL_SCRIPT = @INSTALL_SCRIPT@
     244INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
     245INSTOBJEXT = @INSTOBJEXT@
     246INTLLIBS = @INTLLIBS@
     247LD = @LD@
     248LDFLAGS = @LDFLAGS@
     249LIBELF_CFLAGS = @LIBELF_CFLAGS@
     250LIBELF_LIBS = @LIBELF_LIBS@
     251LIBFFI_CFLAGS = @LIBFFI_CFLAGS@
     252LIBFFI_LIBS = @LIBFFI_LIBS@
     253LIBOBJS = @LIBOBJS@
     254LIBS = @LIBS@
     255LIBTOOL = @LIBTOOL@
     256LIB_EXE_MACHINE_FLAG = @LIB_EXE_MACHINE_FLAG@
     257LIPO = @LIPO@
     258LN_S = @LN_S@
     259LTLIBOBJS = @LTLIBOBJS@
     260LTP = @LTP@
     261LTP_GENHTML = @LTP_GENHTML@
     262LT_AGE = @LT_AGE@
     263LT_CURRENT = @LT_CURRENT@
     264LT_CURRENT_MINUS_AGE = @LT_CURRENT_MINUS_AGE@
     265LT_RELEASE = @LT_RELEASE@
     266LT_REVISION = @LT_REVISION@
     267MAINT = @MAINT@
     268MAKEINFO = @MAKEINFO@
     269MANIFEST_TOOL = @MANIFEST_TOOL@
     270MKDIR_P = @MKDIR_P@
     271MKINSTALLDIRS = @MKINSTALLDIRS@
     272MSGFMT = @MSGFMT@
     273MSGFMT_OPTS = @MSGFMT_OPTS@
     274NAMESER_COMPAT_INCLUDE = @NAMESER_COMPAT_INCLUDE@
     275NETWORK_LIBS = @NETWORK_LIBS@
     276NM = @NM@
     277NMEDIT = @NMEDIT@
     278OBJDUMP = @OBJDUMP@
     279OBJEXT = @OBJEXT@
     280OTOOL = @OTOOL@
     281OTOOL64 = @OTOOL64@
     282PACKAGE = @PACKAGE@
     283PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
     284PACKAGE_NAME = @PACKAGE_NAME@
     285PACKAGE_STRING = @PACKAGE_STRING@
     286PACKAGE_TARNAME = @PACKAGE_TARNAME@
     287PACKAGE_URL = @PACKAGE_URL@
     288PACKAGE_VERSION = @PACKAGE_VERSION@
     289PATH_SEPARATOR = @PATH_SEPARATOR@
     290PCRE_CFLAGS = @PCRE_CFLAGS@
     291PCRE_LIBS = @PCRE_LIBS@
     292PCRE_REQUIRES = @PCRE_REQUIRES@
     293PCRE_WARN_CFLAGS = @PCRE_WARN_CFLAGS@
     294PERL = @PERL@
     295PERL_PATH = @PERL_PATH@
     296PKG_CONFIG = @PKG_CONFIG@
     297PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
     298PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
     299PLATFORMDEP = @PLATFORMDEP@
     300POFILES = @POFILES@
     301POSUB = @POSUB@
     302PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
     303PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
     304PYTHON = @PYTHON@
     305PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
     306PYTHON_PLATFORM = @PYTHON_PLATFORM@
     307PYTHON_PREFIX = @PYTHON_PREFIX@
     308PYTHON_VERSION = @PYTHON_VERSION@
     309RANLIB = @RANLIB@
     310REBUILD = @REBUILD@
     311SED = @SED@
     312SELINUX_LIBS = @SELINUX_LIBS@
     313SET_MAKE = @SET_MAKE@
     314SHELL = @SHELL@
     315SHTOOL = @SHTOOL@
     316STRIP = @STRIP@
     317USE_NLS = @USE_NLS@
     318VERSION = @VERSION@
     319WINDRES = @WINDRES@
     320WSPIAPI_INCLUDE = @WSPIAPI_INCLUDE@
     321XATTR_LIBS = @XATTR_LIBS@
     322XGETTEXT = @XGETTEXT@
     323XMLCATALOG = @XMLCATALOG@
     324XML_CATALOG_FILE = @XML_CATALOG_FILE@
     325XSLTPROC = @XSLTPROC@
     326ZLIB_CFLAGS = @ZLIB_CFLAGS@
     327ZLIB_LIBS = @ZLIB_LIBS@
     328abs_builddir = @abs_builddir@
     329abs_srcdir = @abs_srcdir@
     330abs_top_builddir = @abs_top_builddir@
     331abs_top_srcdir = @abs_top_srcdir@
     332ac_ct_AR = @ac_ct_AR@
     333ac_ct_CC = @ac_ct_CC@
     334ac_ct_CXX = @ac_ct_CXX@
     335ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
     336am__include = @am__include@
     337am__leading_dot = @am__leading_dot@
     338am__quote = @am__quote@
     339am__tar = @am__tar@
     340am__untar = @am__untar@
     341bindir = @bindir@
     342build = @build@
     343build_alias = @build_alias@
     344build_cpu = @build_cpu@
     345build_os = @build_os@
     346build_vendor = @build_vendor@
     347builddir = @builddir@
     348config_h_INCLUDES = @config_h_INCLUDES@
     349datadir = @datadir@
     350datarootdir = @datarootdir@
     351docdir = @docdir@
     352dvidir = @dvidir@
     353exec_prefix = @exec_prefix@
     354gio_INCLUDES = @gio_INCLUDES@
     355glib_INCLUDES = @glib_INCLUDES@
     356gmodule_INCLUDES = @gmodule_INCLUDES@
     357gobject_INCLUDES = @gobject_INCLUDES@
     358host = @host@
     359host_alias = @host_alias@
     360host_cpu = @host_cpu@
     361host_os = @host_os@
     362host_vendor = @host_vendor@
     363htmldir = @htmldir@
     364includedir = @includedir@
     365infodir = @infodir@
     366install_sh = @install_sh@
     367libdir = @libdir@
     368libexecdir = @libexecdir@
     369localedir = @localedir@
     370localstatedir = @localstatedir@
     371mandir = @mandir@
     372mkdir_p = @mkdir_p@
     373ms_librarian = @ms_librarian@
     374oldincludedir = @oldincludedir@
     375pdfdir = @pdfdir@
     376pkgpyexecdir = @pkgpyexecdir@
     377pkgpythondir = @pkgpythondir@
     378prefix = @prefix@
     379program_transform_name = @program_transform_name@
     380psdir = @psdir@
     381pyexecdir = @pyexecdir@
     382pythondir = @pythondir@
     383sbindir = @sbindir@
     384sharedstatedir = @sharedstatedir@
     385srcdir = @srcdir@
     386sysconfdir = @sysconfdir@
     387target_alias = @target_alias@
     388top_build_prefix = @top_build_prefix@
     389top_builddir = @top_builddir@
     390top_srcdir = @top_srcdir@
     391
     392#GTESTER = gtester                      # for non-GLIB packages
     393GTESTER = $(top_builddir)/glib/gtester                  # for the GLIB package
     394GTESTER_REPORT = $(top_builddir)/glib/gtester-report    # for the GLIB package
     395
     396# initialize variables for unconditional += appending
     397EXTRA_DIST = makefile.msc
     398TEST_PROGS =
     399AM_CPPFLAGS = \
     400        $(glib_INCLUDES)                \
     401        -DG_LOG_DOMAIN=\"GLib\"         \
     402        $(GLIB_DEBUG_FLAGS)             \
     403        -DG_DISABLE_DEPRECATED          \
     404        -DGLIB_COMPILATION
     405
     406noinst_LTLIBRARIES = libgnulib.la
     407libgnulib_la_CFLAGS = $(GLIB_HIDDEN_VISIBILITY_CFLAGS)
     408libgnulib_la_SOURCES = \
     409        asnprintf.c \
     410        printf-args.c \
     411        printf-args.h \
     412        printf-parse.c \
     413        printf-parse.h \
     414        vasnprintf.c \
     415        vasnprintf.h \
     416        printf.c \
     417        printf.h \
     418        g-gnulib.h
     419
     420all: all-am
     421
     422.SUFFIXES:
     423.SUFFIXES: .c .lo .o .obj
     424$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/Makefile.decl $(am__configure_deps)
     425        @for dep in $?; do \
     426          case '$(am__configure_deps)' in \
     427            *$$dep*) \
     428              ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
     429                && { if test -f $@; then exit 0; else break; fi; }; \
     430              exit 1;; \
     431          esac; \
     432        done; \
     433        echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu glib/gnulib/Makefile'; \
     434        $(am__cd) $(top_srcdir) && \
     435          $(AUTOMAKE) --gnu glib/gnulib/Makefile
     436.PRECIOUS: Makefile
     437Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
     438        @case '$?' in \
     439          *config.status*) \
     440            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
     441          *) \
     442            echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
     443            cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
     444        esac;
     445$(top_srcdir)/Makefile.decl:
     446
     447$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
     448        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
     449
     450$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
     451        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
     452$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
     453        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
     454$(am__aclocal_m4_deps):
     455
     456clean-noinstLTLIBRARIES:
     457        -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
     458        @list='$(noinst_LTLIBRARIES)'; \
     459        locs=`for p in $$list; do echo $$p; done | \
     460              sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
     461              sort -u`; \
     462        test -z "$$locs" || { \
     463          echo rm -f $${locs}; \
     464          rm -f $${locs}; \
     465        }
     466libgnulib.la: $(libgnulib_la_OBJECTS) $(libgnulib_la_DEPENDENCIES) $(EXTRA_libgnulib_la_DEPENDENCIES)
     467        $(AM_V_CCLD)$(libgnulib_la_LINK)  $(libgnulib_la_OBJECTS) $(libgnulib_la_LIBADD) $(LIBS)
     468
     469mostlyclean-compile:
     470        -rm -f *.$(OBJEXT)
     471
     472distclean-compile:
     473        -rm -f *.tab.c
     474
     475@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-asnprintf.Plo@am__quote@
     476@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-args.Plo@am__quote@
     477@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf-parse.Plo@am__quote@
     478@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-printf.Plo@am__quote@
     479@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgnulib_la-vasnprintf.Plo@am__quote@
     480
     481.c.o:
     482@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     483@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     484@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     485@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     486@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
     487
     488.c.obj:
     489@am__fastdepCC_TRUE@    $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
     490@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
     491@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
     492@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     493@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
     494
     495.c.lo:
     496@am__fastdepCC_TRUE@    $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
     497@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
     498@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
     499@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     500@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
     501
     502libgnulib_la-asnprintf.lo: asnprintf.c
     503@am__fastdepCC_TRUE@    $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-asnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-asnprintf.Tpo -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c
     504@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-asnprintf.Tpo $(DEPDIR)/libgnulib_la-asnprintf.Plo
     505@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='asnprintf.c' object='libgnulib_la-asnprintf.lo' libtool=yes @AMDEPBACKSLASH@
     506@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     507@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-asnprintf.lo `test -f 'asnprintf.c' || echo '$(srcdir)/'`asnprintf.c
     508
     509libgnulib_la-printf-args.lo: printf-args.c
     510@am__fastdepCC_TRUE@    $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-args.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-args.Tpo -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c
     511@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-args.Tpo $(DEPDIR)/libgnulib_la-printf-args.Plo
     512@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='printf-args.c' object='libgnulib_la-printf-args.lo' libtool=yes @AMDEPBACKSLASH@
     513@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     514@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-args.lo `test -f 'printf-args.c' || echo '$(srcdir)/'`printf-args.c
     515
     516libgnulib_la-printf-parse.lo: printf-parse.c
     517@am__fastdepCC_TRUE@    $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf-parse.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf-parse.Tpo -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c
     518@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf-parse.Tpo $(DEPDIR)/libgnulib_la-printf-parse.Plo
     519@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='printf-parse.c' object='libgnulib_la-printf-parse.lo' libtool=yes @AMDEPBACKSLASH@
     520@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     521@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf-parse.lo `test -f 'printf-parse.c' || echo '$(srcdir)/'`printf-parse.c
     522
     523libgnulib_la-vasnprintf.lo: vasnprintf.c
     524@am__fastdepCC_TRUE@    $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-vasnprintf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-vasnprintf.Tpo -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c
     525@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-vasnprintf.Tpo $(DEPDIR)/libgnulib_la-vasnprintf.Plo
     526@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='vasnprintf.c' object='libgnulib_la-vasnprintf.lo' libtool=yes @AMDEPBACKSLASH@
     527@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     528@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-vasnprintf.lo `test -f 'vasnprintf.c' || echo '$(srcdir)/'`vasnprintf.c
     529
     530libgnulib_la-printf.lo: printf.c
     531@am__fastdepCC_TRUE@    $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -MT libgnulib_la-printf.lo -MD -MP -MF $(DEPDIR)/libgnulib_la-printf.Tpo -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c
     532@am__fastdepCC_TRUE@    $(AM_V_at)$(am__mv) $(DEPDIR)/libgnulib_la-printf.Tpo $(DEPDIR)/libgnulib_la-printf.Plo
     533@AMDEP_TRUE@@am__fastdepCC_FALSE@       $(AM_V_CC)source='printf.c' object='libgnulib_la-printf.lo' libtool=yes @AMDEPBACKSLASH@
     534@AMDEP_TRUE@@am__fastdepCC_FALSE@       DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
     535@am__fastdepCC_FALSE@   $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgnulib_la_CFLAGS) $(CFLAGS) -c -o libgnulib_la-printf.lo `test -f 'printf.c' || echo '$(srcdir)/'`printf.c
     536
     537mostlyclean-libtool:
     538        -rm -f *.lo
     539
     540clean-libtool:
     541        -rm -rf .libs _libs
     542
     543ID: $(am__tagged_files)
     544        $(am__define_uniq_tagged_files); mkid -fID $$unique
     545tags: tags-am
     546TAGS: tags
     547
     548tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     549        set x; \
     550        here=`pwd`; \
     551        $(am__define_uniq_tagged_files); \
     552        shift; \
     553        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
     554          test -n "$$unique" || unique=$$empty_fix; \
     555          if test $$# -gt 0; then \
     556            $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
     557              "$$@" $$unique; \
     558          else \
     559            $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
     560              $$unique; \
     561          fi; \
     562        fi
     563ctags: ctags-am
     564
     565CTAGS: ctags
     566ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
     567        $(am__define_uniq_tagged_files); \
     568        test -z "$(CTAGS_ARGS)$$unique" \
     569          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
     570             $$unique
     571
     572GTAGS:
     573        here=`$(am__cd) $(top_builddir) && pwd` \
     574          && $(am__cd) $(top_srcdir) \
     575          && gtags -i $(GTAGS_ARGS) "$$here"
     576cscopelist: cscopelist-am
     577
     578cscopelist-am: $(am__tagged_files)
     579        list='$(am__tagged_files)'; \
     580        case "$(srcdir)" in \
     581          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
     582          *) sdir=$(subdir)/$(srcdir) ;; \
     583        esac; \
     584        for i in $$list; do \
     585          if test -f "$$i"; then \
     586            echo "$(subdir)/$$i"; \
     587          else \
     588            echo "$$sdir/$$i"; \
     589          fi; \
     590        done >> $(top_builddir)/cscope.files
     591
     592distclean-tags:
     593        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
     594
     595distdir: $(DISTFILES)
     596        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
     597        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
     598        list='$(DISTFILES)'; \
     599          dist_files=`for file in $$list; do echo $$file; done | \
     600          sed -e "s|^$$srcdirstrip/||;t" \
     601              -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
     602        case $$dist_files in \
     603          */*) $(MKDIR_P) `echo "$$dist_files" | \
     604                           sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
     605                           sort -u` ;; \
     606        esac; \
     607        for file in $$dist_files; do \
     608          if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
     609          if test -d $$d/$$file; then \
     610            dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
     611            if test -d "$(distdir)/$$file"; then \
     612              find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
     613            fi; \
     614            if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
     615              cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
     616              find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
     617            fi; \
     618            cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
     619          else \
     620            test -f "$(distdir)/$$file" \
     621            || cp -p $$d/$$file "$(distdir)/$$file" \
     622            || exit 1; \
     623          fi; \
     624        done
     625check-am: all-am
     626        $(MAKE) $(AM_MAKEFLAGS) check-local
     627check: check-am
     628all-am: Makefile $(LTLIBRARIES)
     629installdirs:
     630install: install-am
     631install-exec: install-exec-am
     632install-data: install-data-am
     633uninstall: uninstall-am
     634
     635install-am: all-am
     636        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
     637
     638installcheck: installcheck-am
     639install-strip:
     640        if test -z '$(STRIP)'; then \
     641          $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
     642            install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
     643              install; \
     644        else \
     645          $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
     646            install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
     647            "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
     648        fi
     649mostlyclean-generic:
     650
     651clean-generic:
     652
     653distclean-generic:
     654        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
     655        -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
     656
     657maintainer-clean-generic:
     658        @echo "This command is intended for maintainers to use"
     659        @echo "it deletes files that may require special tools to rebuild."
     660clean: clean-am
     661
     662clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
     663        mostlyclean-am
     664
     665distclean: distclean-am
     666        -rm -rf ./$(DEPDIR)
     667        -rm -f Makefile
     668distclean-am: clean-am distclean-compile distclean-generic \
     669        distclean-tags
     670
     671dvi: dvi-am
     672
     673dvi-am:
     674
     675html: html-am
     676
     677html-am:
     678
     679info: info-am
     680
     681info-am:
     682
     683install-data-am:
     684
     685install-dvi: install-dvi-am
     686
     687install-dvi-am:
     688
     689install-exec-am:
     690
     691install-html: install-html-am
     692
     693install-html-am:
     694
     695install-info: install-info-am
     696
     697install-info-am:
     698
     699install-man:
     700
     701install-pdf: install-pdf-am
     702
     703install-pdf-am:
     704
     705install-ps: install-ps-am
     706
     707install-ps-am:
     708
     709installcheck-am:
     710
     711maintainer-clean: maintainer-clean-am
     712        -rm -rf ./$(DEPDIR)
     713        -rm -f Makefile
     714maintainer-clean-am: distclean-am maintainer-clean-generic
     715
     716mostlyclean: mostlyclean-am
     717
     718mostlyclean-am: mostlyclean-compile mostlyclean-generic \
     719        mostlyclean-libtool
     720
     721pdf: pdf-am
     722
     723pdf-am:
     724
     725ps: ps-am
     726
     727ps-am:
     728
     729uninstall-am:
     730
     731.MAKE: check-am install-am install-strip
     732
     733.PHONY: CTAGS GTAGS TAGS all all-am check check-am check-local clean \
     734        clean-generic clean-libtool clean-noinstLTLIBRARIES \
     735        cscopelist-am ctags ctags-am distclean distclean-compile \
     736        distclean-generic distclean-libtool distclean-tags distdir dvi \
     737        dvi-am html html-am info info-am install install-am \
     738        install-data install-data-am install-dvi install-dvi-am \
     739        install-exec install-exec-am install-html install-html-am \
     740        install-info install-info-am install-man install-pdf \
     741        install-pdf-am install-ps install-ps-am install-strip \
     742        installcheck installcheck-am installdirs maintainer-clean \
     743        maintainer-clean-generic mostlyclean mostlyclean-compile \
     744        mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
     745        tags tags-am uninstall uninstall-am
     746
     747
     748### testing rules
     749
     750# test: run all tests in cwd and subdirs
     751test: test-nonrecursive
     752@OS_UNIX_TRUE@  @ for subdir in $(SUBDIRS) . ; do \
     753@OS_UNIX_TRUE@      test "$$subdir" = "." -o "$$subdir" = "po" || \
     754@OS_UNIX_TRUE@      ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
     755@OS_UNIX_TRUE@    done
     756
     757# test-nonrecursive: run tests only in cwd
     758@OS_UNIX_TRUE@test-nonrecursive: ${TEST_PROGS}
     759@OS_UNIX_TRUE@  @test -z "${TEST_PROGS}" || G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
     760@OS_UNIX_FALSE@test-nonrecursive:
     761
     762# test-report: run tests in subdirs and generate report
     763# perf-report: run tests in subdirs with -m perf and generate report
     764# full-report: like test-report: with -m perf and -m slow
     765test-report perf-report full-report:    ${TEST_PROGS}
     766        @test -z "${TEST_PROGS}" || { \
     767          case $@ in \
     768          test-report) test_options="-k";; \
     769          perf-report) test_options="-k -m=perf";; \
     770          full-report) test_options="-k -m=perf -m=slow";; \
     771          esac ; \
     772          if test -z "$$GTESTER_LOGDIR" ; then  \
     773            ${GTESTER} --verbose $$test_options -o test-report.xml ${TEST_PROGS} ; \
     774          elif test -n "${TEST_PROGS}" ; then \
     775            ${GTESTER} --verbose $$test_options -o `mktemp "$$GTESTER_LOGDIR/log-XXXXXX"` ${TEST_PROGS} ; \
     776          fi ; \
     777        }
     778        @ ignore_logdir=true ; \
     779          if test -z "$$GTESTER_LOGDIR" ; then \
     780            GTESTER_LOGDIR=`mktemp -d "\`pwd\`/.testlogs-XXXXXX"`; export GTESTER_LOGDIR ; \
     781            ignore_logdir=false ; \
     782          fi ; \
     783          if test -d "$(top_srcdir)/.git" ; then \
     784            REVISION=`git describe` ; \
     785          else \
     786            REVISION=$(VERSION) ; \
     787          fi ; \
     788          for subdir in $(SUBDIRS) . ; do \
     789            test "$$subdir" = "." -o "$$subdir" = "po" || \
     790            ( cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $? ; \
     791          done ; \
     792          $$ignore_logdir || { \
     793            echo '<?xml version="1.0"?>'              > $@.xml ; \
     794            echo '<report-collection>'               >> $@.xml ; \
     795            echo '<info>'                            >> $@.xml ; \
     796            echo '  <package>$(PACKAGE)</package>'   >> $@.xml ; \
     797            echo '  <version>$(VERSION)</version>'   >> $@.xml ; \
     798            echo "  <revision>$$REVISION</revision>" >> $@.xml ; \
     799            echo '</info>'                           >> $@.xml ; \
     800            for lf in `ls -L "$$GTESTER_LOGDIR"/.` ; do \
     801              sed '1,1s/^<?xml\b[^>?]*?>//' <"$$GTESTER_LOGDIR"/"$$lf" >> $@.xml ; \
     802            done ; \
     803            echo >> $@.xml ; \
     804            echo '</report-collection>' >> $@.xml ; \
     805            rm -rf "$$GTESTER_LOGDIR"/ ; \
     806            ${GTESTER_REPORT} --version 2>/dev/null 1>&2 ; test "$$?" != 0 || ${GTESTER_REPORT} $@.xml >$@.html ; \
     807          }
     808.PHONY: test test-report perf-report full-report test-nonrecursive
     809
     810.PHONY: lcov genlcov lcov-clean
     811# use recursive makes in order to ignore errors during check
     812lcov:
     813        -$(MAKE) $(AM_MAKEFLAGS) -k check
     814        $(MAKE) $(AM_MAKEFLAGS) genlcov
     815
     816# we have to massage the lcov.info file slightly to hide the effect of libtool
     817# placing the objects files in the .libs/ directory separate from the *.c
     818# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
     819genlcov:
     820        rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda
     821        $(LTP) --directory $(top_builddir) --capture --output-file glib-lcov.info --test-name GLIB_PERF --no-checksum --compat-libtool
     822        LANG=C $(LTP_GENHTML) --prefix $(top_builddir) --output-directory glib-lcov --title "GLib Code Coverage" --legend --show-details glib-lcov.info
     823        @echo "file://$(abs_top_builddir)/glib-lcov/index.html"
     824
     825lcov-clean:
     826        -$(LTP) --directory $(top_builddir) -z
     827        -rm -rf glib-lcov.info glib-lcov
     828        -find -name '*.gcda' -print | xargs rm
     829
     830# run tests in cwd as part of make check
     831check-local: test-nonrecursive
     832
     833# Tell versions [3.59,3.63) of GNU make to not export all variables.
     834# Otherwise a system limit (for SysV at least) may be exceeded.
     835.NOEXPORT:
  • navit/support/glib/gnulib/printf.c

     
     1/* GLIB - Library of useful routines for C programming
     2 * Copyright (C) 2003 Matthias Clasen
     3 *
     4 * This library is free software; you can redistribute it and/or
     5 * modify it under the terms of the GNU Lesser General Public
     6 * License as published by the Free Software Foundation; either
     7 * version 2 of the License, or (at your option) any later version.
     8 *
     9 * This library is distributed in the hope that it will be useful,
     10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12 * Lesser General Public License for more details.
     13 *
     14 * You should have received a copy of the GNU Lesser General Public
     15 * License along with this library; if not, write to the
     16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     17 * Boston, MA 02111-1307, USA.
     18 */
     19
     20/*
     21 * Modified by the GLib Team and others 2003.  See the AUTHORS
     22 * file for a list of people on the GLib Team.  See the ChangeLog
     23 * files for a list of changes.  These files are distributed with
     24 * GLib at ftp://ftp.gtk.org/pub/gtk/.
     25 */
     26
     27#ifdef HAVE_CONFIG_H
     28# include <config.h>
     29#endif
     30#include <string.h>
     31#include <stdlib.h>
     32#include <stdio.h>
     33#include "g-gnulib.h"
     34#include "vasnprintf.h"
     35#include "printf.h"
     36
     37int _g_gnulib_printf (char const *format, ...)
     38{
     39  va_list args;
     40  int retval;
     41
     42  va_start (args, format);
     43  retval = _g_gnulib_vprintf (format, args);
     44  va_end (args);
     45
     46  return retval;
     47}
     48
     49int _g_gnulib_fprintf (FILE *file, char const *format, ...)
     50{
     51  va_list args;
     52  int retval;
     53
     54  va_start (args, format);
     55  retval = _g_gnulib_vfprintf (file, format, args);
     56  va_end (args);
     57 
     58  return retval;
     59}
     60
     61int _g_gnulib_sprintf (char *string, char const *format, ...)
     62{
     63  va_list args;
     64  int retval;
     65
     66  va_start (args, format);
     67  retval = _g_gnulib_vsprintf (string, format, args);
     68  va_end (args);
     69 
     70  return retval;
     71}
     72
     73int _g_gnulib_snprintf (char *string, size_t n, char const *format, ...)
     74{
     75  va_list args;
     76  int retval;
     77
     78  va_start (args, format);
     79  retval = _g_gnulib_vsnprintf (string, n, format, args);
     80  va_end (args);
     81 
     82  return retval;
     83}
     84
     85int _g_gnulib_vprintf (char const *format, va_list args)         
     86{
     87  return _g_gnulib_vfprintf (stdout, format, args);
     88}
     89
     90int _g_gnulib_vfprintf (FILE *file, char const *format, va_list args)
     91{
     92  char *result;
     93  size_t length;
     94
     95  result = vasnprintf (NULL, &length, format, args);
     96  if (result == NULL)
     97    return -1;
     98
     99  fwrite (result, 1, length, file);
     100  free (result);
     101 
     102  return length;
     103}
     104
     105int _g_gnulib_vsprintf (char *string, char const *format, va_list args)
     106{
     107  char *result;
     108  size_t length;
     109
     110  result = vasnprintf (NULL, &length, format, args);
     111  if (result == NULL)
     112    return -1;
     113
     114  memcpy (string, result, length + 1);
     115  free (result);
     116 
     117  return length; 
     118}
     119
     120int _g_gnulib_vsnprintf (char *string, size_t n, char const *format, va_list args)
     121{
     122  char *result;
     123  size_t length;
     124
     125  result = vasnprintf (NULL, &length, format, args);
     126  if (result == NULL)
     127    return -1;
     128
     129  if (n > 0)
     130    {
     131      memcpy (string, result, MIN(length + 1, n));
     132      string[n - 1] = 0;
     133    }
     134
     135  free (result);
     136 
     137  return length; 
     138}
     139
     140int _g_gnulib_vasprintf (char **result, char const *format, va_list args)
     141{
     142  size_t length;
     143
     144  *result = vasnprintf (NULL, &length, format, args);
     145  if (*result == NULL)
     146    return -1;
     147 
     148  return length; 
     149}
     150
     151
     152
     153
     154
  • navit/support/glib/gnulib/asnprintf.c

     
     1/* Formatted output to strings.
     2   Copyright (C) 1999, 2002 Free Software Foundation, Inc.
     3
     4   This program is free software; you can redistribute it and/or modify it
     5   under the terms of the GNU Library General Public License as published
     6   by the Free Software Foundation; either version 2, or (at your option)
     7   any later version.
     8
     9   This program is distributed in the hope that it will be useful,
     10   but WITHOUT ANY WARRANTY; without even the implied warranty of
     11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12   Library General Public License for more details.
     13
     14   You should have received a copy of the GNU Library General Public
     15   License along with this program; if not, write to the Free Software
     16   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
     17   USA.  */
     18
     19#ifdef HAVE_CONFIG_H
     20# include <config.h>
     21#endif
     22
     23#include "g-gnulib.h"
     24
     25/* Specification.  */
     26#include "vasnprintf.h"
     27
     28#include <stdarg.h>
     29
     30char *
     31asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
     32{
     33  va_list args;
     34  char *result;
     35
     36  va_start (args, format);
     37  result = vasnprintf (resultbuf, lengthp, format, args);
     38  va_end (args);
     39  return result;
     40}
  • navit/support/glib/gnulib/printf.h

     
     1/* GLIB - Library of useful routines for C programming
     2 * Copyright (C) 2003  Matthias Clasen
     3 *
     4 * This library is free software; you can redistribute it and/or
     5 * modify it under the terms of the GNU Lesser General Public
     6 * License as published by the Free Software Foundation; either
     7 * version 2 of the License, or (at your option) any later version.
     8 *
     9 * This library is distributed in the hope that it will be useful,
     10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12 * Lesser General Public License for more details.
     13 *
     14 * You should have received a copy of the GNU Lesser General Public
     15 * License along with this library; if not, write to the
     16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
     17 * Boston, MA 02111-1307, USA.
     18 */
     19#ifndef __GNULIB_PRINTF_H__
     20#define __GNULIB_PRINTF_H__
     21
     22#include <stdarg.h>
     23#include <stdio.h>
     24
     25int _g_gnulib_printf    (char const *format,
     26                         ...);
     27int _g_gnulib_fprintf   (FILE        *file,
     28                         char const *format,
     29                         ...);
     30int _g_gnulib_sprintf   (char       *string,
     31                         char const *format,
     32                         ...);
     33int _g_gnulib_snprintf  (char       *string,
     34                         size_t       n,
     35                         char const *format,
     36                         ...);
     37int _g_gnulib_vprintf   (char const *format,
     38                         va_list      args);           
     39int _g_gnulib_vfprintf  (FILE        *file,
     40                         char const *format,
     41                         va_list      args);
     42int _g_gnulib_vsprintf  (char       *string,
     43                         char const *format,
     44                         va_list      args);
     45int _g_gnulib_vsnprintf (char       *string,
     46                         size_t       n,
     47                         char const *format,
     48                         va_list      args);
     49int _g_gnulib_vasprintf (char       **result,
     50                         char const *format,
     51                         va_list      args);
     52
     53
     54#endif /* __GNULIB_PRINTF_H__ */
     55
     56
     57
  • navit/support/glib/glibconfig.h

     
    244244
    245245#define G_MODULE_SUFFIX "dll"
    246246
    247 #define HAVE_GOOD_PRINTF
     247#ifndef HAVE_API_WIN32_CE
     248  #define HAVE_GOOD_PRINTF
     249#endif
     250#define HAVE_ALLOCA
    248251#define NO_SYS_SIGLIST_DECL
    249252#define GLIB_STATIC_COMPILATION
    250253#define G_DISABLE_CHECKS