aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/xstd.c
diff options
context:
space:
mode:
Diffstat (limited to 'xstd.c')
-rw-r--r--xstd.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/xstd.c b/xstd.c
index c236e2df..eb36b404 100644
--- a/xstd.c
+++ b/xstd.c
@@ -1,4 +1,4 @@
-/* $Id: xstd.c,v 1.2 2008/12/29 18:08:44 kristaps Exp $ */
+/* $Id: xstd.c,v 1.3 2009/01/17 16:15:27 kristaps Exp $ */
/*
* Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
*
@@ -16,6 +16,7 @@
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
+#include <assert.h>
#include <err.h>
#include <stdlib.h>
#include <string.h>
@@ -75,6 +76,30 @@ xstrdup(const char *p)
}
+int
+xstrlcats(char *buf, const struct mdoc_node *n, size_t sz)
+{
+ char *p;
+
+ assert(sz > 0);
+ assert(buf);
+ *buf = 0;
+
+ for ( ; n; n = n->next) {
+ assert(MDOC_TEXT == n->type);
+ p = n->data.text.string;
+ if ( ! xstrlcat(buf, p, sz))
+ return(0);
+ if (n->next && ! xstrlcat(buf, " ", sz))
+ return(0);
+ }
+
+ return(1);
+}
+
+
+
+
#ifdef __linux__
/* $OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $ */