From 9fcf0b3c46ae5c2a5a478af2e51136fae8c00175 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 8 Feb 2011 13:43:03 +0000 Subject: [PATCH] Eina unicode: Added eina_unicode_strndup. SVN revision: 56807 --- legacy/eina/src/include/eina_unicode.h | 2 ++ legacy/eina/src/lib/eina_unicode.c | 21 ++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/legacy/eina/src/include/eina_unicode.h b/legacy/eina/src/include/eina_unicode.h index 8a20d26d1f..152177b68a 100644 --- a/legacy/eina/src/include/eina_unicode.h +++ b/legacy/eina/src/include/eina_unicode.h @@ -46,6 +46,8 @@ EAPI size_t eina_unicode_strnlen(const Eina_Unicode *ustr, int n) EINA_AR EAPI Eina_Unicode *eina_unicode_strdup(const Eina_Unicode *text) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; +EAPI Eina_Unicode *eina_unicode_strndup(const Eina_Unicode *text, size_t n) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_MALLOC; + EAPI int eina_unicode_strcmp(const Eina_Unicode *a, const Eina_Unicode *b) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1, 2) EINA_PURE; EAPI Eina_Unicode *eina_unicode_strcpy(Eina_Unicode *dest, const Eina_Unicode *source) EINA_ARG_NONNULL(1, 2); diff --git a/legacy/eina/src/lib/eina_unicode.c b/legacy/eina/src/lib/eina_unicode.c index c9e679c71d..6c8f7e9650 100644 --- a/legacy/eina/src/lib/eina_unicode.c +++ b/legacy/eina/src/lib/eina_unicode.c @@ -108,20 +108,31 @@ eina_unicode_strnlen(const Eina_Unicode *ustr, int n) +/** + * @brief Same as strdup but cuts on n. Assumes n < len + * @since 1.1.0 + */ +EAPI Eina_Unicode * +eina_unicode_strndup(const Eina_Unicode *text, size_t n) +{ + Eina_Unicode *ustr; + + ustr = (Eina_Unicode *) malloc((n + 1) * sizeof(Eina_Unicode)); + memcpy(ustr, text, n * sizeof(Eina_Unicode)); + ustr[n] = 0; + return ustr; +} + /** * @brief Same as the standard strdup just with Eina_Unicode instead of char. */ EAPI Eina_Unicode * eina_unicode_strdup(const Eina_Unicode *text) { - Eina_Unicode *ustr; size_t len; len = eina_unicode_strlen(text); - ustr = (Eina_Unicode *)malloc((len + 1) * sizeof(Eina_Unicode)); - memcpy(ustr, text, len * sizeof(Eina_Unicode)); - ustr[len] = 0; - return ustr; + return eina_unicode_strndup(text, len); } /**