[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