示例#1
0
extern void
stralloc_formatv( stralloc_t*  s, const char*  fmt, va_list  args )
{
    stralloc_reset(s);
    stralloc_ready(s,10);

    while (1) {
        int      n;
        va_list  args2;

        va_copy(args2, args);
        n = vsnprintf( s->s, s->a, fmt, args2 );
        va_end(args2);

        /* funky old C libraries returns -1 when truncation occurs */
        if (n > -1 && n < s->a) {
            s->n = n;
            break;
        }
        if (n > -1) {  /* we now precisely what we need */
            stralloc_ready( s, n+1 );
        } else {
            stralloc_ready( s, s->a*2 );
        }
    }
}
示例#2
0
文件: main.c 项目: MarvelHq/DECAF
void emulator_help( void )
{
    STRALLOC_DEFINE(out);
    android_help_main(out);
    printf( "%.*s", out->n, out->s );
    stralloc_reset(out);
    exit(1);
}
示例#3
0
extern void
stralloc_add_formatv( stralloc_t*  s, const char*  fmt, va_list  args )
{
    STRALLOC_DEFINE(s2);
    stralloc_formatv(s2, fmt, args);
    stralloc_append( s, s2 );
    stralloc_reset( s2 );
}