MINOR: log: add lf_text_len

This function allows to log a text of a specific length.
diff --git a/include/proto/log.h b/include/proto/log.h
index 5d1215a..173375e 100644
--- a/include/proto/log.h
+++ b/include/proto/log.h
@@ -122,7 +122,7 @@
  *
  * Return the adress of the \0 character, or NULL on error
  */
-char *lf_text(char *dst, const char *src, size_t size, struct logformat_node *node);
+char *lf_text_len(char *dst, const char *src, size_t len, size_t size, struct logformat_node *node);
 
 /*
  * Write a IP adress to the log string
diff --git a/src/log.c b/src/log.c
index a586002..a1bc78f 100644
--- a/src/log.c
+++ b/src/log.c
@@ -510,53 +510,40 @@
  *
  * Return the adress of the \0 character, or NULL on error
  */
-char *lf_text(char *dst, const char *src, size_t size, struct logformat_node *node)
+char *lf_text_len(char *dst, const char *src, size_t len, size_t size, struct logformat_node *node)
 {
-	int n;
+	if (size < 2)
+		return NULL;
 
-	if (src == NULL || *src == '\0') {
-		if (node->options & LOG_OPT_QUOTE) {
-			if (size > 2) {
-				*(dst++) = '"';
-				*(dst++) = '"';
-				*dst = '\0';
-			} else {
-				dst = NULL;
-				return dst;
-			}
-		} else {
-			if (size > 1) {
-				*(dst++) = '-';
-				*dst = '\0';
-			} else { // error no space available
-				dst = NULL;
-				return dst;
-			}
-		}
-	} else {
-		if (node->options & LOG_OPT_QUOTE) {
-			if (size-- > 1 ) {
-				*(dst++) = '"';
-			} else {
-				dst = NULL;
-				return NULL;
-			}
-			n = strlcpy2(dst, src, size);
-			size -= n;
-			dst += n;
-			if (size > 1) {
-				*(dst++) = '"';
-				*dst = '\0';
-			} else {
-				dst = NULL;
-			}
-		} else {
-			dst += strlcpy2(dst, src, size);
-		}
+	if (node->options & LOG_OPT_QUOTE) {
+		*(dst++) = '"';
+		size--;
 	}
+
+	if (src) {
+		if (++len > size)
+			len = size;
+		len = strlcpy2(dst, src, len);
+
+		size -= len;
+		dst += len;
+	}
+
+	if (node->options & LOG_OPT_QUOTE) {
+		if (size < 2)
+			return NULL;
+		*(dst++) = '"';
+	}
+
+	*dst = '\0';
 	return dst;
 }
 
+static inline char *lf_text(char *dst, const char *src, size_t size, struct logformat_node *node)
+{
+	return lf_text_len(dst, src, size, size, node);
+}
+
 /*
  * Write a IP adress to the log string
  * +X option write in hexadecimal notation, most signifant byte on the left