[linux-cifs-client] [PATCH 01/10] cifs: add function to get length
of NULL termination in bytes
Jeff Layton
jlayton at redhat.com
Wed Apr 29 13:29:11 GMT 2009
It's possible to have the null terminator for a charset be a single or
multiple character. Add a function to tell us how long it should be.
Signed-off-by: Jeff Layton <jlayton at redhat.com>
---
fs/cifs/cifs_unicode.h | 19 +++++++++++++++++++
1 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/fs/cifs/cifs_unicode.h b/fs/cifs/cifs_unicode.h
index 14eb9a2..6bffab5 100644
--- a/fs/cifs/cifs_unicode.h
+++ b/fs/cifs/cifs_unicode.h
@@ -64,6 +64,25 @@ int cifs_strtoUCS(__le16 *, const char *, int, const struct nls_table *);
#endif
/*
+ * null_charlen - return length of null character for codepage
+ * @codepage - codepage for which to return length of NULL terminator
+ *
+ * Since we can't guarantee that the null terminator will be a particular
+ * length, we have to check against the codepage. If there's a problem
+ * determining it, assume a single-byte NULL terminator.
+ */
+static inline int
+null_charlen(const struct nls_table *codepage)
+{
+ int charlen;
+ char tmp[NLS_MAX_CHARSET_SIZE];
+
+ charlen = codepage->uni2char(0, tmp, NLS_MAX_CHARSET_SIZE);
+
+ return charlen > 0 ? charlen : 1;
+}
+
+/*
* UniStrcat: Concatenate the second string to the first
*
* Returns:
--
1.6.0.6
More information about the linux-cifs-client
mailing list