summaryrefslogtreecommitdiffstats
path: root/usr.sbin/sup/lib/vprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/sup/lib/vprintf.c')
-rw-r--r--usr.sbin/sup/lib/vprintf.c131
1 files changed, 131 insertions, 0 deletions
diff --git a/usr.sbin/sup/lib/vprintf.c b/usr.sbin/sup/lib/vprintf.c
new file mode 100644
index 0000000..235a5f1
--- /dev/null
+++ b/usr.sbin/sup/lib/vprintf.c
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 1991 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie the rights
+ * to redistribute these changes.
+ */
+/*
+ * varargs versions of printf routines
+ *
+ **********************************************************************
+ * HISTORY
+ * $Log: vprintf.c,v $
+ * Revision 1.1.1.1 1993/08/21 00:46:35 jkh
+ * Current sup with compression support.
+ *
+ * Revision 1.1.1.1 1993/05/21 14:52:19 cgd
+ * initial import of CMU's SUP to NetBSD
+ *
+ * Revision 2.5 89/09/08 18:15:55 mbj
+ * Use _doprnt() for the Multimax (an "old" architecture).
+ * [89/09/08 mbj]
+ *
+ * Revision 2.4 89/08/03 14:40:10 mja
+ * Add vsnprintf() routine.
+ * [89/07/12 mja]
+ *
+ * Terminate vsprintf() string with null byte.
+ * [89/04/21 mja]
+ *
+ * Change to use new hidden name for _doprnt on MIPS.
+ * [89/04/18 mja]
+ *
+ * Revision 2.3 89/06/10 14:13:43 gm0w
+ * Added putc of NULL byte to vsprintf.
+ * [89/06/10 gm0w]
+ *
+ * Revision 2.2 88/12/13 13:53:17 gm0w
+ * From Brad White.
+ * [88/12/13 gm0w]
+ ************************************************************
+ */
+
+#include <stdio.h>
+#include <varargs.h>
+
+#ifdef DOPRINT_VA
+/*
+ * system provides _doprnt_va routine
+ */
+#define _doprnt _doprnt_va
+#else
+/*
+ * system provides _doprnt routine
+ */
+#define _doprnt_va _doprnt
+#endif
+
+
+#ifdef NEED_VPRINTF
+int
+vprintf(fmt, args)
+ char *fmt;
+ va_list args;
+{
+ _doprnt(fmt, args, stdout);
+ return (ferror(stdout) ? EOF : 0);
+}
+
+int
+vfprintf(f, fmt, args)
+ FILE *f;
+ char *fmt;
+ va_list args;
+{
+ _doprnt(fmt, args, f);
+ return (ferror(f) ? EOF : 0);
+}
+
+int
+vsprintf(s, fmt, args)
+ char *s, *fmt;
+ va_list args;
+{
+ FILE fakebuf;
+
+ fakebuf._flag = _IOSTRG+_IOWRT; /* no _IOWRT: avoid stdio bug */
+ fakebuf._ptr = s;
+ fakebuf._cnt = 32767;
+ _doprnt(fmt, args, &fakebuf);
+ putc('\0', &fakebuf);
+ return (strlen(s));
+}
+#endif /* NEED_VPRINTF */
+
+#if defined(NEED_VSNPRINTF) || defined(NEED_VPRINTF)
+int
+vsnprintf(s, n, fmt, args)
+ char *s, *fmt;
+ va_list args;
+{
+ FILE fakebuf;
+
+ fakebuf._flag = _IOSTRG+_IOWRT; /* no _IOWRT: avoid stdio bug */
+ fakebuf._ptr = s;
+ fakebuf._cnt = n-1;
+ _doprnt(fmt, args, &fakebuf);
+ fakebuf._cnt++;
+ putc('\0', &fakebuf);
+ if (fakebuf._cnt<0)
+ fakebuf._cnt = 0;
+ return (n-fakebuf._cnt-1);
+}
+#endif /* NEED_VPRINTF || NEED_VSNPRINTF */
OpenPOWER on IntegriCloud