Update of /cvsroot/libsysio/libsysio/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27524/src
Modified Files:
cprintf.c
Log Message:
Added routine and global definition for a rudimentary diagnostic printf called
_sysio_diag_printf.
Index: cprintf.c
===================================================================
RCS file: /cvsroot/libsysio/libsysio/src/cprintf.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -w -b -B -p -r1.1 -r1.2
--- cprintf.c 20 Aug 2007 16:02:56 -0000 1.1
+++ cprintf.c 7 Apr 2008 18:59:48 -0000 1.2
@@ -93,7 +93,6 @@ vasprintf(char **strp, const char *fmt,
return n;
}
-#if 0
static int
asprintf(char **strp, const char *fmt, ...)
{
@@ -105,7 +104,6 @@ asprintf(char **strp, const char *fmt, .
va_end(ap);
return n;
}
-#endif
#endif /* !(defined(_HAVE_ASPRINTF) && _HAVE_ASPRINTF) */
static void
@@ -137,3 +135,40 @@ _sysio_cprintf(const char *fmt, ...)
_sysio_cwrite(buf, len);
free(buf);
}
+
+#ifndef NDEBUG
+/*
+ * Diagnostic printf.
+ */
+void
+_sysio_diag_printf(const char *funidnam, const char *fmt, ...)
+{
+ int prelen;
+ char *pre;
+ va_list ap;
+ int msglen;
+ char *msg;
+ char *buf;
+
+ prelen = asprintf(&pre, "%s: ", funidnam);
+ if (prelen < 0)
+ return;
+ va_start(ap, fmt);
+ msglen = vasprintf(&msg, fmt, ap);
+ va_end(ap);
+ if (msglen < 0) {
+ free(pre);
+ return;
+ }
+ buf = malloc(prelen - 1 + msglen);
+ if (buf) {
+ (void )strcpy(buf, pre);
+ (void )strcpy(buf + prelen, msg);
+ *(buf + prelen + msglen) = '\0';
+ _sysio_cwrite(buf, prelen + msglen);
+ free(buf);
+ }
+ free(msg);
+ free(pre);
+}
+#endif
|