~ubuntu-branches/ubuntu/oneiric/texinfo/oneiric

« back to all changes in this revision

Viewing changes to intl/printf-args.c

  • Committer: Bazaar Package Importer
  • Author(s): Norbert Preining
  • Date: 2008-02-20 08:24:18 UTC
  • mfrom: (3.1.4 hardy)
  • Revision ID: james.westby@ubuntu.com-20080220082418-v0mwknqadr1gzkzm
Tags: 4.11.dfsg.1-4
fix bashism in texi2dvi (Closes: #461352)

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
 
/* Specification.  */
24
 
#include "printf-args.h"
25
 
 
26
 
#ifdef STATIC
27
 
STATIC
28
 
#endif
29
 
int
30
 
printf_fetchargs (va_list args, arguments *a)
31
 
{
32
 
  size_t i;
33
 
  argument *ap;
34
 
 
35
 
  for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++)
36
 
    switch (ap->type)
37
 
      {
38
 
      case TYPE_SCHAR:
39
 
        ap->a.a_schar = va_arg (args, /*signed char*/ int);
40
 
        break;
41
 
      case TYPE_UCHAR:
42
 
        ap->a.a_uchar = va_arg (args, /*unsigned char*/ int);
43
 
        break;
44
 
      case TYPE_SHORT:
45
 
        ap->a.a_short = va_arg (args, /*short*/ int);
46
 
        break;
47
 
      case TYPE_USHORT:
48
 
        ap->a.a_ushort = va_arg (args, /*unsigned short*/ int);
49
 
        break;
50
 
      case TYPE_INT:
51
 
        ap->a.a_int = va_arg (args, int);
52
 
        break;
53
 
      case TYPE_UINT:
54
 
        ap->a.a_uint = va_arg (args, unsigned int);
55
 
        break;
56
 
      case TYPE_LONGINT:
57
 
        ap->a.a_longint = va_arg (args, long int);
58
 
        break;
59
 
      case TYPE_ULONGINT:
60
 
        ap->a.a_ulongint = va_arg (args, unsigned long int);
61
 
        break;
62
 
#ifdef HAVE_LONG_LONG
63
 
      case TYPE_LONGLONGINT:
64
 
        ap->a.a_longlongint = va_arg (args, long long int);
65
 
        break;
66
 
      case TYPE_ULONGLONGINT:
67
 
        ap->a.a_ulonglongint = va_arg (args, unsigned long long int);
68
 
        break;
69
 
#endif
70
 
      case TYPE_DOUBLE:
71
 
        ap->a.a_double = va_arg (args, double);
72
 
        break;
73
 
#ifdef HAVE_LONG_DOUBLE
74
 
      case TYPE_LONGDOUBLE:
75
 
        ap->a.a_longdouble = va_arg (args, long double);
76
 
        break;
77
 
#endif
78
 
      case TYPE_CHAR:
79
 
        ap->a.a_char = va_arg (args, int);
80
 
        break;
81
 
#ifdef HAVE_WINT_T
82
 
      case TYPE_WIDE_CHAR:
83
 
        ap->a.a_wide_char = va_arg (args, wint_t);
84
 
        break;
85
 
#endif
86
 
      case TYPE_STRING:
87
 
        ap->a.a_string = va_arg (args, const char *);
88
 
        break;
89
 
#ifdef HAVE_WCHAR_T
90
 
      case TYPE_WIDE_STRING:
91
 
        ap->a.a_wide_string = va_arg (args, const wchar_t *);
92
 
        break;
93
 
#endif
94
 
      case TYPE_POINTER:
95
 
        ap->a.a_pointer = va_arg (args, void *);
96
 
        break;
97
 
      case TYPE_COUNT_SCHAR_POINTER:
98
 
        ap->a.a_count_schar_pointer = va_arg (args, signed char *);
99
 
        break;
100
 
      case TYPE_COUNT_SHORT_POINTER:
101
 
        ap->a.a_count_short_pointer = va_arg (args, short *);
102
 
        break;
103
 
      case TYPE_COUNT_INT_POINTER:
104
 
        ap->a.a_count_int_pointer = va_arg (args, int *);
105
 
        break;
106
 
      case TYPE_COUNT_LONGINT_POINTER:
107
 
        ap->a.a_count_longint_pointer = va_arg (args, long int *);
108
 
        break;
109
 
#ifdef HAVE_LONG_LONG
110
 
      case TYPE_COUNT_LONGLONGINT_POINTER:
111
 
        ap->a.a_count_longlongint_pointer = va_arg (args, long long int *);
112
 
        break;
113
 
#endif
114
 
      default:
115
 
        /* Unknown type.  */
116
 
        return -1;
117
 
      }
118
 
  return 0;
119
 
}