osmo_escape_str_buf: Always copy, don't return input string pointer

osmo_escape_str_buf() used to have the somewhat odd semantics that
if no escaping was needed, it would return the original pointer without
making any copy to the output buffer.  While this seems like an elegant
optimization, it is a very strange behavior and it works differently
than all of our other *_buf() functions.  Let's unify the API and
turn osmo_escape_str_buf() into a strlcpy() if no escaping is needed.

Change-Id: I3a02bdb27008a73101c2db41ac04248960ed4064
diff --git a/tests/utils/utils_test.c b/tests/utils/utils_test.c
index d592fe0..711d6e1 100644
--- a/tests/utils/utils_test.c
+++ b/tests/utils/utils_test.c
@@ -545,7 +545,7 @@
 
 	printf("- passthru:\n");
 	res = osmo_escape_str(printable, -1);
-	if (res != printable)
+	if (strcmp(res, printable))
 		printf("NOT passed through! \"%s\"\n", res);
 	else
 		printf("passed through unchanged \"%s\"\n", res);
@@ -560,14 +560,6 @@
 	memset(out_buf, 0x7f, sizeof(out_buf));
 	printf("\"%s\"\n", osmo_escape_str_buf((const char *)in_buf, sizeof(in_buf), out_buf, 10));
 	OSMO_ASSERT(out_buf[10] == 0x7f);
-
-	printf("- passthrough without truncation when no escaping needed:\n");
-	memset(in_buf, 'x', sizeof(in_buf));
-	in_buf[19] = 'E';
-	in_buf[20] = '\0';
-	memset(out_buf, 0x7f, sizeof(out_buf));
-	printf("\"%s\"\n", osmo_escape_str_buf((const char *)in_buf, -1, out_buf, 10));
-	OSMO_ASSERT(out_buf[0] == 0x7f);
 }
 
 static void str_quote_test(void)