[linux-cifs-client] [PATCH 01/10] cifs: add function to get
length of NULL termination in bytes
Shirish Pargaonkar
shirishpargaonkar at gmail.com
Wed Apr 29 13:58:22 GMT 2009
On Wed, Apr 29, 2009 at 8:29 AM, Jeff Layton <jlayton at redhat.com> wrote:
> 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
>
> _______________________________________________
> linux-cifs-client mailing list
> linux-cifs-client at lists.samba.org
> https://lists.samba.org/mailman/listinfo/linux-cifs-client
>
For some of the charsets I looked at under fs/nls, it looks like uni2char
always returns 1, I think to indicate the function succeeded as opposed
to sending an error.
Are there any charsets that you might have looked at whose
uni2char function returns more than 1 byte as size of the null character?
More information about the linux-cifs-client
mailing list