/// @brief Our printf function for testing /// @param[in] fmt: printf forat string /// @param[in] va_list: vararg list or arguments /// @return size of printed string int t_printf(const char *format, ...) { int len; int i; printf_t fn; va_list va; fn.put = _putc_fn; fn.sent = 0; va_start(va, format); _printf_fn(&fn, format, va); va_end(va); len = fn.sent; return (len); }
/// @brief tft_printf function /// @param[in] *win: Window Structure /// @param[in] fmt: printf forat string /// @param[in] ...: vararg list or arguments /// @return size of string MEMSPACE int tft_printf(window *win, const char *fmt, ... ) { _fontc f; printf_t fn; fn.put = _putc_win; fn.size = 0; fn.buffer = (void *) win; va_list va; va_start(va, fmt); _printf_fn(&fn, fmt, va); va_end(va); return(fn.size); }
// ============================================= /// @brief Our vsnprintf function for testing /// @param[out] str: string buffer for result /// @param[in] size: maximum length of converted string /// @param[in] format: printf forat string /// @param[in] va: va_list list of arguments /// @return string size MEMSPACE int t_vsnprintf(char* str, size_t size, const char *format, va_list va) { int len; char *save = str; printf_t fn; *str = 0; fn.put = _putc_buffer_fn; fn.len = size; fn.sent = 0; fn.buffer = (void *) str; _printf_fn(&fn, format, va); // FIXME check size should == fn.size on exit len = strlen(save); return( len ); }