xref: /aoo41x/main/sal/osl/os2/file_error_transl.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28  #ifndef _ERRNO_H
29  #include <errno.h>
30  #endif
31 
32  #ifndef _FILE_ERROR_TRANSL_H_
33  #include "file_error_transl.h"
34  #endif
35 
36  #ifndef _OSL_DIAGNOSE_H_
37  #include <osl/diagnose.h>
38  #endif
39 
40 
41 /********************************************
42  * oslTranslateFileError
43  *******************************************/
44 
45 oslFileError oslTranslateFileError(sal_Bool bIsError, int Errno)
46 {
47     oslFileError osl_error = osl_File_E_invalidError;
48 
49 	OSL_ENSURE((bIsError && (0 != Errno)) || (!bIsError && (0 == Errno)), "oslTranslateFileError strange input combination!");
50 
51 	/* Have a look at file_error_transl.h for
52 	   the reason that we do this here */
53 	if (bIsError && (0 == Errno))
54 		return osl_error;
55 
56     switch(Errno)
57     {
58         case 0:
59             osl_error = osl_File_E_None;
60             break;
61 
62         case EPERM:
63             osl_error = osl_File_E_PERM;
64             break;
65 
66         case ENOENT:
67             osl_error = osl_File_E_NOENT;
68             break;
69 
70         case ESRCH:
71             osl_error = osl_File_E_SRCH;
72             break;
73 
74         case EINTR:
75             osl_error = osl_File_E_INTR;
76             break;
77 
78         case EIO:
79             osl_error = osl_File_E_IO;
80             break;
81 
82         case ENXIO:
83             osl_error = osl_File_E_IO;
84             break;
85 
86         case E2BIG:
87             osl_error = osl_File_E_2BIG;
88             break;
89 
90         case ENOEXEC:
91             osl_error = osl_File_E_NOEXEC;
92             break;
93 
94         case EBADF:
95             osl_error = osl_File_E_BADF;
96             break;
97 
98         case ECHILD:
99             osl_error = osl_File_E_CHILD;
100             break;
101 
102         case EAGAIN:
103             osl_error = osl_File_E_AGAIN;
104             break;
105 
106         case ENOMEM:
107             osl_error = osl_File_E_NOMEM;
108             break;
109 
110         case EACCES:
111             osl_error = osl_File_E_ACCES;
112             break;
113 
114         case EFAULT:
115             osl_error = osl_File_E_FAULT;
116             break;
117 
118         case EBUSY:
119             osl_error = osl_File_E_BUSY;
120             break;
121 
122         case EEXIST:
123             osl_error = osl_File_E_EXIST;
124             break;
125 
126         case EXDEV:
127             osl_error = osl_File_E_XDEV;
128             break;
129 
130         case ENODEV:
131             osl_error = osl_File_E_NODEV;
132             break;
133 
134         case ENOTDIR:
135             osl_error = osl_File_E_NOTDIR;
136             break;
137 
138         case EISDIR:
139             osl_error = osl_File_E_ISDIR;
140             break;
141 
142         case EINVAL:
143             osl_error = osl_File_E_INVAL;
144             break;
145 
146         case ENFILE:
147             osl_error = osl_File_E_NFILE;
148             break;
149 
150         case EMFILE:
151             osl_error = osl_File_E_MFILE;
152             break;
153 
154         case ENOTTY:
155             osl_error = osl_File_E_NOTTY;
156             break;
157 
158         case EFBIG:
159             osl_error = osl_File_E_FBIG;
160             break;
161 
162         case ENOSPC:
163             osl_error = osl_File_E_NOSPC;
164             break;
165 
166         case ESPIPE:
167             osl_error = osl_File_E_SPIPE;
168             break;
169 
170         case EROFS:
171             osl_error = osl_File_E_ROFS;
172             break;
173 
174         case EMLINK:
175             osl_error = osl_File_E_MLINK;
176             break;
177 
178         case EPIPE:
179             osl_error = osl_File_E_PIPE;
180             break;
181 
182         case EDOM:
183             osl_error = osl_File_E_DOM;
184             break;
185 
186         case ERANGE:
187             osl_error = osl_File_E_RANGE;
188             break;
189 
190         case EDEADLK:
191             osl_error = osl_File_E_DEADLK;
192             break;
193 
194         case ENAMETOOLONG:
195             osl_error = osl_File_E_NAMETOOLONG;
196             break;
197 
198         case ENOLCK:
199             osl_error = osl_File_E_NOLCK;
200             break;
201 
202         case ENOSYS:
203            osl_error = osl_File_E_NOSYS;
204             break;
205 
206         case ENOTEMPTY:
207             osl_error = osl_File_E_NOTEMPTY;
208             break;
209 
210         case ELOOP:
211             osl_error = osl_File_E_LOOP;
212             break;
213 
214 #if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD))
215         case EILSEQ:
216             osl_error = osl_File_E_ILSEQ;
217             break;
218 #endif /* MACOSX */
219 
220 #if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OS2))
221         case ENOLINK:
222             osl_error = osl_File_E_NOLINK;
223             break;
224 #endif /* MACOSX */
225 
226 #if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OS2))
227         case EMULTIHOP:
228             osl_error = osl_File_E_MULTIHOP;
229             break;
230 #endif /* MACOSX */
231 
232         case EUSERS:
233             osl_error = osl_File_E_USERS;
234             break;
235 
236         case EOVERFLOW:
237             osl_error = osl_File_E_OVERFLOW;
238             break;
239 
240         case ETIMEDOUT:
241             osl_error = osl_File_E_TIMEDOUT;
242             break;
243 
244         default:
245             /* FIXME translateFileError: is this alright? Or add a new one: osl_File_E_Unknown? */
246             osl_error = osl_File_E_invalidError;
247             break;
248     }
249 
250     return osl_error;
251 }
252 
253