errors: Remove unused unix_to_werror()
[samba.git] / source4 / libcli / util / errormap.c
1 /* 
2  *  Unix SMB/CIFS implementation.
3  *  error mapping functions
4  *  Copyright (C) Andrew Tridgell 2001
5  *  Copyright (C) Andrew Bartlett 2001
6  *  Copyright (C) Tim Potter 2000
7  *  
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 3 of the License, or
11  *  (at your option) any later version.
12  *  
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *  
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, see <http://www.gnu.org/licenses/>.
20  */
21
22 #include "includes.h"
23
24 /* errmap NTSTATUS->Win32 */
25 static const struct {
26         NTSTATUS ntstatus;
27         WERROR werror;
28 } ntstatus_to_werror_map[] = {
29         {NT_STATUS(0x103), W_ERROR(0x3e5)},
30         {NT_STATUS(0x105), W_ERROR(0xea)},
31         {NT_STATUS(0x106), W_ERROR(0x514)},
32         {NT_STATUS(0x107), W_ERROR(0x515)},
33         {NT_STATUS(0x10c), W_ERROR(0x3fe)},
34         {NT_STATUS(0x10d), W_ERROR(0x516)},
35         {NT_STATUS(0x121), W_ERROR(0x2009)},
36         {NT_STATUS(0xc0000001), W_ERROR(0x1f)},
37         {NT_STATUS(0xc0000002), W_ERROR(0x1)},
38         {NT_STATUS(0xc0000003), W_ERROR(0x57)},
39         {NT_STATUS(0xc0000004), W_ERROR(0x18)},
40         {NT_STATUS(0xc0000005), W_ERROR(0x3e6)},
41         {NT_STATUS(0xc0000006), W_ERROR(0x3e7)},
42         {NT_STATUS(0xc0000007), W_ERROR(0x5ae)},
43         {NT_STATUS(0xc0000008), W_ERROR(0x6)},
44         {NT_STATUS(0xc0000009), W_ERROR(0x3e9)},
45         {NT_STATUS(0xc000000a), W_ERROR(0xc1)},
46         {NT_STATUS(0xc000000b), W_ERROR(0x57)},
47         {NT_STATUS(0xc000000d), W_ERROR(0x57)},
48         {NT_STATUS(0xc000000e), W_ERROR(0x2)},
49         {NT_STATUS(0xc000000f), W_ERROR(0x2)},
50         {NT_STATUS(0xc0000010), W_ERROR(0x1)},
51         {NT_STATUS(0xc0000011), W_ERROR(0x26)},
52         {NT_STATUS(0xc0000012), W_ERROR(0x22)},
53         {NT_STATUS(0xc0000013), W_ERROR(0x15)},
54         {NT_STATUS(0xc0000014), W_ERROR(0x6f9)},
55         {NT_STATUS(0xc0000015), W_ERROR(0x1b)},
56         {NT_STATUS(0xc0000016), W_ERROR(0xea)},
57         {NT_STATUS(0xc0000017), W_ERROR(0x8)},
58         {NT_STATUS(0xc0000018), W_ERROR(0x1e7)},
59         {NT_STATUS(0xc0000019), W_ERROR(0x1e7)},
60         {NT_STATUS(0xc000001a), W_ERROR(0x57)},
61         {NT_STATUS(0xc000001b), W_ERROR(0x57)},
62         {NT_STATUS(0xc000001c), W_ERROR(0x1)},
63         {NT_STATUS(0xc000001d), W_ERROR(0xc000001d)},
64         {NT_STATUS(0xc000001e), W_ERROR(0x5)},
65         {NT_STATUS(0xc000001f), W_ERROR(0x5)},
66         {NT_STATUS(0xc0000020), W_ERROR(0xc1)},
67         {NT_STATUS(0xc0000021), W_ERROR(0x5)},
68         {NT_STATUS(0xc0000022), W_ERROR(0x5)},
69         {NT_STATUS(0xc0000023), W_ERROR(0x7a)},
70         {NT_STATUS(0xc0000024), W_ERROR(0x6)},
71         {NT_STATUS(0xc0000025), W_ERROR(0xc0000025)},
72         {NT_STATUS(0xc0000026), W_ERROR(0xc0000026)},
73         {NT_STATUS(0xc000002a), W_ERROR(0x9e)},
74         {NT_STATUS(0xc000002b), W_ERROR(0xc000002b)},
75         {NT_STATUS(0xc000002c), W_ERROR(0x1e7)},
76         {NT_STATUS(0xc000002d), W_ERROR(0x1e7)},
77         {NT_STATUS(0xc0000030), W_ERROR(0x57)},
78         {NT_STATUS(0xc0000032), W_ERROR(0x571)},
79         {NT_STATUS(0xc0000033), W_ERROR(0x7b)},
80         {NT_STATUS(0xc0000034), W_ERROR(0x2)},
81         {NT_STATUS(0xc0000035), W_ERROR(0xb7)},
82         {NT_STATUS(0xc0000037), W_ERROR(0x6)},
83         {NT_STATUS(0xc0000039), W_ERROR(0xa1)},
84         {NT_STATUS(0xc000003a), W_ERROR(0x3)},
85         {NT_STATUS(0xc000003b), W_ERROR(0xa1)},
86         {NT_STATUS(0xc000003c), W_ERROR(0x45d)},
87         {NT_STATUS(0xc000003d), W_ERROR(0x45d)},
88         {NT_STATUS(0xc000003e), W_ERROR(0x17)},
89         {NT_STATUS(0xc000003f), W_ERROR(0x17)},
90         {NT_STATUS(0xc0000040), W_ERROR(0x8)},
91         {NT_STATUS(0xc0000041), W_ERROR(0x5)},
92         {NT_STATUS(0xc0000042), W_ERROR(0x6)},
93         {NT_STATUS(0xc0000043), W_ERROR(0x20)},
94         {NT_STATUS(0xc0000044), W_ERROR(0x718)},
95         {NT_STATUS(0xc0000045), W_ERROR(0x57)},
96         {NT_STATUS(0xc0000046), W_ERROR(0x120)},
97         {NT_STATUS(0xc0000047), W_ERROR(0x12a)},
98         {NT_STATUS(0xc0000048), W_ERROR(0x57)},
99         {NT_STATUS(0xc0000049), W_ERROR(0x57)},
100         {NT_STATUS(0xc000004a), W_ERROR(0x9c)},
101         {NT_STATUS(0xc000004b), W_ERROR(0x5)},
102         {NT_STATUS(0xc000004c), W_ERROR(0x57)},
103         {NT_STATUS(0xc000004d), W_ERROR(0x57)},
104         {NT_STATUS(0xc000004e), W_ERROR(0x57)},
105         {NT_STATUS(0xc000004f), W_ERROR(0x11a)},
106         {NT_STATUS(0xc0000050), W_ERROR(0xff)},
107         {NT_STATUS(0xc0000051), W_ERROR(0x570)},
108         {NT_STATUS(0xc0000052), W_ERROR(0x570)},
109         {NT_STATUS(0xc0000053), W_ERROR(0x570)},
110         {NT_STATUS(0xc0000054), W_ERROR(0x21)},
111         {NT_STATUS(0xc0000055), W_ERROR(0x21)},
112         {NT_STATUS(0xc0000056), W_ERROR(0x5)},
113         {NT_STATUS(0xc0000057), W_ERROR(0x32)},
114         {NT_STATUS(0xc0000058), W_ERROR(0x519)},
115         {NT_STATUS(0xc0000059), W_ERROR(0x51a)},
116         {NT_STATUS(0xc000005a), W_ERROR(0x51b)},
117         {NT_STATUS(0xc000005b), W_ERROR(0x51c)},
118         {NT_STATUS(0xc000005c), W_ERROR(0x51d)},
119         {NT_STATUS(0xc000005d), W_ERROR(0x51e)},
120         {NT_STATUS(0xc000005e), W_ERROR(0x51f)},
121         {NT_STATUS(0xc000005f), W_ERROR(0x520)},
122         {NT_STATUS(0xc0000060), W_ERROR(0x521)},
123         {NT_STATUS(0xc0000061), W_ERROR(0x522)},
124         {NT_STATUS(0xc0000062), W_ERROR(0x523)},
125         {NT_STATUS(0xc0000063), W_ERROR(0x524)},
126         {NT_STATUS(0xc0000064), W_ERROR(0x525)},
127         {NT_STATUS(0xc0000065), W_ERROR(0x526)},
128         {NT_STATUS(0xc0000066), W_ERROR(0x527)},
129         {NT_STATUS(0xc0000067), W_ERROR(0x528)},
130         {NT_STATUS(0xc0000068), W_ERROR(0x529)},
131         {NT_STATUS(0xc0000069), W_ERROR(0x52a)},
132         {NT_STATUS(0xc000006a), W_ERROR(0x56)},
133         {NT_STATUS(0xc000006b), W_ERROR(0x52c)},
134         {NT_STATUS(0xc000006c), W_ERROR(0x52d)},
135         {NT_STATUS(0xc000006d), W_ERROR(0x52e)},
136         {NT_STATUS(0xc000006e), W_ERROR(0x52f)},
137         {NT_STATUS(0xc000006f), W_ERROR(0x530)},
138         {NT_STATUS(0xc0000070), W_ERROR(0x531)},
139         {NT_STATUS(0xc0000071), W_ERROR(0x532)},
140         {NT_STATUS(0xc0000072), W_ERROR(0x533)},
141         {NT_STATUS(0xc0000073), W_ERROR(0x534)},
142         {NT_STATUS(0xc0000074), W_ERROR(0x535)},
143         {NT_STATUS(0xc0000075), W_ERROR(0x536)},
144         {NT_STATUS(0xc0000076), W_ERROR(0x537)},
145         {NT_STATUS(0xc0000077), W_ERROR(0x538)},
146         {NT_STATUS(0xc0000078), W_ERROR(0x539)},
147         {NT_STATUS(0xc0000079), W_ERROR(0x53a)},
148         {NT_STATUS(0xc000007a), W_ERROR(0x7f)},
149         {NT_STATUS(0xc000007b), W_ERROR(0xc1)},
150         {NT_STATUS(0xc000007c), W_ERROR(0x3f0)},
151         {NT_STATUS(0xc000007d), W_ERROR(0x53c)},
152         {NT_STATUS(0xc000007e), W_ERROR(0x9e)},
153         {NT_STATUS(0xc000007f), W_ERROR(0x70)},
154         {NT_STATUS(0xc0000080), W_ERROR(0x53d)},
155         {NT_STATUS(0xc0000081), W_ERROR(0x53e)},
156         {NT_STATUS(0xc0000082), W_ERROR(0x44)},
157         {NT_STATUS(0xc0000083), W_ERROR(0x103)},
158         {NT_STATUS(0xc0000084), W_ERROR(0x53f)},
159         {NT_STATUS(0xc0000085), W_ERROR(0x103)},
160         {NT_STATUS(0xc0000086), W_ERROR(0x9a)},
161         {NT_STATUS(0xc0000087), W_ERROR(0xe)},
162         {NT_STATUS(0xc0000088), W_ERROR(0x1e7)},
163         {NT_STATUS(0xc0000089), W_ERROR(0x714)},
164         {NT_STATUS(0xc000008a), W_ERROR(0x715)},
165         {NT_STATUS(0xc000008b), W_ERROR(0x716)},
166         {NT_STATUS(0xc000008c), W_ERROR(0xc000008c)},
167         {NT_STATUS(0xc000008d), W_ERROR(0xc000008d)},
168         {NT_STATUS(0xc000008e), W_ERROR(0xc000008e)},
169         {NT_STATUS(0xc000008f), W_ERROR(0xc000008f)},
170         {NT_STATUS(0xc0000090), W_ERROR(0xc0000090)},
171         {NT_STATUS(0xc0000091), W_ERROR(0xc0000091)},
172         {NT_STATUS(0xc0000092), W_ERROR(0xc0000092)},
173         {NT_STATUS(0xc0000093), W_ERROR(0xc0000093)},
174         {NT_STATUS(0xc0000094), W_ERROR(0xc0000094)},
175         {NT_STATUS(0xc0000095), W_ERROR(0x216)},
176         {NT_STATUS(0xc0000096), W_ERROR(0xc0000096)},
177         {NT_STATUS(0xc0000097), W_ERROR(0x8)},
178         {NT_STATUS(0xc0000098), W_ERROR(0x3ee)},
179         {NT_STATUS(0xc0000099), W_ERROR(0x540)},
180         {NT_STATUS(0xc000009a), W_ERROR(0x5aa)},
181         {NT_STATUS(0xc000009b), W_ERROR(0x3)},
182         {NT_STATUS(0xc000009c), W_ERROR(0x17)},
183         {NT_STATUS(0xc000009d), W_ERROR(0x48f)},
184         {NT_STATUS(0xc000009e), W_ERROR(0x15)},
185         {NT_STATUS(0xc000009f), W_ERROR(0x1e7)},
186         {NT_STATUS(0xc00000a0), W_ERROR(0x1e7)},
187         {NT_STATUS(0xc00000a1), W_ERROR(0x5ad)},
188         {NT_STATUS(0xc00000a2), W_ERROR(0x13)},
189         {NT_STATUS(0xc00000a3), W_ERROR(0x15)},
190         {NT_STATUS(0xc00000a4), W_ERROR(0x541)},
191         {NT_STATUS(0xc00000a5), W_ERROR(0x542)},
192         {NT_STATUS(0xc00000a6), W_ERROR(0x543)},
193         {NT_STATUS(0xc00000a7), W_ERROR(0x544)},
194         {NT_STATUS(0xc00000a8), W_ERROR(0x545)},
195         {NT_STATUS(0xc00000a9), W_ERROR(0x57)},
196         {NT_STATUS(0xc00000ab), W_ERROR(0xe7)},
197         {NT_STATUS(0xc00000ac), W_ERROR(0xe7)},
198         {NT_STATUS(0xc00000ad), W_ERROR(0xe6)},
199         {NT_STATUS(0xc00000ae), W_ERROR(0xe7)},
200         {NT_STATUS(0xc00000af), W_ERROR(0x1)},
201         {NT_STATUS(0xc00000b0), W_ERROR(0xe9)},
202         {NT_STATUS(0xc00000b1), W_ERROR(0xe8)},
203         {NT_STATUS(0xc00000b2), W_ERROR(0x217)},
204         {NT_STATUS(0xc00000b3), W_ERROR(0x218)},
205         {NT_STATUS(0xc00000b4), W_ERROR(0xe6)},
206         {NT_STATUS(0xc00000b5), W_ERROR(0x79)},
207         {NT_STATUS(0xc00000b6), W_ERROR(0x26)},
208         {NT_STATUS(0xc00000ba), W_ERROR(0x5)},
209         {NT_STATUS(0xc00000bb), W_ERROR(0x32)},
210         {NT_STATUS(0xc00000bc), W_ERROR(0x33)},
211         {NT_STATUS(0xc00000bd), W_ERROR(0x34)},
212         {NT_STATUS(0xc00000be), W_ERROR(0x35)},
213         {NT_STATUS(0xc00000bf), W_ERROR(0x36)},
214         {NT_STATUS(0xc00000c0), W_ERROR(0x37)},
215         {NT_STATUS(0xc00000c1), W_ERROR(0x38)},
216         {NT_STATUS(0xc00000c2), W_ERROR(0x39)},
217         {NT_STATUS(0xc00000c3), W_ERROR(0x3a)},
218         {NT_STATUS(0xc00000c4), W_ERROR(0x3b)},
219         {NT_STATUS(0xc00000c5), W_ERROR(0x3c)},
220         {NT_STATUS(0xc00000c6), W_ERROR(0x3d)},
221         {NT_STATUS(0xc00000c7), W_ERROR(0x3e)},
222         {NT_STATUS(0xc00000c8), W_ERROR(0x3f)},
223         {NT_STATUS(0xc00000c9), W_ERROR(0x40)},
224         {NT_STATUS(0xc00000ca), W_ERROR(0x41)},
225         {NT_STATUS(0xc00000cb), W_ERROR(0x42)},
226         {NT_STATUS(0xc00000cc), W_ERROR(0x43)},
227         {NT_STATUS(0xc00000cd), W_ERROR(0x44)},
228         {NT_STATUS(0xc00000ce), W_ERROR(0x45)},
229         {NT_STATUS(0xc00000cf), W_ERROR(0x46)},
230         {NT_STATUS(0xc00000d0), W_ERROR(0x47)},
231         {NT_STATUS(0xc00000d1), W_ERROR(0x48)},
232         {NT_STATUS(0xc00000d2), W_ERROR(0x58)},
233         {NT_STATUS(0xc00000d4), W_ERROR(0x11)},
234         {NT_STATUS(0xc00000d5), W_ERROR(0x5)},
235         {NT_STATUS(0xc00000d6), W_ERROR(0xf0)},
236         {NT_STATUS(0xc00000d7), W_ERROR(0x546)},
237         {NT_STATUS(0xc00000d9), W_ERROR(0xe8)},
238         {NT_STATUS(0xc00000da), W_ERROR(0x547)},
239         {NT_STATUS(0xc00000dc), W_ERROR(0x548)},
240         {NT_STATUS(0xc00000dd), W_ERROR(0x549)},
241         {NT_STATUS(0xc00000de), W_ERROR(0x54a)},
242         {NT_STATUS(0xc00000df), W_ERROR(0x54b)},
243         {NT_STATUS(0xc00000e0), W_ERROR(0x54c)},
244         {NT_STATUS(0xc00000e1), W_ERROR(0x54d)},
245         {NT_STATUS(0xc00000e2), W_ERROR(0x12c)},
246         {NT_STATUS(0xc00000e3), W_ERROR(0x12d)},
247         {NT_STATUS(0xc00000e4), W_ERROR(0x54e)},
248         {NT_STATUS(0xc00000e5), W_ERROR(0x54f)},
249         {NT_STATUS(0xc00000e6), W_ERROR(0x550)},
250         {NT_STATUS(0xc00000e7), W_ERROR(0x551)},
251         {NT_STATUS(0xc00000e8), W_ERROR(0x6f8)},
252         {NT_STATUS(0xc00000ed), W_ERROR(0x552)},
253         {NT_STATUS(0xc00000ee), W_ERROR(0x553)},
254         {NT_STATUS(0xc00000ef), W_ERROR(0x57)},
255         {NT_STATUS(0xc00000f0), W_ERROR(0x57)},
256         {NT_STATUS(0xc00000f1), W_ERROR(0x57)},
257         {NT_STATUS(0xc00000f2), W_ERROR(0x57)},
258         {NT_STATUS(0xc00000f3), W_ERROR(0x57)},
259         {NT_STATUS(0xc00000f4), W_ERROR(0x57)},
260         {NT_STATUS(0xc00000f5), W_ERROR(0x57)},
261         {NT_STATUS(0xc00000f6), W_ERROR(0x57)},
262         {NT_STATUS(0xc00000f7), W_ERROR(0x57)},
263         {NT_STATUS(0xc00000f8), W_ERROR(0x57)},
264         {NT_STATUS(0xc00000f9), W_ERROR(0x57)},
265         {NT_STATUS(0xc00000fa), W_ERROR(0x57)},
266         {NT_STATUS(0xc00000fb), W_ERROR(0x3)},
267         {NT_STATUS(0xc00000fd), W_ERROR(0x3e9)},
268         {NT_STATUS(0xc00000fe), W_ERROR(0x554)},
269         {NT_STATUS(0xc0000100), W_ERROR(0xcb)},
270         {NT_STATUS(0xc0000101), W_ERROR(0x91)},
271         {NT_STATUS(0xc0000102), W_ERROR(0x570)},
272         {NT_STATUS(0xc0000103), W_ERROR(0x10b)},
273         {NT_STATUS(0xc0000104), W_ERROR(0x555)},
274         {NT_STATUS(0xc0000105), W_ERROR(0x556)},
275         {NT_STATUS(0xc0000106), W_ERROR(0xce)},
276         {NT_STATUS(0xc0000107), W_ERROR(0x961)},
277         {NT_STATUS(0xc0000108), W_ERROR(0x964)},
278         {NT_STATUS(0xc000010a), W_ERROR(0x5)},
279         {NT_STATUS(0xc000010b), W_ERROR(0x557)},
280         {NT_STATUS(0xc000010d), W_ERROR(0x558)},
281         {NT_STATUS(0xc000010e), W_ERROR(0x420)},
282         {NT_STATUS(0xc0000117), W_ERROR(0x5a4)},
283         {NT_STATUS(0xc000011b), W_ERROR(0xc1)},
284         {NT_STATUS(0xc000011c), W_ERROR(0x559)},
285         {NT_STATUS(0xc000011d), W_ERROR(0x55a)},
286         {NT_STATUS(0xc000011e), W_ERROR(0x3ee)},
287         {NT_STATUS(0xc000011f), W_ERROR(0x4)},
288         {NT_STATUS(0xc0000120), W_ERROR(0x3e3)},
289         {NT_STATUS(0xc0000121), W_ERROR(0x5)},
290         {NT_STATUS(0xc0000122), W_ERROR(0x4ba)},
291         {NT_STATUS(0xc0000123), W_ERROR(0x5)},
292         {NT_STATUS(0xc0000124), W_ERROR(0x55b)},
293         {NT_STATUS(0xc0000125), W_ERROR(0x55c)},
294         {NT_STATUS(0xc0000126), W_ERROR(0x55d)},
295         {NT_STATUS(0xc0000127), W_ERROR(0x55e)},
296         {NT_STATUS(0xc0000128), W_ERROR(0x6)},
297         {NT_STATUS(0xc000012b), W_ERROR(0x55f)},
298         {NT_STATUS(0xc000012d), W_ERROR(0x5af)},
299         {NT_STATUS(0xc000012e), W_ERROR(0xc1)},
300         {NT_STATUS(0xc000012f), W_ERROR(0xc1)},
301         {NT_STATUS(0xc0000130), W_ERROR(0xc1)},
302         {NT_STATUS(0xc0000131), W_ERROR(0xc1)},
303         {NT_STATUS(0xc0000133), W_ERROR(0x576)},
304         {NT_STATUS(0xc0000135), W_ERROR(0x7e)},
305         {NT_STATUS(0xc0000138), W_ERROR(0xb6)},
306         {NT_STATUS(0xc0000139), W_ERROR(0x7f)},
307         {NT_STATUS(0xc000013b), W_ERROR(0x40)},
308         {NT_STATUS(0xc000013c), W_ERROR(0x40)},
309         {NT_STATUS(0xc000013d), W_ERROR(0x33)},
310         {NT_STATUS(0xc000013e), W_ERROR(0x3b)},
311         {NT_STATUS(0xc000013f), W_ERROR(0x3b)},
312         {NT_STATUS(0xc0000140), W_ERROR(0x3b)},
313         {NT_STATUS(0xc0000141), W_ERROR(0x3b)},
314         {NT_STATUS(0xc0000142), W_ERROR(0x45a)},
315         {NT_STATUS(0xc0000148), W_ERROR(0x7c)},
316         {NT_STATUS(0xc0000149), W_ERROR(0x56)},
317         {NT_STATUS(0xc000014b), W_ERROR(0x6d)},
318         {NT_STATUS(0xc000014c), W_ERROR(0x3f1)},
319         {NT_STATUS(0xc000014d), W_ERROR(0x3f8)},
320         {NT_STATUS(0xc000014f), W_ERROR(0x3ed)},
321         {NT_STATUS(0xc0000150), W_ERROR(0x45e)},
322         {NT_STATUS(0xc0000151), W_ERROR(0x560)},
323         {NT_STATUS(0xc0000152), W_ERROR(0x561)},
324         {NT_STATUS(0xc0000153), W_ERROR(0x562)},
325         {NT_STATUS(0xc0000154), W_ERROR(0x563)},
326         {NT_STATUS(0xc0000155), W_ERROR(0x564)},
327         {NT_STATUS(0xc0000156), W_ERROR(0x565)},
328         {NT_STATUS(0xc0000157), W_ERROR(0x566)},
329         {NT_STATUS(0xc0000158), W_ERROR(0x567)},
330         {NT_STATUS(0xc0000159), W_ERROR(0x3ef)},
331         {NT_STATUS(0xc000015a), W_ERROR(0x568)},
332         {NT_STATUS(0xc000015b), W_ERROR(0x569)},
333         {NT_STATUS(0xc000015c), W_ERROR(0x3f9)},
334         {NT_STATUS(0xc000015d), W_ERROR(0x56a)},
335         {NT_STATUS(0xc000015f), W_ERROR(0x45d)},
336         {NT_STATUS(0xc0000162), W_ERROR(0x459)},
337         {NT_STATUS(0xc0000165), W_ERROR(0x462)},
338         {NT_STATUS(0xc0000166), W_ERROR(0x463)},
339         {NT_STATUS(0xc0000167), W_ERROR(0x464)},
340         {NT_STATUS(0xc0000168), W_ERROR(0x465)},
341         {NT_STATUS(0xc0000169), W_ERROR(0x466)},
342         {NT_STATUS(0xc000016a), W_ERROR(0x467)},
343         {NT_STATUS(0xc000016b), W_ERROR(0x468)},
344         {NT_STATUS(0xc000016c), W_ERROR(0x45f)},
345         {NT_STATUS(0xc000016d), W_ERROR(0x45d)},
346         {NT_STATUS(0xc0000172), W_ERROR(0x451)},
347         {NT_STATUS(0xc0000173), W_ERROR(0x452)},
348         {NT_STATUS(0xc0000174), W_ERROR(0x453)},
349         {NT_STATUS(0xc0000175), W_ERROR(0x454)},
350         {NT_STATUS(0xc0000176), W_ERROR(0x455)},
351         {NT_STATUS(0xc0000177), W_ERROR(0x469)},
352         {NT_STATUS(0xc0000178), W_ERROR(0x458)},
353         {NT_STATUS(0xc000017a), W_ERROR(0x56b)},
354         {NT_STATUS(0xc000017b), W_ERROR(0x56c)},
355         {NT_STATUS(0xc000017c), W_ERROR(0x3fa)},
356         {NT_STATUS(0xc000017d), W_ERROR(0x3fb)},
357         {NT_STATUS(0xc000017e), W_ERROR(0x56d)},
358         {NT_STATUS(0xc000017f), W_ERROR(0x56e)},
359         {NT_STATUS(0xc0000180), W_ERROR(0x3fc)},
360         {NT_STATUS(0xc0000181), W_ERROR(0x3fd)},
361         {NT_STATUS(0xc0000182), W_ERROR(0x57)},
362         {NT_STATUS(0xc0000183), W_ERROR(0x45d)},
363         {NT_STATUS(0xc0000184), W_ERROR(0x16)},
364         {NT_STATUS(0xc0000185), W_ERROR(0x45d)},
365         {NT_STATUS(0xc0000186), W_ERROR(0x45d)},
366         {NT_STATUS(0xc0000188), W_ERROR(0x5de)},
367         {NT_STATUS(0xc0000189), W_ERROR(0x13)},
368         {NT_STATUS(0xc000018a), W_ERROR(0x6fa)},
369         {NT_STATUS(0xc000018b), W_ERROR(0x6fb)},
370         {NT_STATUS(0xc000018c), W_ERROR(0x6fc)},
371         {NT_STATUS(0xc000018d), W_ERROR(0x6fd)},
372         {NT_STATUS(0xc000018e), W_ERROR(0x5dc)},
373         {NT_STATUS(0xc000018f), W_ERROR(0x5dd)},
374         {NT_STATUS(0xc0000190), W_ERROR(0x6fe)},
375         {NT_STATUS(0xc0000192), W_ERROR(0x700)},
376         {NT_STATUS(0xc0000193), W_ERROR(0x701)},
377         {NT_STATUS(0xc0000194), W_ERROR(0x46b)},
378         {NT_STATUS(0xc0000195), W_ERROR(0x4c3)},
379         {NT_STATUS(0xc0000196), W_ERROR(0x4c4)},
380         {NT_STATUS(0xc0000197), W_ERROR(0x5df)},
381         {NT_STATUS(0xc0000198), W_ERROR(0x70f)},
382         {NT_STATUS(0xc0000199), W_ERROR(0x710)},
383         {NT_STATUS(0xc000019a), W_ERROR(0x711)},
384         {NT_STATUS(0xc000019b), W_ERROR(0x712)},
385         {NT_STATUS(0xc0000202), W_ERROR(0x572)},
386         {NT_STATUS(0xc0000203), W_ERROR(0x3b)},
387         {NT_STATUS(0xc0000204), W_ERROR(0x717)},
388         {NT_STATUS(0xc0000205), W_ERROR(0x46a)},
389         {NT_STATUS(0xc0000206), W_ERROR(0x6f8)},
390         {NT_STATUS(0xc0000207), W_ERROR(0x4be)},
391         {NT_STATUS(0xc0000208), W_ERROR(0x4be)},
392         {NT_STATUS(0xc0000209), W_ERROR(0x44)},
393         {NT_STATUS(0xc000020a), W_ERROR(0x34)},
394         {NT_STATUS(0xc000020b), W_ERROR(0x40)},
395         {NT_STATUS(0xc000020c), W_ERROR(0x40)},
396         {NT_STATUS(0xc000020d), W_ERROR(0x40)},
397         {NT_STATUS(0xc000020e), W_ERROR(0x44)},
398         {NT_STATUS(0xc000020f), W_ERROR(0x3b)},
399         {NT_STATUS(0xc0000210), W_ERROR(0x3b)},
400         {NT_STATUS(0xc0000211), W_ERROR(0x3b)},
401         {NT_STATUS(0xc0000212), W_ERROR(0x3b)},
402         {NT_STATUS(0xc0000213), W_ERROR(0x3b)},
403         {NT_STATUS(0xc0000214), W_ERROR(0x3b)},
404         {NT_STATUS(0xc0000215), W_ERROR(0x3b)},
405         {NT_STATUS(0xc0000216), W_ERROR(0x32)},
406         {NT_STATUS(0xc0000217), W_ERROR(0x32)},
407         {NT_STATUS(0xc000021c), W_ERROR(0x17e6)},
408         {NT_STATUS(0xc0000220), W_ERROR(0x46c)},
409         {NT_STATUS(0xc0000221), W_ERROR(0xc1)},
410         {NT_STATUS(0xc0000224), W_ERROR(0x773)},
411         {NT_STATUS(0xc0000225), W_ERROR(0x490)},
412         {NT_STATUS(0xc000022a), W_ERROR(0xc000022a)},
413         {NT_STATUS(0xc000022b), W_ERROR(0xc000022b)},
414         {NT_STATUS(0xc000022d), W_ERROR(0x4d5)},
415         {NT_STATUS(0xc0000230), W_ERROR(0x492)},
416         {NT_STATUS(0xc0000233), W_ERROR(0x774)},
417         {NT_STATUS(0xc0000234), W_ERROR(0x775)},
418         {NT_STATUS(0xc0000235), W_ERROR(0x6)},
419         {NT_STATUS(0xc0000236), W_ERROR(0x4c9)},
420         {NT_STATUS(0xc0000237), W_ERROR(0x4ca)},
421         {NT_STATUS(0xc0000238), W_ERROR(0x4cb)},
422         {NT_STATUS(0xc0000239), W_ERROR(0x4cc)},
423         {NT_STATUS(0xc000023a), W_ERROR(0x4cd)},
424         {NT_STATUS(0xc000023b), W_ERROR(0x4ce)},
425         {NT_STATUS(0xc000023c), W_ERROR(0x4cf)},
426         {NT_STATUS(0xc000023d), W_ERROR(0x4d0)},
427         {NT_STATUS(0xc000023e), W_ERROR(0x4d1)},
428         {NT_STATUS(0xc000023f), W_ERROR(0x4d2)},
429         {NT_STATUS(0xc0000240), W_ERROR(0x4d3)},
430         {NT_STATUS(0xc0000241), W_ERROR(0x4d4)},
431         {NT_STATUS(0xc0000243), W_ERROR(0x4c8)},
432         {NT_STATUS(0xc0000246), W_ERROR(0x4d6)},
433         {NT_STATUS(0xc0000247), W_ERROR(0x4d7)},
434         {NT_STATUS(0xc0000248), W_ERROR(0x4d8)},
435         {NT_STATUS(0xc0000249), W_ERROR(0xc1)},
436         {NT_STATUS(0xc0000253), W_ERROR(0x54f)},
437         {NT_STATUS(0xc0000257), W_ERROR(0x4d0)},
438         {NT_STATUS(0xc0000259), W_ERROR(0x573)},
439         {NT_STATUS(0xc000025e), W_ERROR(0x422)},
440         {NT_STATUS(0xc0000262), W_ERROR(0xb6)},
441         {NT_STATUS(0xc0000263), W_ERROR(0x7f)},
442         {NT_STATUS(0xc0000264), W_ERROR(0x120)},
443         {NT_STATUS(0xc0000265), W_ERROR(0x476)},
444         {NT_STATUS(0xc0000267), W_ERROR(0x10fe)},
445         {NT_STATUS(0xc000026c), W_ERROR(0x7d1)},
446         {NT_STATUS(0xc000026d), W_ERROR(0x4b1)},
447         {NT_STATUS(0xc000026e), W_ERROR(0x15)},
448         {NT_STATUS(0xc0000272), W_ERROR(0x491)},
449         {NT_STATUS(0xc0000275), W_ERROR(0x1126)},
450         {NT_STATUS(0xc0000276), W_ERROR(0x1129)},
451         {NT_STATUS(0xc0000277), W_ERROR(0x112a)},
452         {NT_STATUS(0xc0000278), W_ERROR(0x1128)},
453         {NT_STATUS(0xc0000279), W_ERROR(0x780)},
454         {NT_STATUS(0xc0000280), W_ERROR(0x781)},
455         {NT_STATUS(0xc0000281), W_ERROR(0xa1)},
456         {NT_STATUS(0xc0000283), W_ERROR(0x488)},
457         {NT_STATUS(0xc0000284), W_ERROR(0x489)},
458         {NT_STATUS(0xc0000285), W_ERROR(0x48a)},
459         {NT_STATUS(0xc0000286), W_ERROR(0x48b)},
460         {NT_STATUS(0xc0000287), W_ERROR(0x48c)},
461         {NT_STATUS(0xc000028a), W_ERROR(0x5)},
462         {NT_STATUS(0xc000028b), W_ERROR(0x5)},
463         {NT_STATUS(0xc000028d), W_ERROR(0x5)},
464         {NT_STATUS(0xc000028e), W_ERROR(0x5)},
465         {NT_STATUS(0xc000028f), W_ERROR(0x5)},
466         {NT_STATUS(0xc0000290), W_ERROR(0x5)},
467         {NT_STATUS(0xc0000291), W_ERROR(0x1777)},
468         {NT_STATUS(0xc0000292), W_ERROR(0x1778)},
469         {NT_STATUS(0xc0000293), W_ERROR(0x1772)},
470         {NT_STATUS(0xc0000295), W_ERROR(0x1068)},
471         {NT_STATUS(0xc0000296), W_ERROR(0x1069)},
472         {NT_STATUS(0xc0000297), W_ERROR(0x106a)},
473         {NT_STATUS(0xc0000298), W_ERROR(0x106b)},
474         {NT_STATUS(0xc0000299), W_ERROR(0x201a)},
475         {NT_STATUS(0xc000029a), W_ERROR(0x201b)},
476         {NT_STATUS(0xc000029b), W_ERROR(0x201c)},
477         {NT_STATUS(0xc000029c), W_ERROR(0x1)},
478         {NT_STATUS(0xc000029d), W_ERROR(0x10ff)},
479         {NT_STATUS(0xc000029e), W_ERROR(0x1100)},
480         {NT_STATUS(0xc000029f), W_ERROR(0x494)},
481         {NT_STATUS(0xc00002a1), W_ERROR(0x200a)},
482         {NT_STATUS(0xc00002a2), W_ERROR(0x200b)},
483         {NT_STATUS(0xc00002a3), W_ERROR(0x200c)},
484         {NT_STATUS(0xc00002a4), W_ERROR(0x200d)},
485         {NT_STATUS(0xc00002a5), W_ERROR(0x200e)},
486         {NT_STATUS(0xc00002a6), W_ERROR(0x200f)},
487         {NT_STATUS(0xc00002a7), W_ERROR(0x2010)},
488         {NT_STATUS(0xc00002a8), W_ERROR(0x2011)},
489         {NT_STATUS(0xc00002a9), W_ERROR(0x2012)},
490         {NT_STATUS(0xc00002aa), W_ERROR(0x2013)},
491         {NT_STATUS(0xc00002ab), W_ERROR(0x2014)},
492         {NT_STATUS(0xc00002ac), W_ERROR(0x2015)},
493         {NT_STATUS(0xc00002ad), W_ERROR(0x2016)},
494         {NT_STATUS(0xc00002ae), W_ERROR(0x2017)},
495         {NT_STATUS(0xc00002af), W_ERROR(0x2018)},
496         {NT_STATUS(0xc00002b0), W_ERROR(0x2019)},
497         {NT_STATUS(0xc00002b1), W_ERROR(0x211e)},
498         {NT_STATUS(0xc00002b2), W_ERROR(0x1127)},
499         {NT_STATUS(0xc00002b6), W_ERROR(0x651)},
500         {NT_STATUS(0xc00002b7), W_ERROR(0x49a)},
501         {NT_STATUS(0xc00002b8), W_ERROR(0x49b)},
502         {NT_STATUS(0xc00002c1), W_ERROR(0x2024)},
503         {NT_STATUS(0xc00002c3), W_ERROR(0x575)},
504         {NT_STATUS(0xc00002c5), W_ERROR(0x3e6)},
505         {NT_STATUS(0xc00002c6), W_ERROR(0x1075)},
506         {NT_STATUS(0xc00002c7), W_ERROR(0x1076)},
507         {NT_STATUS(0xc00002ca), W_ERROR(0x10e8)},
508         {NT_STATUS(0xc00002cb), W_ERROR(0x2138)},
509         {NT_STATUS(0xc00002cc), W_ERROR(0x4e3)},
510         {NT_STATUS(0xc00002cd), W_ERROR(0x2139)},
511         {NT_STATUS(0xc00002cf), W_ERROR(0x49d)},
512         {NT_STATUS(0xc00002d0), W_ERROR(0x213a)},
513         {NT_STATUS(0xc00002d4), W_ERROR(0x2141)},
514         {NT_STATUS(0xc00002d5), W_ERROR(0x2142)},
515         {NT_STATUS(0xc00002d6), W_ERROR(0x2143)},
516         {NT_STATUS(0xc00002d7), W_ERROR(0x2144)},
517         {NT_STATUS(0xc00002d8), W_ERROR(0x2145)},
518         {NT_STATUS(0xc00002d9), W_ERROR(0x2146)},
519         {NT_STATUS(0xc00002da), W_ERROR(0x2147)},
520         {NT_STATUS(0xc00002db), W_ERROR(0x2148)},
521         {NT_STATUS(0xc00002dc), W_ERROR(0x2149)},
522         {NT_STATUS(0xc00002dd), W_ERROR(0x32)},
523         {NT_STATUS(0xc00002df), W_ERROR(0x2151)},
524         {NT_STATUS(0xc00002e0), W_ERROR(0x2152)},
525         {NT_STATUS(0xc00002e1), W_ERROR(0x2153)},
526         {NT_STATUS(0xc00002e2), W_ERROR(0x2154)},
527         {NT_STATUS(0xc00002e3), W_ERROR(0x215d)},
528         {NT_STATUS(0xc00002e4), W_ERROR(0x2163)},
529         {NT_STATUS(0xc00002e5), W_ERROR(0x2164)},
530         {NT_STATUS(0xc00002e6), W_ERROR(0x2165)},
531         {NT_STATUS(0xc00002e7), W_ERROR(0x216d)},
532         {NT_STATUS(0xc00002fe), W_ERROR(0x45b)},
533         {NT_STATUS(0xc00002ff), W_ERROR(0x4e7)},
534         {NT_STATUS(0xc0000300), W_ERROR(0x4e6)},
535         {NT_STATUS(0x80000001), W_ERROR(0x80000001)},
536         {NT_STATUS(0x80000002), W_ERROR(0x3e6)},
537         {NT_STATUS(0x80000003), W_ERROR(0x80000003)},
538         {NT_STATUS(0x80000004), W_ERROR(0x80000004)},
539         {NT_STATUS(0x80000005), W_ERROR(0xea)},
540         {NT_STATUS(0x80000006), W_ERROR(0x12)},
541         {NT_STATUS(0x8000000b), W_ERROR(0x56f)},
542         {NT_STATUS(0x8000000d), W_ERROR(0x12b)},
543         {NT_STATUS(0x8000000e), W_ERROR(0x1c)},
544         {NT_STATUS(0x8000000f), W_ERROR(0x15)},
545         {NT_STATUS(0x80000010), W_ERROR(0x15)},
546         {NT_STATUS(0x80000011), W_ERROR(0xaa)},
547         {NT_STATUS(0x80000012), W_ERROR(0x103)},
548         {NT_STATUS(0x80000013), W_ERROR(0xfe)},
549         {NT_STATUS(0x80000014), W_ERROR(0xff)},
550         {NT_STATUS(0x80000015), W_ERROR(0xff)},
551         {NT_STATUS(0x80000016), W_ERROR(0x456)},
552         {NT_STATUS(0x8000001a), W_ERROR(0x103)},
553         {NT_STATUS(0x8000001b), W_ERROR(0x44d)},
554         {NT_STATUS(0x8000001c), W_ERROR(0x456)},
555         {NT_STATUS(0x8000001d), W_ERROR(0x457)},
556         {NT_STATUS(0x8000001e), W_ERROR(0x44c)},
557         {NT_STATUS(0x8000001f), W_ERROR(0x44e)},
558         {NT_STATUS(0x80000021), W_ERROR(0x44f)},
559         {NT_STATUS(0x80000022), W_ERROR(0x450)},
560         {NT_STATUS(0x80000025), W_ERROR(0x962)},
561         {NT_STATUS(0x80000288), W_ERROR(0x48d)},
562         {NT_STATUS(0x80000289), W_ERROR(0x48e)},
563         {NT_STATUS_OK, WERR_OK}};
564
565 static const struct {
566         WERROR werror;
567         NTSTATUS ntstatus;
568 } werror_to_ntstatus_map[] = {
569         { W_ERROR(0x5), NT_STATUS_ACCESS_DENIED },
570         { WERR_OK, NT_STATUS_OK }
571 };
572
573 bool ntstatus_check_dos_mapping = true;
574
575 /*
576   check if a DOS encoded NTSTATUS code maps to the given NTSTATUS code
577 */
578 bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2)
579 {
580         /* when we negotiate nt status support, we don't want to consider
581            the mapping of dos codes, as we want to catch the cases where
582            a forced dos code is needed
583         */
584         if (ntstatus_check_dos_mapping) {
585                 return NT_STATUS_V(status1) == NT_STATUS_V(status2);
586         }
587
588         /* otherwise check if the mapping comes out right. Note that it is important
589            that we do the mapping only from ntstatus -> dos and not from dos -> ntstatus,
590            as that is the mapping that servers must do */
591         if (!NT_STATUS_IS_DOS(status1) && NT_STATUS_IS_DOS(status2)) {
592                 uint8_t eclass;
593                 uint32_t ecode;
594                 ntstatus_to_dos(status1, &eclass, &ecode);
595                 return eclass == NT_STATUS_DOS_CLASS(status2) &&
596                         ecode == NT_STATUS_DOS_CODE(status2);
597         }
598         if (NT_STATUS_IS_DOS(status1) && !NT_STATUS_IS_DOS(status2)) {
599                 uint8_t eclass;
600                 uint32_t ecode;
601                 ntstatus_to_dos(status2, &eclass, &ecode);
602                 return eclass == NT_STATUS_DOS_CLASS(status1) &&
603                         ecode == NT_STATUS_DOS_CODE(status1);
604         }
605         return NT_STATUS_V(status1) == NT_STATUS_V(status2);
606 }
607
608 /* Mapping between Unix, and NT error numbers */
609
610 static const struct {
611         int unix_error;
612         NTSTATUS nt_error;
613 } unix_nt_errmap[] = {
614         { EAGAIN,       STATUS_MORE_ENTRIES },
615         { EINTR,        STATUS_MORE_ENTRIES },
616         { ENOBUFS,      STATUS_MORE_ENTRIES },
617 #ifdef EWOULDBLOCK
618         { EWOULDBLOCK,  STATUS_MORE_ENTRIES },
619 #endif
620         { EINPROGRESS,  NT_STATUS_MORE_PROCESSING_REQUIRED },
621         { EPERM,        NT_STATUS_ACCESS_DENIED },
622         { EACCES,       NT_STATUS_ACCESS_DENIED },
623         { ENOENT,       NT_STATUS_OBJECT_NAME_NOT_FOUND },
624         { ENOTDIR,      NT_STATUS_NOT_A_DIRECTORY },
625         { EIO,          NT_STATUS_IO_DEVICE_ERROR },
626         { EBADF,        NT_STATUS_INVALID_HANDLE },
627         { EINVAL,       NT_STATUS_INVALID_PARAMETER },
628         { EEXIST,       NT_STATUS_OBJECT_NAME_COLLISION},
629         { ENFILE,       NT_STATUS_TOO_MANY_OPENED_FILES },
630         { EMFILE,       NT_STATUS_TOO_MANY_OPENED_FILES },
631         { ENOSPC,       NT_STATUS_DISK_FULL },
632         { EISDIR,       NT_STATUS_FILE_IS_A_DIRECTORY },
633         { ENOTSOCK,     NT_STATUS_INVALID_HANDLE },
634         { EFAULT,       NT_STATUS_INVALID_PARAMETER },
635         { EMSGSIZE,     NT_STATUS_INVALID_BUFFER_SIZE },
636         { ENOMEM,       NT_STATUS_NO_MEMORY },
637         { EPIPE,        NT_STATUS_CONNECTION_DISCONNECTED },
638         { ECONNREFUSED, NT_STATUS_CONNECTION_REFUSED },
639 #ifdef ECONNRESET
640         { ECONNRESET,   NT_STATUS_CONNECTION_RESET },
641 #endif
642         { EBUSY,        NT_STATUS_SHARING_VIOLATION },
643 #ifdef ENOTSUP
644         { ENOTSUP,      NT_STATUS_NOT_SUPPORTED},
645 #endif
646 #ifdef EOPNOTSUPP
647         { EOPNOTSUPP,   NT_STATUS_NOT_SUPPORTED},
648 #endif
649 #ifdef EHOSTUNREACH
650         { EHOSTUNREACH, NT_STATUS_HOST_UNREACHABLE },
651 #endif
652 #ifdef ENETUNREACH
653         { ENETUNREACH,  NT_STATUS_NETWORK_UNREACHABLE },
654 #endif
655 #ifdef ETIMEDOUT
656         { ETIMEDOUT,    NT_STATUS_IO_TIMEOUT },
657 #endif
658 #ifdef EADDRINUSE
659         { EADDRINUSE,   NT_STATUS_ADDRESS_ALREADY_ASSOCIATED },
660 #endif
661 #ifdef ENOATTR
662         { ENOATTR,      NT_STATUS_NOT_FOUND },
663 #endif
664 #ifdef ENODATA
665         { ENODATA,      NT_STATUS_NOT_FOUND },
666 #endif
667 #ifdef EDQUOT
668         { EDQUOT,       NT_STATUS_DISK_FULL }, /* Windows does NOT return NT_STATUS_QUOTA_EXCEEDED */
669 #endif
670 #ifdef ENOTEMPTY
671         { ENOTEMPTY,    NT_STATUS_DIRECTORY_NOT_EMPTY },
672 #endif
673 #ifdef EXDEV
674         { EXDEV,        NT_STATUS_NOT_SAME_DEVICE },
675 #endif
676 #ifdef EROFS
677         { EROFS,        NT_STATUS_MEDIA_WRITE_PROTECTED },
678 #endif
679 #ifdef ENAMETOOLONG
680         { ENAMETOOLONG, NT_STATUS_NAME_TOO_LONG },
681 #endif
682 #ifdef EFBIG
683         { EFBIG,        NT_STATUS_DISK_FULL },
684 #endif
685 #ifdef EADDRNOTAVAIL
686         { EADDRNOTAVAIL,NT_STATUS_ADDRESS_NOT_ASSOCIATED },
687 #endif
688 #ifdef ESOCKTNOSUPPORT
689         { ESOCKTNOSUPPORT,NT_STATUS_INVALID_PARAMETER_MIX },
690 #endif
691 #ifdef EAFNOSUPPORT
692         { EAFNOSUPPORT, NT_STATUS_INVALID_PARAMETER_MIX },
693 #endif
694 #ifdef ENOPROTOOPT
695         { ENOPROTOOPT,  NT_STATUS_INVALID_PARAMETER_MIX },
696 #endif
697 #ifdef ENODEV
698         { ENODEV,       NT_STATUS_NO_SUCH_DEVICE },
699 #endif
700 #ifdef ENOSYS
701         { ENOSYS,       NT_STATUS_INVALID_SYSTEM_SERVICE },
702 #endif
703 #ifdef ECANCELED
704         { ECANCELED,    NT_STATUS_CANCELLED },
705 #endif
706
707         { 0, NT_STATUS_UNSUCCESSFUL }
708 };
709
710
711 /*********************************************************************
712  Map an NT error code from a Unix error code.
713 *********************************************************************/
714 NTSTATUS map_nt_error_from_unix(int unix_error)
715 {
716         int i;
717
718         /* Look through list */
719         for (i=0;i<ARRAY_SIZE(unix_nt_errmap);i++) {
720                 if (unix_nt_errmap[i].unix_error == unix_error) {
721                         return unix_nt_errmap[i].nt_error;
722                 }
723         }
724
725         /* Default return */
726         return NT_STATUS_UNSUCCESSFUL;
727 }
728