[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] 01/02: introduce GNUNET_strlcpy
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] 01/02: introduce GNUNET_strlcpy |
Date: |
Thu, 27 Jun 2019 10:50:45 +0200 |
This is an automated email from the git hooks/post-receive script.
lurchi pushed a commit to branch master
in repository gnunet.
commit 0e7c93c3a0a3aa966503a8ae4caf3a21914e4126
Author: lurchi <address@hidden>
AuthorDate: Thu Jun 27 10:49:09 2019 +0200
introduce GNUNET_strlcpy
---
src/include/gnunet_strings_lib.h | 20 +++++++++++++++++++-
src/util/strings.c | 30 ++++++++++++++++++++++++++++++
2 files changed, 49 insertions(+), 1 deletion(-)
diff --git a/src/include/gnunet_strings_lib.h b/src/include/gnunet_strings_lib.h
index f43567611..db657f54e 100644
--- a/src/include/gnunet_strings_lib.h
+++ b/src/include/gnunet_strings_lib.h
@@ -541,6 +541,25 @@ GNUNET_STRINGS_get_utf8_args (int argc,
char *const **u8argv);
+/**
+ * Like strlcpy but portable. The given string @a src is copied in full length
+ * (until its null byte). The destination buffer is guaranteed to be
+ * null-terminated.
+ *
+ * to a destination buffer
+ * and ensures that the destination string is null-terminated.
+ *
+ * @param dst destination of the copy
+ * @param src source of the copy, must be null-terminated
+ * @param n the length of the string to copy, including its terminating null
+ * byte
+ * @return the length of the string that was copied, excluding the terminating
+ * null byte
+ */
+size_t
+GNUNET_strlcpy(char *dst, const char *src, size_t n);
+
+
/* ***************** IPv4/IPv6 parsing ****************** */
struct GNUNET_STRINGS_PortPolicy
@@ -641,7 +660,6 @@ struct GNUNET_STRINGS_IPv6NetworkPolicy *
GNUNET_STRINGS_parse_ipv6_policy (const char *routeListX);
-
#if 0 /* keep Emacsens' auto-indent happy */
{
#endif
diff --git a/src/util/strings.c b/src/util/strings.c
index 2cbdb640b..d69244e83 100644
--- a/src/util/strings.c
+++ b/src/util/strings.c
@@ -202,6 +202,36 @@ GNUNET_STRINGS_byte_size_fancy (unsigned long long size)
}
+/**
+ * Like strlcpy but portable. The given string @a src is copied in full length
+ * (until its null byte). The destination buffer is guaranteed to be
+ * null-terminated.
+ *
+ * to a destination buffer
+ * and ensures that the destination string is null-terminated.
+ *
+ * @param dst destination of the copy
+ * @param src source of the copy, must be null-terminated
+ * @param n the length of the string to copy, including its terminating null
+ * byte
+ * @return the length of the string that was copied, excluding the terminating
+ * null byte
+ */
+size_t
+GNUNET_strlcpy(char *dst, const char *src, size_t n)
+{
+ size_t ret;
+ size_t slen;
+
+ GNUNET_assert (0 != n);
+ ret = strlen (src);
+ slen = GNUNET_MIN (ret, n - 1);
+ memcpy (dst, src, slen);
+ dst[slen] = '\0';
+ return ret;
+}
+
+
/**
* Unit conversion table entry for 'convert_with_table'.
*/
--
To stop receiving notification emails like this one, please contact
address@hidden.