From 5652d7c0c6a8db05699f2b4334e4615e1ba22127 Mon Sep 17 00:00:00 2001 From: Patrick Williams Date: Tue, 16 Jul 2013 15:29:15 -0500 Subject: Initial Hostboot Runtime image support. RTC: 76675 Change-Id: Ibd21cf5b555e6dcee182a2f1a292b47d4f384ba0 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6127 Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III --- src/lib/stdio.C | 88 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 38 deletions(-) (limited to 'src/lib/stdio.C') diff --git a/src/lib/stdio.C b/src/lib/stdio.C index 0dc617276..0bdb63873 100644 --- a/src/lib/stdio.C +++ b/src/lib/stdio.C @@ -1,25 +1,25 @@ -// IBM_PROLOG_BEGIN_TAG -// This is an automatically generated prolog. -// -// $Source: src/lib/stdio.C $ -// -// IBM CONFIDENTIAL -// -// COPYRIGHT International Business Machines Corp. 2011 -// -// p1 -// -// Object Code Only (OCO) source materials -// Licensed Internal Code Source Materials -// IBM HostBoot Licensed Internal Code -// -// The source code for this program is not published or other- -// wise divested of its trade secrets, irrespective of what has -// been deposited with the U.S. Copyright Office. -// -// Origin: 30 -// -// IBM_PROLOG_END +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/lib/stdio.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2011,2013 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ #include #include #include @@ -28,24 +28,24 @@ class SprintfBuffer { public: - int putc(int c) - { - if ('\b' == c) - { - iv_pos--; - } - else - { - iv_buffer[iv_pos++] = c; - } - return c; - } + int putc(int c) + { + if ('\b' == c) + { + iv_pos--; + } + else + { + iv_buffer[iv_pos++] = c; + } + return c; + } - explicit SprintfBuffer(char* buf) : iv_pos(0), iv_buffer(buf) {}; + explicit SprintfBuffer(char* buf) : iv_pos(0), iv_buffer(buf) {}; private: - size_t iv_pos; - char * iv_buffer; + size_t iv_pos; + char * iv_buffer; }; int sprintf(char *str, const char * format, ...) @@ -58,9 +58,21 @@ int sprintf(char *str, const char * format, ...) SprintfBuffer console(str); size_t count = vasprintf(mem_ptr_fun(console, &SprintfBuffer::putc), - format, args); + format, args); va_end(args); console.putc('\0'); return count; } + +int vsprintf(char *str, const char * format, va_list args) +{ + using Util::mem_ptr_fun; + + SprintfBuffer console(str); + size_t count = vasprintf(mem_ptr_fun(console, &SprintfBuffer::putc), + format, args); + + console.putc('\0'); + return count; +} -- cgit v1.2.1