summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/stdio.C88
1 files changed, 50 insertions, 38 deletions
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 <stdint.h>
#include <stdio.h>
#include <util/sprintf.H>
@@ -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;
+}
OpenPOWER on IntegriCloud