int dsm_client_record(struct dsm_client *client, const char *fmt, ...)
{
    va_list ap;
    int size = 0;
    char *str;
    struct snprintf_ctxt ctxt;

    if(!client) {
        DSM_LOG_ERR("%s no client to record\n", __func__);
        goto out;
    }

    if(client->buff_size <= client->used_size) {
        DSM_LOG_ERR("%s no buffer to record\n", __func__);
        goto out;
    }

    ctxt.avail = client->buff_size - client->used_size -1;
    str = (char *)&client->dump_buff[client->used_size];
    ctxt.next = str;

    va_start(ap, fmt);
    __xprintf(fmt, ap, printf_putc, &ctxt);
    va_end(ap);

    *ctxt.next = 0;
    size = ctxt.next - str;
    client->used_size += size;

out:
    return size;
}
示例#2
0
void dprintf(const char *fmt, ...)
{
    va_list ap;
    va_start(ap, fmt);
    __xprintf(fmt, ap, (void*) dputc, 0);
    va_end(ap);
}
示例#3
0
void cprintf(const char *fmt, ...)
{
    va_list ap;

    va_start(ap, fmt);
    __xprintf(fmt, ap, (void*) console_putc, 0);
    va_end(ap);

    console_flush();
}
void printf(const char *fmt, ...)
{
    va_list ap;

    /*serial_puts_msg("  ");
    dump_uint(out);
    serial_puts_msg("  ");*/
    va_start(ap, fmt);
    __xprintf(0 ,fmt, ap, (void*) xconsole_putc, 0);
    va_end(ap);
}
int snprintf(char *str, int sz, const char *fmt, ...)
{
    va_list ap;
    struct snprintf_ctxt ctxt;
    
    if(sz < 1) return 0;
    
    ctxt.avail = sz - 1;
    ctxt.next = str;
    
    va_start(ap, fmt);
    __xprintf(fmt, ap, snprintf_putc, &ctxt);
    va_end(ap);

    *ctxt.next = 0;
    return ctxt.next - str;
}