diff options
-rw-r--r-- | lib/util/charset/charset.h | 8 | ||||
-rw-r--r-- | lib/util/charset/util_str.c | 16 |
2 files changed, 22 insertions, 2 deletions
diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h index 7374d6e2ec..82396e1498 100644 --- a/lib/util/charset/charset.h +++ b/lib/util/charset/charset.h @@ -111,6 +111,14 @@ struct smb_iconv_handle; #define strupper(s) strupper_m(s) char *strchr_m(const char *s, char c); +/** + * Calculate the number of units (8 or 16-bit, depending on the + * destination charset), that would be needed to convert the input + * string which is expected to be in in src_charset encoding to the + * destination charset (which should be a unicode charset). + */ +size_t strlen_m_ext_handle(struct smb_iconv_handle *ic, + const char *s, charset_t src_charset, charset_t dst_charset); size_t strlen_m_ext(const char *s, charset_t src_charset, charset_t dst_charset); size_t strlen_m_ext_term(const char *s, charset_t src_charset, charset_t dst_charset); diff --git a/lib/util/charset/util_str.c b/lib/util/charset/util_str.c index ff53b1875e..9aaf651589 100644 --- a/lib/util/charset/util_str.c +++ b/lib/util/charset/util_str.c @@ -140,10 +140,10 @@ _PUBLIC_ bool strcsequal(const char *s1,const char *s2) * string which is expected to be in in src_charset encoding to the * destination charset (which should be a unicode charset). */ -_PUBLIC_ size_t strlen_m_ext(const char *s, charset_t src_charset, charset_t dst_charset) +_PUBLIC_ size_t strlen_m_ext_handle(struct smb_iconv_handle *ic, + const char *s, charset_t src_charset, charset_t dst_charset) { size_t count = 0; - struct smb_iconv_handle *ic = get_iconv_handle(); if (!s) { return 0; @@ -203,6 +203,18 @@ _PUBLIC_ size_t strlen_m_ext(const char *s, charset_t src_charset, charset_t dst return count; } +/** + * Calculate the number of units (8 or 16-bit, depending on the + * destination charset), that would be needed to convert the input + * string which is expected to be in in src_charset encoding to the + * destination charset (which should be a unicode charset). + */ +_PUBLIC_ size_t strlen_m_ext(const char *s, charset_t src_charset, charset_t dst_charset) +{ + struct smb_iconv_handle *ic = get_iconv_handle(); + return strlen_m_ext_handle(ic, s, src_charset, dst_charset); +} + _PUBLIC_ size_t strlen_m_ext_term(const char *s, const charset_t src_charset, const charset_t dst_charset) { |