contrib/*: started to adapt the contrib system for BeOS
[vlc.git] / extras / contrib / src / Patches / gettext.patch
1 diff -ru gettext-original/gettext-runtime/libasprintf/autosprintf.cc gettext/gettext-runtime/libasprintf/autosprintf.cc
2 --- gettext-original/gettext-runtime/libasprintf/autosprintf.cc Mon Oct 28 19:44:32 2002
3 +++ gettext/gettext-runtime/libasprintf/autosprintf.cc  Thu Jul 22 10:23:30 2004
4 @@ -32,6 +32,51 @@
5  #include <string.h>
6  #include "lib-asprintf.h"
7  
8 +#ifdef __BEOS__
9 +/* vasprintf emulation (borrowed from VLC) */
10 +#define vasprintf beossux_vasprintf
11 +int beossux_vasprintf(char **strp, const char *fmt, va_list ap)
12 +{
13 +    /* Guess we need no more than 100 bytes. */
14 +    int     i_size = 100;
15 +    char    *p = (char *) malloc( i_size );
16 +    int     n;
17 +
18 +    if( p == NULL )
19 +    {
20 +        *strp = NULL;
21 +        return -1;
22 +    }
23 +
24 +    for( ;; )
25 +    {
26 +        /* Try to print in the allocated space. */
27 +        n = vsnprintf( p, i_size, fmt, ap );
28 +
29 +        /* If that worked, return the string. */
30 +        if (n > -1 && n < i_size)
31 +        {
32 +            *strp = p;
33 +            return strlen( p );
34 +        }
35 +        /* Else try again with more space. */
36 +        if (n > -1)    /* glibc 2.1 */
37 +        {
38 +           i_size = n+1; /* precisely what is needed */
39 +        }
40 +        else           /* glibc 2.0 */
41 +        {
42 +           i_size *= 2;  /* twice the old size */
43 +        }
44 +        if( (p = (char *) realloc( p, i_size ) ) == NULL)
45 +        {
46 +            *strp = NULL;
47 +            return -1;
48 +        }
49 +    }
50 +}
51 +#endif
52 +
53  namespace gnu
54  {
55