summaryrefslogtreecommitdiffstats
path: root/src/lib/puts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/puts.c')
-rwxr-xr-xsrc/lib/puts.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/lib/puts.c b/src/lib/puts.c
new file mode 100755
index 0000000..ab24d6b
--- /dev/null
+++ b/src/lib/puts.c
@@ -0,0 +1,95 @@
+// $Id: puts.c,v 1.1.1.1 2013/12/11 20:49:20 bcbrock Exp $
+// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/lib/puts.c,v $
+//-----------------------------------------------------------------------------
+// *! (C) Copyright International Business Machines Corp. 2013
+// *! All Rights Reserved -- Property of IBM
+// *! *** IBM Confidential ***
+//-----------------------------------------------------------------------------
+
+/// \file puts.c
+/// \brief Implementation of puts(), fputs(), putchar(), fputc()
+///
+/// The implementations of these APIs are split out to save code space for
+/// applications that do not require them.
+
+#include "ssx_io.h"
+
+
+/// Put a character to a stream
+///
+/// The fputc() function writes the byte specified by \a c (converted to an
+/// unsigned char) to the stream pointed to by \a stream. On success, fputc()
+/// returns the value written, i.e., the \c unsigned \c char form of \a c.
+///
+/// The POSIX standard fputc() returns EOF on error; this version returns the
+/// negative error code of the underlying I/O error, which will also be set in
+/// the \a error field of the \a stream. Note that SSX may also be configured
+/// to panic in the event of an I/O error.
+
+int
+fputc(int c, FILE *stream)
+{
+ unsigned char uc = (unsigned char)c;
+ int rc = swrite(stream, (void *)(&uc), 1, 0);
+ if (rc < 0) {
+ return rc;
+ } else {
+ return uc;
+ }
+}
+
+
+/// Put a string to a stream
+///
+/// The fputs() function writes the null-terminated string \a s to the stream
+/// pointed to by \a stream. The terminating null byte is not written. On
+/// success, fputs() returns 0.
+///
+/// The POSIX standard fputc() returns EOF on error; this version returns the
+/// negative error code of the underlying I/O error, which will also be set in
+/// the \a error field of the \a stream. Note that SSX may also be configured
+/// to panic in the event of an I/O error.
+
+int
+fputs(const char *s, FILE *stream)
+{
+ return swrite(stream, s, strlen(s), 0);
+}
+
+/// Put a string to \c stdout
+///
+/// The puts() function writes the null-terminated string \a s followed by a
+/// newline to \a stdout. The terminating null byte is not written. On
+/// success, puts() returns 0.
+///
+/// The POSIX standard fputc() returns EOF on error; this version returns the
+/// negative error code of the underlying I/O error, which will also be set in
+/// the \a error field of the \a stream. Note that SSX may also be configured
+/// to panic in the event of an I/O error.
+
+int
+puts(const char *s)
+{
+ int rc = fputs(s, stdout);
+ if (rc < 0) {
+ return rc;
+ } else {
+ rc = fputc('\n', stdout);
+ if (rc < 0) {
+ return rc;
+ } else {
+ return 0;
+ }
+ }
+}
+
+
+/// Put a character to \a stdout.
+///
+/// \c putchar(c) is equivalent to <c> fputc(c, stdout) </c>.
+
+int
+putchar(int c)
+{
+ return fputc(c, stdout);
+}
OpenPOWER on IntegriCloud