+static int buffer_add_string (const char *str,
+ char **buffer_ret, size_t *buffer_size_ret)
+{
+ size_t str_size;
+
+ str_size = strlen (str) + 1;
+
+ if (*buffer_size_ret < str_size)
+ return (-1);
+
+ memcpy (*buffer_ret, str, str_size);
+ *buffer_ret += str_size;
+ *buffer_size_ret -= str_size;
+
+ return (0);
+} /* int buffer_add_string */
+
+static int buffer_add_value (const char *value,
+ char **buffer_ret, size_t *buffer_size_ret)
+{
+ char temp[4096];
+
+ if (strncmp (value, "N:", 2) == 0)
+ snprintf (temp, sizeof (temp), "%lu:%s",
+ (unsigned long) time (NULL), value + 2);
+ else
+ strncpy (temp, value, sizeof (temp));
+ temp[sizeof (temp) - 1] = 0;
+
+ return (buffer_add_string (temp, buffer_ret, buffer_size_ret));
+} /* int buffer_add_value */
+