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