1 /*
2  *******************************************************************************
3  *
4  *   Copyright (C) 2003, International Business Machines
5  *   Corporation and others.  All Rights Reserved.
6  *
7  *******************************************************************************
8  *   file name:  nfsprep.h
9  *   encoding:   US-ASCII
10  *   tab size:   8 (not used)
11  *   indentation:4
12  *
13  *   created on: 2003jul11
14  *   created by: Ram Viswanadha
15  */
16 #ifndef _NFSPREP_H
17 #define _NFSPREP_H
18 
19 #include "unicode/utypes.h"
20 
21 #if !UCONFIG_NO_IDNA
22 
23 #include "unicode/ustring.h"
24 #include "unicode/usprep.h"
25 #include <stdlib.h>
26 #include <string.h>
27 
28 
29 /* this enum must be kept in syn with NFS4DataFileNames array in nfsprep.c */
30 enum NFS4ProfileState{
31     NFS4_CS_PREP_CS,
32     NFS4_CS_PREP_CI,
33     NFS4_CIS_PREP,
34     NFS4_MIXED_PREP_PREFIX,
35     NFS4_MIXED_PREP_SUFFIX
36 };
37 
38 typedef enum NFS4ProfileState NFS4ProfileState;
39 
40 /**
41  * Prepares the source UTF-8 string for use in file names and
42  * returns UTF-8 string on output.
43  * @param src
44  * @param srcLen
45  * @param dest
46  * @param destCapacity
47  * @param state
48  * @param parseError
49  * @param status
50  */
51 int32_t
52 nfs4_prepare(const char* src, int32_t srcLength,
53                   char* dest, int32_t destCapacity,
54                   NFS4ProfileState state,
55                   UParseError* parseError,
56                   UErrorCode*  status);
57 
58 /**
59  * @param dest
60  * @param destCapacity
61  * @param src
62  * @param srcLen
63  * @param state
64  * @param parseError
65  * @param status
66  */
67 int32_t
68 nfs4_mixed_prepare( const char* src, int32_t srcLength,
69                     char* dest, int32_t destCapacity,
70                     UParseError* parseError,
71                     UErrorCode*  status);
72 
73 /**
74  * @param dest
75  * @param destCapacity
76  * @param src
77  * @param srcLen
78  * @param state
79  * @param parseError
80  * @param status
81  */
82 int32_t
83 nfs4_cis_prepare(   const char* src, int32_t srcLength,
84                     char* dest, int32_t destCapacity,
85                     UParseError* parseError,
86                     UErrorCode*  status);
87 
88 /**
89  * @param dest
90  * @param destCapacity
91  * @param src
92  * @param srcLen
93  * @param state
94  * @param parseError
95  * @param status
96  */
97 int32_t
98 nfs4_cs_prepare(    const char* src, int32_t srcLength,
99                     char* dest, int32_t destCapacity,
100                     UBool isCaseSensitive,
101                     UParseError* parseError,
102                     UErrorCode*  status);
103 #endif
104 
105 #endif
106 /*
107  * Hey, Emacs, please set the following:
108  *
109  * Local Variables:
110  * indent-tabs-mode: nil
111  * End:
112  *
113  */
114