xref: /linux/fs/ntfs/collate.h (revision cdd4dc3aebeab43a72ce0bc2b5bab6f0a80b97a5)
11e9ea7e0SNamjae Jeon /* SPDX-License-Identifier: GPL-2.0-or-later */
21e9ea7e0SNamjae Jeon /*
3*40796051SNamjae Jeon  * Defines for NTFS kernel collation handling.
41e9ea7e0SNamjae Jeon  *
51e9ea7e0SNamjae Jeon  * Copyright (c) 2004 Anton Altaparmakov
6*40796051SNamjae Jeon  *
7*40796051SNamjae Jeon  * Part of this file is based on code from the NTFS-3G.
8*40796051SNamjae Jeon  * and is copyrighted by the respective authors below:
9*40796051SNamjae Jeon  * Copyright (c) 2004 Anton Altaparmakov
10*40796051SNamjae Jeon  * Copyright (c) 2005 Yura Pakhuchiy
111e9ea7e0SNamjae Jeon  */
121e9ea7e0SNamjae Jeon 
131e9ea7e0SNamjae Jeon #ifndef _LINUX_NTFS_COLLATE_H
141e9ea7e0SNamjae Jeon #define _LINUX_NTFS_COLLATE_H
151e9ea7e0SNamjae Jeon 
161e9ea7e0SNamjae Jeon #include "volume.h"
171e9ea7e0SNamjae Jeon 
18*40796051SNamjae Jeon static inline bool ntfs_is_collation_rule_supported(__le32 cr)
19*40796051SNamjae Jeon {
201e9ea7e0SNamjae Jeon 	int i;
211e9ea7e0SNamjae Jeon 
22*40796051SNamjae Jeon 	if (unlikely(cr != COLLATION_BINARY && cr != COLLATION_NTOFS_ULONG &&
23*40796051SNamjae Jeon 		     cr != COLLATION_FILE_NAME) && cr != COLLATION_NTOFS_ULONGS)
241e9ea7e0SNamjae Jeon 		return false;
251e9ea7e0SNamjae Jeon 	i = le32_to_cpu(cr);
261e9ea7e0SNamjae Jeon 	if (likely(((i >= 0) && (i <= 0x02)) ||
271e9ea7e0SNamjae Jeon 			((i >= 0x10) && (i <= 0x13))))
281e9ea7e0SNamjae Jeon 		return true;
291e9ea7e0SNamjae Jeon 	return false;
301e9ea7e0SNamjae Jeon }
311e9ea7e0SNamjae Jeon 
32*40796051SNamjae Jeon int ntfs_collate(struct ntfs_volume *vol, __le32 cr,
33*40796051SNamjae Jeon 		const void *data1, const u32 data1_len,
34*40796051SNamjae Jeon 		const void *data2, const u32 data2_len);
351e9ea7e0SNamjae Jeon 
361e9ea7e0SNamjae Jeon #endif /* _LINUX_NTFS_COLLATE_H */
37