Add some more cases to the app-id unit tests
[glib.git] / glib / gnulib / printf.c
blob66261b8f14fceb78597ca5626622307188591c74
1 /* GLIB - Library of useful routines for C programming
2 * Copyright (C) 2003 Matthias Clasen
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.
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.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
19 * Modified by the GLib Team and others 2003. See the AUTHORS
20 * file for a list of people on the GLib Team. See the ChangeLog
21 * files for a list of changes. These files are distributed with
22 * GLib at ftp://ftp.gtk.org/pub/gtk/.
25 #ifdef HAVE_CONFIG_H
26 # include <config.h>
27 #endif
28 #include <string.h>
29 #include <stdlib.h>
30 #include <stdio.h>
31 #include "g-gnulib.h"
32 #include "vasnprintf.h"
33 #include "printf.h"
35 int _g_gnulib_printf (char const *format, ...)
37 va_list args;
38 int retval;
40 va_start (args, format);
41 retval = _g_gnulib_vprintf (format, args);
42 va_end (args);
44 return retval;
47 int _g_gnulib_fprintf (FILE *file, char const *format, ...)
49 va_list args;
50 int retval;
52 va_start (args, format);
53 retval = _g_gnulib_vfprintf (file, format, args);
54 va_end (args);
56 return retval;
59 int _g_gnulib_sprintf (char *string, char const *format, ...)
61 va_list args;
62 int retval;
64 va_start (args, format);
65 retval = _g_gnulib_vsprintf (string, format, args);
66 va_end (args);
68 return retval;
71 int _g_gnulib_snprintf (char *string, size_t n, char const *format, ...)
73 va_list args;
74 int retval;
76 va_start (args, format);
77 retval = _g_gnulib_vsnprintf (string, n, format, args);
78 va_end (args);
80 return retval;
83 int _g_gnulib_vprintf (char const *format, va_list args)
85 return _g_gnulib_vfprintf (stdout, format, args);
88 int _g_gnulib_vfprintf (FILE *file, char const *format, va_list args)
90 char *result;
91 size_t length, rlength;
93 result = vasnprintf (NULL, &length, format, args);
94 if (result == NULL)
95 return -1;
97 rlength = fwrite (result, 1, length, file);
98 free (result);
100 return rlength;
103 int _g_gnulib_vsprintf (char *string, char const *format, va_list args)
105 char *result;
106 size_t length;
108 result = vasnprintf (NULL, &length, format, args);
109 if (result == NULL)
110 return -1;
112 memcpy (string, result, length + 1);
113 free (result);
115 return length;
118 int _g_gnulib_vsnprintf (char *string, size_t n, char const *format, va_list args)
120 char *result;
121 size_t length;
123 result = vasnprintf (NULL, &length, format, args);
124 if (result == NULL)
125 return -1;
127 if (n > 0)
129 memcpy (string, result, MIN(length + 1, n));
130 string[n - 1] = 0;
133 free (result);
135 return length;
138 int _g_gnulib_vasprintf (char **result, char const *format, va_list args)
140 size_t length;
142 *result = vasnprintf (NULL, &length, format, args);
143 if (*result == NULL)
144 return -1;
146 return length;