summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2015-06-27 10:12:29 +0200
committerGünther Deschner <gd@samba.org>2015-07-03 02:00:28 +0200
commitcd8bcecf18544b907c1927aa716057216f948dac (patch)
tree1d4e6f0acd101ce9bffadf20b3008ecb6f5bfcc6 /lib
parent3cdac4a85521974e3c71488ad4078c09245e3b7d (diff)
downloadsamba-cd8bcecf18544b907c1927aa716057216f948dac.tar.gz
lib/util: add strlen_m_ext_term_null() helper function
Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/util/charset/charset.h5
-rw-r--r--lib/util/charset/util_str.c16
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/util/charset/charset.h b/lib/util/charset/charset.h
index 66b09a5cade..0d69d315b4a 100644
--- a/lib/util/charset/charset.h
+++ b/lib/util/charset/charset.h
@@ -105,9 +105,12 @@ size_t strlen_m_ext_handle(struct smb_iconv_handle *ic,
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);
+size_t strlen_m_ext_term_null(const char *s,
+ charset_t src_charset,
+ charset_t dst_charset);
+size_t strlen_m(const char *s);
size_t strlen_m_term(const char *s);
size_t strlen_m_term_null(const char *s);
-size_t strlen_m(const char *s);
char *alpha_strcpy(char *dest, const char *src, const char *other_safe_chars, size_t maxlength);
void string_replace_m(char *s, char oldc, char newc);
bool strcsequal(const char *s1,const char *s2);
diff --git a/lib/util/charset/util_str.c b/lib/util/charset/util_str.c
index 1cbc1cd9652..70ecf6e029a 100644
--- a/lib/util/charset/util_str.c
+++ b/lib/util/charset/util_str.c
@@ -274,6 +274,22 @@ _PUBLIC_ size_t strlen_m_ext_term(const char *s, const charset_t src_charset,
return strlen_m_ext(s, src_charset, dst_charset) + 1;
}
+_PUBLIC_ size_t strlen_m_ext_term_null(const char *s,
+ const charset_t src_charset,
+ const charset_t dst_charset)
+{
+ size_t len;
+ if (!s) {
+ return 0;
+ }
+ len = strlen_m_ext(s, src_charset, dst_charset);
+ if (len == 0) {
+ return 0;
+ }
+
+ return len+1;
+}
+
/**
* Calculate the number of 16-bit units that would be needed to convert
* the input string which is expected to be in CH_UNIX encoding to UTF16.