~ubuntu-branches/ubuntu/raring/renameutils/raring

« back to all changes in this revision

Viewing changes to lib/vasnprintf.h

  • Committer: Package Import Robot
  • Author(s): Francois Marier
  • Date: 2012-05-06 21:45:54 UTC
  • mfrom: (10.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20120506214554-k531n9odfuwk2451
Tags: 0.12.0-1
* New upstream release (closes: #600411)
* Patch to fix typo in installation target of Makefile

* Bump Standards-Version up to 3.9.3
* Bump debhelper compatibility to 9
* Switch to a minimal debian/rules file

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* vsprintf with automatic memory allocation.
2
 
   Copyright (C) 2002-2004, 2007-2011 Free Software Foundation, Inc.
3
 
 
4
 
   This program is free software; you can redistribute it and/or modify
5
 
   it under the terms of the GNU General Public License as published by
6
 
   the Free Software Foundation; either version 3, 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
12
 
   GNU General Public License for more details.
13
 
 
14
 
   You should have received a copy of the GNU General Public License along
15
 
   with this program; if not, write to the Free Software Foundation,
16
 
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
17
 
 
18
 
#ifndef _VASNPRINTF_H
19
 
#define _VASNPRINTF_H
20
 
 
21
 
/* Get va_list.  */
22
 
#include <stdarg.h>
23
 
 
24
 
/* Get size_t.  */
25
 
#include <stddef.h>
26
 
 
27
 
/* The __attribute__ feature is available in gcc versions 2.5 and later.
28
 
   The __-protected variants of the attributes 'format' and 'printf' are
29
 
   accepted by gcc versions 2.6.4 (effectively 2.7) and later.
30
 
   We enable _GL_ATTRIBUTE_FORMAT only if these are supported too, because
31
 
   gnulib and libintl do '#define printf __printf__' when they override
32
 
   the 'printf' function.  */
33
 
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
34
 
# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
35
 
#else
36
 
# define _GL_ATTRIBUTE_FORMAT(spec) /* empty */
37
 
#endif
38
 
 
39
 
#ifdef __cplusplus
40
 
extern "C" {
41
 
#endif
42
 
 
43
 
/* Write formatted output to a string dynamically allocated with malloc().
44
 
   You can pass a preallocated buffer for the result in RESULTBUF and its
45
 
   size in *LENGTHP; otherwise you pass RESULTBUF = NULL.
46
 
   If successful, return the address of the string (this may be = RESULTBUF
47
 
   if no dynamic memory allocation was necessary) and set *LENGTHP to the
48
 
   number of resulting bytes, excluding the trailing NUL.  Upon error, set
49
 
   errno and return NULL.
50
 
 
51
 
   When dynamic memory allocation occurs, the preallocated buffer is left
52
 
   alone (with possibly modified contents).  This makes it possible to use
53
 
   a statically allocated or stack-allocated buffer, like this:
54
 
 
55
 
          char buf[100];
56
 
          size_t len = sizeof (buf);
57
 
          char *output = vasnprintf (buf, &len, format, args);
58
 
          if (output == NULL)
59
 
            ... error handling ...;
60
 
          else
61
 
            {
62
 
              ... use the output string ...;
63
 
              if (output != buf)
64
 
                free (output);
65
 
            }
66
 
  */
67
 
#if REPLACE_VASNPRINTF
68
 
# define asnprintf rpl_asnprintf
69
 
# define vasnprintf rpl_vasnprintf
70
 
#endif
71
 
extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
72
 
       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 4));
73
 
extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args)
74
 
       _GL_ATTRIBUTE_FORMAT ((__printf__, 3, 0));
75
 
 
76
 
#ifdef __cplusplus
77
 
}
78
 
#endif
79
 
 
80
 
#endif /* _VASNPRINTF_H */