Example #1
0
int str::printf(const char* pFormat, ...)
{
    va_list args;
    va_start(args, pFormat);

    /**
     * Try to print into allocated memory, and if the number of characters
     * is greater than capacity, reallocate more memory, and print again
     * @note Our capacity doesn't include NULL char which we do have an
     *       extra space for.
     */
#if STR_SUPPORT_FLOAT
    int len = vsnprintf(mpStr, getCapacity()+1, pFormat, args);
#else
    int len = vsniprintf(mpStr, getCapacity()+1, pFormat, args);
#endif

    /**
     * output is only written if len is greater than 0 and less
     * than our capacity.  So if it is not written then retry:
     */
    while(!mStackMem && !(len > 0 && len <= getCapacity()))
    {
        if (reserve(getCapacity() + getCapacity())) {
            #if STR_SUPPORT_FLOAT
                len = vsnprintf(mpStr, getCapacity()+1, pFormat, args);
            #else
                len = vsniprintf(mpStr, getCapacity()+1, pFormat, args);
            #endif
        }
    }

    va_end(args);
    return len;
}
Example #2
0
static void leuartvPrintf(LineIO* io, const char* text, va_list args)
{
    char buf[255] = {0};

    vsniprintf(buf, sizeof(buf), text, args);

    leuartPuts(io, buf);
}
Example #3
0
int owl_os_snprintf(char *str, size_t size, const char *format, ...)
{
	int ret;
	va_list ap;
	va_start(ap, format);
	ret = vsniprintf(str, size, format, ap);
	va_end(ap);
	return ret;
}
Example #4
0
 int snprintf(char* pDst, size_t len, const char* fmt, ...)
 {
     int plen = 0;
     va_list args;
     va_start(args, fmt);
     plen = vsniprintf(pDst, len, fmt, args);
     va_end(args);
     return plen;
 }
Example #5
0
void yaffs_log(const char* fmt, ...)
{
    va_list args;
    va_start(args, fmt);

    char buffer[256];
    vsniprintf(buffer, sizeof(buffer), fmt, args);

    LOG(LOG_LEVEL_INFO, buffer);

    va_end(args);
}
Example #6
0
int32_t uart5_printf(char *fmt, ...)
{
  va_list args;
  int tmp;
  char buffer[UART5_PRINTF_BUF_LEN];
  va_start(args,fmt);
#ifdef UART5_PRINTF_USE_FLOAT
  tmp=vsnprintf(buffer, UART5_PRINTF_BUF_LEN, fmt, args);
#else
  tmp=vsniprintf(buffer, UART5_PRINTF_BUF_LEN, fmt, args);
#endif
  va_end(args);
  uart5_putstr(buffer);
  return tmp;
}
Example #7
0
CString & CString::Format(const char *format, ...)
{
	va_list ap;
	va_start(ap, format);

	while (true) {
		length = vsniprintf(str, GetBufferSize(), format, ap);

		if (length == -1)
			length = 0;
		if (length < GetBufferSize())
			break;

		if (!SetBufferSize(length + 1)) {
			length = 0;
			break;
		}
	}

	va_end(ap);
	return *this;
}
Example #8
0
char* mprintf(const char *format, ...)
{
    int len = 0;
    const int align = 16;
    char *str_ptr = NULL;

    // Allocate chunk of "align" sized block with a little extra space for parameter printing (align * 2)
    int mem = ((strlen(format) / align) * align) + (align * 2);
    str_ptr = (char*) malloc(mem);

    va_list args;
    va_start(args, format);

    while (NULL != str_ptr)
    {
        va_list args_copy;
        va_copy(args_copy, args);

        #if (0 == USE_REDUCED_PRINTF)
        len = vsnprintf(str_ptr, mem, format, args_copy);
        #else
        len = vsniprintf(str_ptr, mem, format, args_copy);
        #endif
        va_end(args_copy);

        // If we could not print, reallocate and try again.
        if (len >= mem) {
            mem = ((len / align) * align) + align;
            str_ptr = realloc(str_ptr, mem);
        }
        else {
            break;
        }
    };

    va_end(args);
    return str_ptr;
}
Example #9
0
int owl_os_printf(const char *fmt, ...)
{
        char *str = NULL;
        va_list args;
        int len;
        char *iter;

        va_start(args, fmt);

        if ((str = malloc(160)) == NULL)
                return -1;

        if ((len = vsniprintf(str, 160, fmt, args)) < 0) {
                free(str);
                return -1;
        }

        iter = str;
        while (*iter)
                owl_putc(*iter++);

        free(str);
        return len;
}
Example #10
0
int
owl_printf(const char *fmt, ...)
{
        char *str = NULL;
        va_list args;
        int len;
        char *iter;

        va_start(args, fmt);

        if ((str = malloc(MAX_PRINTF_LEN)) == NULL)
                return OWL_ERR_MEM;
        if ((len = vsniprintf(str, MAX_PRINTF_LEN, fmt, args)) < 0) {
                free(str);
                return OWL_ERR_MEM;
        }

        iter = str;
        while (*iter)
                owl_putc(*iter++);

        free(str);
        return len;
}
Example #11
0
void
vsyslog(int priority, const char *format, va_list ap)
{
	rtems_bsd_syslog_context *ctx = rtems_bsd_syslog_get_context();
	int pri = LOG_PRI(priority);
	char fmt[128];
	char buf[128];
	const char *src;
	char *dst;
	size_t rem;
	char *m;
	int n;
	size_t len;

	if ((LOG_MASK(pri) & ctx->mask) == 0) {
		return;
	}

	/* Expand the %m in the format string and add a newline character */

	src = format;
	dst = &fmt[0];
	rem = sizeof(fmt) - 2;

	while ((m = strstr(src, "%m")) != NULL) {
		size_t c = m - src;

		if (c > rem) {
			rtems_bsd_syslog_format_buffer_overflow();
			return;
		}

		memcpy(dst, src, c);
		dst += c;
		src += c + 2;
		rem -= c;

		n = sniprintf(dst, rem, "%s", strerror(errno));
		if (n > rem || n < 0) {
			rtems_bsd_syslog_format_buffer_overflow();
			return;
		}

		dst += (size_t) n;
		rem -= (size_t) n;
	}

	len = strlen(src);
	if (len > rem) {
		rtems_bsd_syslog_format_buffer_overflow();
		return;
	}

	memcpy(dst, src, len);
	dst += len;
	dst[0] = '\n';
	dst[1] = '\0';

	/* Print into buffer */

	dst = &buf[0];
	rem = sizeof(buf) - 1;

	n = sniprintf(dst, rem, "%s: ", rtems_bsd_syslog_priorities[pri]);
	if (n <= rem) {
		dst += (size_t) n;
		rem -= (size_t) n;
	}

	n = sniprintf(dst, rem, "%s: ", rtems_bsd_program_get_name());
	if (n <= rem) {
		dst += (size_t) n;
		rem -= (size_t) n;
	}

	vsniprintf(dst, rem, &fmt[0], ap);

	/* Write in one rush */

	fputs(&buf[0], stderr);
}