--- ./lib/asprintf.c.orig	2020-12-04 07:47:04 +0000
+++ ./lib/asprintf.c	2020-12-04 07:52:52 +0000
@@ -0,0 +1,23 @@
+/*
+ * asprintf(3)
+ * 20020809 entropy@tappedin.com
+ * public domain.  no warranty.  use at your own risk.  have a nice day.
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <string.h>
+#include "vasprintf.h"
+
+
+int
+asprintf(char **ret, const char *fmt, ...)
+{
+	int len;
+	va_list ap;
+
+	va_start(ap, fmt);
+	len = vasprintf(ret, fmt, ap);
+	va_end(ap);
+	return len;
+}
--- ./lib/vasprintf.c.orig	2020-12-04 09:53:47 +0000
+++ ./lib/vasprintf.c	2020-12-04 07:50:16 +0000
@@ -0,0 +1,102 @@
+/*
+ * vasprintf(3)
+ * 20020809 entropy@tappedin.com
+ * public domain.  no warranty.  use at your own risk.  have a nice day.
+ */
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#if HAVE_PATHS_H
+#include <paths.h>
+#endif /* HAVE_PATHS_H */
+
+
+#if defined(HAVE__VSNPRINTF) && !defined(HAVE_VSNPRINTF)
+#undef HAVE_VSNPRINTF
+#undef vsnprintf
+#define HAVE_VSNPRINTF 1
+#define vsnprintf _vsnprintf
+#endif
+
+#ifndef _PATH_DEVNULL
+#define _PATH_DEVNULL "/dev/null"
+#endif
+
+#define CHUNKSIZE 512
+int
+vasprintf(char **ret, const char *fmt, va_list ap)
+{
+#if HAVE_VSNPRINTF
+	int chunks;
+	size_t buflen;
+	char *buf;
+	int len;
+
+	chunks = ((strlen(fmt) + 1) / CHUNKSIZE) + 1;
+	buflen = chunks * CHUNKSIZE;
+	for (;;) {
+		if ((buf = malloc(buflen)) == NULL) {
+			*ret = NULL;
+			return -1;
+		}
+		len = vsnprintf(buf, buflen, fmt, ap);
+		if (len >= 0 && (size_t) len < (buflen - 1)) {
+			break;
+		}
+		free(buf);
+		buflen = (++chunks) * CHUNKSIZE;
+		/* 
+		 * len >= 0 are required for vsnprintf implementation that 
+		 * return -1 of buffer insufficient
+		 */
+		if (len >= 0 && (size_t) len >= buflen) {
+			buflen = len + 1;
+		}
+	}
+	*ret = buf;
+	return len;
+#else /* HAVE_VSNPRINTF */
+#ifdef _REENTRANT
+	FILE *fp;
+#else /* !_REENTRANT */
+	static FILE *fp = NULL;
+#endif /* !_REENTRANT */
+	int len;
+	char *buf;
+
+	*ret = NULL;
+
+#ifdef _REENTRANT
+
+# ifdef WIN32
+#  error Win32 do not have /dev/null, should use vsnprintf version
+# endif
+
+	if ((fp = fopen(_PATH_DEVNULL, "w")) == NULL)
+		return -1;
+#else /* !_REENTRANT */
+	if ((fp == NULL) && ((fp = fopen(_PATH_DEVNULL, "w")) == NULL))
+		return -1;
+#endif /* !_REENTRANT */
+
+	len = vfprintf(fp, fmt, ap);
+
+#ifdef _REENTRANT
+	if (fclose(fp) != 0)
+		return -1;
+#endif /* _REENTRANT */
+
+	if (len < 0)
+		return len;
+	if ((buf = malloc(len + 1)) == NULL)
+		return -1;
+	if (vsprintf(buf, fmt, ap) != len)
+		return -1;
+	*ret = buf;
+	return len;
+#endif /* HAVE_VSNPRINTF */
+}
--- ./lib/test-fanout.c.orig	2020-12-04 07:54:16 +0000
+++ ./lib/test-fanout.c	2020-12-04 07:54:51 +0000
@@ -1,4 +1,6 @@
 #define _GNU_SOURCE 1
+#include "vasprintf.c"
+#include "asprintf.c"
 #include <stdio.h>
 #include "fanout.c"
 #include "t-utils.h"
--- ./lib/test-nsutils.c.orig	2020-12-04 07:53:38 +0000
+++ ./lib/test-nsutils.c	2020-12-04 07:53:56 +0000
@@ -1,4 +1,6 @@
 #define _GNU_SOURCE
+#include "asprintf.c"
+#include "vasprintf.c"
 #include <stdio.h>
 #include "nsutils.c"
 #include "t-utils.h"
--- ./lib/test-runcmd.c.orig	2020-12-04 07:45:26 +0000
+++ ./lib/test-runcmd.c	2020-12-04 09:04:58 +0000
@@ -1,4 +1,6 @@
 #define _GNU_SOURCE
+#include "asprintf.c"
+#include "vasprintf.c"
 #include "runcmd.c"
 #include "t-utils.h"
 #include <stdio.h>
@@ -10,7 +12,7 @@
 #define ECHO_COMMAND "/opt/csw/gnu/echo"
 #else
 /* Otherwise we'll try to get away with a default. This is GNU echo on Leenooks. */
-#define ECHO_COMMAND "/bin/echo"
+#define ECHO_COMMAND "/opt/freeware/bin/echo"
 #endif
 
 
--- ./lib/vasprintf.h.orig	2020-12-04 10:34:05 +0000
+++ ./lib/vasprintf.h	2020-12-04 10:34:46 +0000
@@ -0,0 +1,31 @@
+#ifndef _vasprintf_h_
+#define _vasprintf_h_
+ 
+#include <stdarg.h>
+ 
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+ 
+#if defined(HAVE__VSNPRINTF) && !defined(HAVE_VSNPRINTF)
+#undef vsnprintf
+#define vsnprintf _vsnprintf
+#elif !HAVE_VSNPRINTF
+int vsnprintf(char *ret, size_t max, const char *fmt, va_list ap);
+#endif /* !HAVE_VSNPRINTF */
+ 
+#if !HAVE_ASPRINTF
+int asprintf(char **ret, const char *fmt, ...);
+#endif /* !HAVE_ASPRINTF */
+ 
+#if !HAVE_VASPRINTF
+int vasprintf(char **ret, const char *fmt, va_list ap);
+#endif /* !HAVE_VASPRINTF */
+ 
+#ifdef __cplusplus
+}
+#endif
+ 
+#endif
+
