1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  *   Licensed to the Apache Software Foundation (ASF) under one or more
12  *   contributor license agreements. See the NOTICE file distributed
13  *   with this work for additional information regarding copyright
14  *   ownership. The ASF licenses this file to you under the Apache
15  *   License, Version 2.0 (the "License"); you may not use this file
16  *   except in compliance with the License. You may obtain a copy of
17  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <sal/config.h>
21 
22 #include <cassert>
23 #include <cerrno>
24 
25 #include "file_error_transl.hxx"
26 
oslTranslateFileError(int Errno)27 oslFileError oslTranslateFileError(int Errno)
28 {
29     switch (Errno)
30     {
31         case EPERM:
32             return osl_File_E_PERM;
33 
34         case ENOENT:
35             return osl_File_E_NOENT;
36 
37         case ESRCH:
38             return osl_File_E_SRCH;
39 
40         case EINTR:
41             return osl_File_E_INTR;
42 
43         case EIO:
44             return osl_File_E_IO;
45 
46         case ENXIO:
47             return osl_File_E_IO;
48 
49         case E2BIG:
50             return osl_File_E_2BIG;
51 
52         case ENOEXEC:
53             return osl_File_E_NOEXEC;
54 
55         case EBADF:
56             return osl_File_E_BADF;
57 
58         case ECHILD:
59             return osl_File_E_CHILD;
60 
61         case EAGAIN:
62             return osl_File_E_AGAIN;
63 
64         case ENOMEM:
65             return osl_File_E_NOMEM;
66 
67         case EACCES:
68             return osl_File_E_ACCES;
69 
70         case EFAULT:
71             return osl_File_E_FAULT;
72 
73         case EBUSY:
74             return osl_File_E_BUSY;
75 
76         case EEXIST:
77             return osl_File_E_EXIST;
78 
79         case EXDEV:
80             return osl_File_E_XDEV;
81 
82         case ENODEV:
83             return osl_File_E_NODEV;
84 
85         case ENOTDIR:
86             return osl_File_E_NOTDIR;
87 
88         case EISDIR:
89             return osl_File_E_ISDIR;
90 
91         case EINVAL:
92             return osl_File_E_INVAL;
93 
94         case ENFILE:
95             return osl_File_E_NFILE;
96 
97         case EMFILE:
98             return osl_File_E_MFILE;
99 
100         case ENOTTY:
101             return osl_File_E_NOTTY;
102 
103         case EFBIG:
104             return osl_File_E_FBIG;
105 
106         case ENOSPC:
107             return osl_File_E_NOSPC;
108 
109         case ESPIPE:
110             return osl_File_E_SPIPE;
111 
112         case EROFS:
113             return osl_File_E_ROFS;
114 
115         case EMLINK:
116             return osl_File_E_MLINK;
117 
118         case EPIPE:
119             return osl_File_E_PIPE;
120 
121         case EDOM:
122             return osl_File_E_DOM;
123 
124         case ERANGE:
125             return osl_File_E_RANGE;
126 
127         case EDEADLK:
128             return osl_File_E_DEADLK;
129 
130         case ENAMETOOLONG:
131             return osl_File_E_NAMETOOLONG;
132 
133         case ENOLCK:
134             return osl_File_E_NOLCK;
135 
136         case ENOSYS:
137         case ENOTSUP:
138 #if EOPNOTSUPP != ENOTSUP
139         case EOPNOTSUPP:
140 #endif
141             return osl_File_E_NOSYS;
142 
143 #if !defined(AIX) || !(defined(_ALL_SOURCE) && !defined(_LINUX_SOURCE_COMPAT))
144         case ENOTEMPTY:
145             return osl_File_E_NOTEMPTY;
146 #endif
147 
148         case ELOOP:
149             return osl_File_E_LOOP;
150 
151 #if !(defined(MACOSX) || defined(NETBSD) || defined(FREEBSD) || defined(OPENBSD)                   \
152       || defined(DRAGONFLY))
153         case EILSEQ:
154             return osl_File_E_ILSEQ;
155 
156         case ENOLINK:
157             return osl_File_E_NOLINK;
158 
159         case EMULTIHOP:
160             return osl_File_E_MULTIHOP;
161 #endif /* MACOSX */
162 
163 #if !defined(HAIKU)
164         case EUSERS:
165             return osl_File_E_USERS;
166 #endif
167 
168         case EOVERFLOW:
169             return osl_File_E_OVERFLOW;
170 
171         case ETIMEDOUT:
172             return osl_File_E_TIMEDOUT;
173 
174         default:
175             assert(Errno != 0);
176             /* FIXME translateFileError: is this alright? Or add a new one: osl_File_E_Unknown? */
177             return osl_File_E_invalidError;
178     }
179 }
180 
181 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
182