diff src/cutils.c @ 3620:0886bbb236cb

[project @ 2000-03-23 05:17:23 by jwe]
author jwe
date Thu, 23 Mar 2000 05:17:25 +0000
parents 729ad2b6a052
children 35070534ea95
line wrap: on
line diff
--- a/src/cutils.c
+++ b/src/cutils.c
@@ -39,6 +39,9 @@
 #include <sys/poll.h>
 #endif
 
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
 #include <string.h>
 
 static void
@@ -92,6 +95,46 @@
   return strncasecmp (s1, s2, n);
 }
 
+char *
+octave_vsnprintf (size_t n, const char *fmt, va_list args)
+{
+#if defined (HAVE_VSNPRINTF)
+  size_t size = 100;
+
+  char *buf = malloc (size);
+
+  while (1)
+    {
+      int nchars = vsnprintf (buf, size, fmt, args);
+
+      if (nchars > -1)
+	return buf;
+      else
+	{
+	  size *= 2;
+	  buf = realloc (buf, size);
+	}
+    }
+#else
+  return 0;
+#endif
+}
+
+char *
+octave_snprintf (size_t n, const char *fmt, ...)
+{
+  char *retval = 0;
+
+  va_list args;
+  va_start (args, fmt);
+
+  retval = octave_vsnprintf (n, fmt, args);
+
+  va_end (args);
+
+  return retval;
+}
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***