summaryrefslogtreecommitdiff
path: root/include/linux/ucs2_string.h
blob: 74f23ca5a96787ecca923010180414cd43956a33 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_UCS2_STRING_H_
#define _LINUX_UCS2_STRING_H_

#include <linux/types.h>	/* for size_t */
#include <linux/stddef.h>	/* for NULL */

typedef u16 ucs2_char_t;

unsigned long ucs2_strnlen(const ucs2_char_t *s, size_t maxlength);
unsigned long ucs2_strlen(const ucs2_char_t *s);
unsigned long ucs2_strsize(const ucs2_char_t *data, unsigned long maxlength);
ssize_t ucs2_strscpy(ucs2_char_t *dst, const ucs2_char_t *src, size_t count);
int ucs2_strncmp(const ucs2_char_t *a, const ucs2_char_t *b, size_t len);

unsigned long ucs2_utf8size(const ucs2_char_t *src);
unsigned long
ucs2_as_utf8_l(u8 *dest, const ucs2_char_t *src, unsigned long limit,
	       unsigned long maxlength);

static inline
unsigned long ucs2_as_utf8(u8 *dest, const ucs2_char_t *src,
			   unsigned long maxlength)
{
	return ucs2_as_utf8_l(dest, src, ucs2_strnlen(src, maxlength),
			      maxlength);
}

#endif /* _LINUX_UCS2_STRING_H_ */