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; }
static void leuartvPrintf(LineIO* io, const char* text, va_list args) { char buf[255] = {0}; vsniprintf(buf, sizeof(buf), text, args); leuartPuts(io, buf); }
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; }
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; }
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); }
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; }
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; }
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; }
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; }
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; }
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); }