1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/nsprpub/pr/src/md/beos/beos_errors.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,1494 @@ 1.4 +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1.5 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.6 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.7 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.8 + 1.9 +#include "prtypes.h" 1.10 +#include "md/_unix_errors.h" 1.11 +#include "prerror.h" 1.12 +#include <errno.h> 1.13 + 1.14 +void _MD_unix_map_opendir_error(int err) 1.15 +{ 1.16 + switch (err) { 1.17 + case ENOTDIR: 1.18 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.19 + break; 1.20 + case EACCES: 1.21 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.22 + break; 1.23 + case EMFILE: 1.24 + PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err); 1.25 + break; 1.26 + case ENFILE: 1.27 + PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err); 1.28 + break; 1.29 + case EFAULT: 1.30 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.31 + break; 1.32 + case ELOOP: 1.33 + PR_SetError(PR_LOOP_ERROR, err); 1.34 + break; 1.35 + case ENAMETOOLONG: 1.36 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.37 + break; 1.38 + case ENOENT: 1.39 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.40 + break; 1.41 + default: 1.42 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.43 + break; 1.44 + } 1.45 +} 1.46 + 1.47 +void _MD_unix_map_closedir_error(int err) 1.48 +{ 1.49 + switch (err) { 1.50 + case EINVAL: 1.51 + case EBADF: 1.52 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.53 + break; 1.54 + default: 1.55 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.56 + break; 1.57 + } 1.58 +} 1.59 + 1.60 +void _MD_unix_readdir_error(int err) 1.61 +{ 1.62 + 1.63 + switch (err) { 1.64 + case 0: 1.65 + case ENOENT: 1.66 + PR_SetError(PR_NO_MORE_FILES_ERROR, err); 1.67 + break; 1.68 + case EBADF: 1.69 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.70 + break; 1.71 +#ifdef IRIX 1.72 +#ifdef IRIX5_3 1.73 +#else 1.74 + case EDIRCORRUPTED: 1.75 + PR_SetError(PR_DIRECTORY_CORRUPTED_ERROR, err); 1.76 + break; 1.77 +#endif 1.78 +#endif 1.79 +#ifdef EOVERFLOW 1.80 + case EOVERFLOW: 1.81 + PR_SetError(PR_IO_ERROR, err); 1.82 + break; 1.83 +#endif 1.84 + case EINVAL: 1.85 + PR_SetError(PR_IO_ERROR, err); 1.86 + break; 1.87 +#ifdef EBADMSG 1.88 + case EBADMSG: 1.89 + PR_SetError(PR_IO_ERROR, err); 1.90 + break; 1.91 +#endif 1.92 + case EDEADLK: 1.93 + PR_SetError(PR_DEADLOCK_ERROR, err); 1.94 + break; 1.95 + case EFAULT: 1.96 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.97 + break; 1.98 + case EINTR: 1.99 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.100 + break; 1.101 + case EIO: 1.102 + PR_SetError(PR_IO_ERROR, err); 1.103 + break; 1.104 + case ENOLCK: 1.105 + PR_SetError(PR_FILE_IS_LOCKED_ERROR, err); 1.106 + break; 1.107 +#ifdef ENOLINK 1.108 + case ENOLINK: 1.109 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.110 + break; 1.111 +#endif 1.112 + case ENXIO: 1.113 + PR_SetError(PR_IO_ERROR, err); 1.114 + break; 1.115 + default: 1.116 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.117 + break; 1.118 + } 1.119 +} 1.120 + 1.121 +void _MD_unix_map_unlink_error(int err) 1.122 +{ 1.123 + switch (err) { 1.124 + case EACCES: 1.125 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.126 + break; 1.127 + case EBUSY: 1.128 + PR_SetError(PR_FILESYSTEM_MOUNTED_ERROR, err); 1.129 + break; 1.130 + case EFAULT: 1.131 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.132 + break; 1.133 + case EINTR: 1.134 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.135 + break; 1.136 + case ELOOP: 1.137 + PR_SetError(PR_LOOP_ERROR, err); 1.138 + break; 1.139 + case ENAMETOOLONG: 1.140 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.141 + break; 1.142 + case ENOENT: 1.143 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.144 + break; 1.145 + case ENOTDIR: 1.146 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.147 + break; 1.148 + case EPERM: 1.149 + PR_SetError(PR_IS_DIRECTORY_ERROR, err); 1.150 + break; 1.151 + case EROFS: 1.152 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.153 + break; 1.154 + default: 1.155 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.156 + break; 1.157 + } 1.158 +} 1.159 + 1.160 +void _MD_unix_map_stat_error(int err) 1.161 +{ 1.162 + switch (err) { 1.163 + case EACCES: 1.164 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.165 + break; 1.166 + case EFAULT: 1.167 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.168 + break; 1.169 + case EINTR: 1.170 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.171 + break; 1.172 + case ETIMEDOUT: 1.173 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.174 + break; 1.175 + case ELOOP: 1.176 + PR_SetError(PR_LOOP_ERROR, err); 1.177 + break; 1.178 + case ENAMETOOLONG: 1.179 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.180 + break; 1.181 + case ENOENT: 1.182 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.183 + break; 1.184 + case ENOTDIR: 1.185 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.186 + break; 1.187 +#ifdef EOVERFLOW 1.188 + case EOVERFLOW: 1.189 + PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err); 1.190 + break; 1.191 +#endif 1.192 + default: 1.193 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.194 + break; 1.195 + } 1.196 +} 1.197 + 1.198 +void _MD_unix_map_fstat_error(int err) 1.199 +{ 1.200 + switch (err) { 1.201 + case EBADF: 1.202 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.203 + break; 1.204 + case EFAULT: 1.205 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.206 + break; 1.207 + case EINTR: 1.208 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.209 + break; 1.210 + case ETIMEDOUT: 1.211 +#ifdef ENOLINK 1.212 + case ENOLINK: 1.213 +#endif 1.214 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.215 + break; 1.216 +#ifdef EOVERFLOW 1.217 + case EOVERFLOW: 1.218 + PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err); 1.219 + break; 1.220 +#endif 1.221 + default: 1.222 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.223 + break; 1.224 + } 1.225 +} 1.226 + 1.227 +void _MD_unix_map_rename_error(int err) 1.228 +{ 1.229 + switch (err) { 1.230 + case EACCES: 1.231 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.232 + break; 1.233 + case EBUSY: 1.234 + PR_SetError(PR_FILESYSTEM_MOUNTED_ERROR, err); 1.235 + break; 1.236 +#ifdef EDQUOT 1.237 + case EDQUOT: 1.238 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.239 + break; 1.240 +#endif 1.241 + case EEXIST: 1.242 + PR_SetError(PR_DIRECTORY_NOT_EMPTY_ERROR, err); 1.243 + break; 1.244 + case EFAULT: 1.245 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.246 + break; 1.247 + case EINTR: 1.248 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.249 + break; 1.250 + case EINVAL: 1.251 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.252 + break; 1.253 + case EIO: 1.254 + PR_SetError(PR_IO_ERROR, err); 1.255 + break; 1.256 + case EISDIR: 1.257 + PR_SetError(PR_IS_DIRECTORY_ERROR, err); 1.258 + break; 1.259 + case ELOOP: 1.260 + PR_SetError(PR_LOOP_ERROR, err); 1.261 + break; 1.262 + case ENAMETOOLONG: 1.263 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.264 + break; 1.265 + case ENOENT: 1.266 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.267 + break; 1.268 + case ENOSPC: 1.269 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.270 + break; 1.271 + case ENOTDIR: 1.272 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.273 + break; 1.274 + case EROFS: 1.275 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.276 + break; 1.277 + case EXDEV: 1.278 + PR_SetError(PR_NOT_SAME_DEVICE_ERROR, err); 1.279 + break; 1.280 + case EMLINK: 1.281 + PR_SetError(PR_MAX_DIRECTORY_ENTRIES_ERROR, err); 1.282 + break; 1.283 + default: 1.284 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.285 + break; 1.286 + } 1.287 +} 1.288 + 1.289 +void _MD_unix_map_access_error(int err) 1.290 +{ 1.291 + switch (err) { 1.292 + case EACCES: 1.293 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.294 + break; 1.295 + case EFAULT: 1.296 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.297 + break; 1.298 + case EINTR: 1.299 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.300 + break; 1.301 + case EINVAL: 1.302 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.303 + break; 1.304 + case ELOOP: 1.305 + PR_SetError(PR_LOOP_ERROR, err); 1.306 + break; 1.307 + case ETIMEDOUT: 1.308 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.309 + break; 1.310 + case ENAMETOOLONG: 1.311 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.312 + break; 1.313 + case ENOENT: 1.314 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.315 + break; 1.316 + case ENOTDIR: 1.317 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.318 + break; 1.319 + case EROFS: 1.320 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.321 + break; 1.322 + default: 1.323 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.324 + break; 1.325 + } 1.326 +} 1.327 + 1.328 +void _MD_unix_map_mkdir_error(int err) 1.329 +{ 1.330 + switch (err) { 1.331 + case ENOTDIR: 1.332 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.333 + break; 1.334 + case ENOENT: 1.335 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.336 + break; 1.337 + case ENAMETOOLONG: 1.338 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.339 + break; 1.340 + case EACCES: 1.341 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.342 + break; 1.343 + case EEXIST: 1.344 + PR_SetError(PR_FILE_EXISTS_ERROR, err); 1.345 + break; 1.346 + case EROFS: 1.347 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.348 + break; 1.349 + case EFAULT: 1.350 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.351 + break; 1.352 + case ELOOP: 1.353 + PR_SetError(PR_LOOP_ERROR, err); 1.354 + break; 1.355 + case EMLINK: 1.356 + PR_SetError(PR_MAX_DIRECTORY_ENTRIES_ERROR, err); 1.357 + break; 1.358 + case ENOSPC: 1.359 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.360 + break; 1.361 +#ifdef EDQUOT 1.362 + case EDQUOT: 1.363 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.364 + break; 1.365 +#endif 1.366 + case EIO: 1.367 + PR_SetError(PR_IO_ERROR, err); 1.368 + break; 1.369 + default: 1.370 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.371 + break; 1.372 + } 1.373 +} 1.374 + 1.375 +void _MD_unix_map_rmdir_error(int err) 1.376 +{ 1.377 + 1.378 + switch (err) { 1.379 + case EACCES: 1.380 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.381 + break; 1.382 + case EBUSY: 1.383 + PR_SetError(PR_FILESYSTEM_MOUNTED_ERROR, err); 1.384 + break; 1.385 + case EEXIST: 1.386 + PR_SetError(PR_DIRECTORY_NOT_EMPTY_ERROR, err); 1.387 + break; 1.388 + case EFAULT: 1.389 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.390 + break; 1.391 + case EINVAL: 1.392 + PR_SetError(PR_DIRECTORY_NOT_EMPTY_ERROR, err); 1.393 + break; 1.394 + case EIO: 1.395 + PR_SetError(PR_IO_ERROR, err); 1.396 + break; 1.397 + case ELOOP: 1.398 + PR_SetError(PR_LOOP_ERROR, err); 1.399 + break; 1.400 + case ETIMEDOUT: 1.401 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.402 + break; 1.403 + case ENAMETOOLONG: 1.404 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.405 + break; 1.406 + case ENOENT: 1.407 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.408 + break; 1.409 + case ENOTDIR: 1.410 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.411 + break; 1.412 + case EROFS: 1.413 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.414 + break; 1.415 + default: 1.416 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.417 + break; 1.418 + } 1.419 +} 1.420 + 1.421 +void _MD_unix_map_read_error(int err) 1.422 +{ 1.423 + switch (err) { 1.424 + case EACCES: 1.425 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.426 + break; 1.427 + case EAGAIN: 1.428 +#if EWOULDBLOCK != EAGAIN 1.429 + case EWOULDBLOCK: 1.430 +#endif 1.431 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.432 + break; 1.433 + case EBADF: 1.434 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.435 + break; 1.436 +#ifdef EBADMSG 1.437 + case EBADMSG: 1.438 + PR_SetError(PR_IO_ERROR, err); 1.439 + break; 1.440 +#endif 1.441 + case EDEADLK: 1.442 + PR_SetError(PR_DEADLOCK_ERROR, err); 1.443 + break; 1.444 + case EFAULT: 1.445 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.446 + break; 1.447 + case EINTR: 1.448 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.449 + break; 1.450 + case EINVAL: 1.451 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.452 + break; 1.453 + case EIO: 1.454 + PR_SetError(PR_IO_ERROR, err); 1.455 + break; 1.456 + case ENOLCK: 1.457 + PR_SetError(PR_FILE_IS_LOCKED_ERROR, err); 1.458 + break; 1.459 + case ENXIO: 1.460 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.461 + break; 1.462 + case EISDIR: 1.463 + PR_SetError(PR_IS_DIRECTORY_ERROR, err); 1.464 + break; 1.465 + case ECONNRESET: 1.466 + case EPIPE: 1.467 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.468 + break; 1.469 +#ifdef ENOLINK 1.470 + case ENOLINK: 1.471 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.472 + break; 1.473 +#endif 1.474 + default: 1.475 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.476 + break; 1.477 + } 1.478 +} 1.479 + 1.480 +void _MD_unix_map_write_error(int err) 1.481 +{ 1.482 + switch (err) { 1.483 + case EAGAIN: 1.484 +#if EWOULDBLOCK != EAGAIN 1.485 + case EWOULDBLOCK: 1.486 +#endif 1.487 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.488 + break; 1.489 + case EBADF: 1.490 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.491 + break; 1.492 + case EDEADLK: 1.493 + PR_SetError(PR_DEADLOCK_ERROR, err); 1.494 + break; 1.495 + case EFAULT: 1.496 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.497 + break; 1.498 + case EFBIG: 1.499 + PR_SetError(PR_FILE_TOO_BIG_ERROR, err); 1.500 + break; 1.501 + case EINTR: 1.502 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.503 + break; 1.504 + case EINVAL: 1.505 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.506 + break; 1.507 + case EIO: 1.508 + PR_SetError(PR_IO_ERROR, err); 1.509 + break; 1.510 + case ENOLCK: 1.511 + PR_SetError(PR_FILE_IS_LOCKED_ERROR, err); 1.512 + break; 1.513 +#ifdef ENOSR 1.514 + case ENOSR: 1.515 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.516 + break; 1.517 +#endif 1.518 + case ENOSPC: 1.519 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.520 + break; 1.521 + case ENXIO: 1.522 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.523 + break; 1.524 + case ERANGE: 1.525 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.526 + break; 1.527 + case ETIMEDOUT: 1.528 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.529 + break; 1.530 + case ECONNRESET: 1.531 + case EPIPE: 1.532 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.533 + break; 1.534 +#ifdef EDQUOT 1.535 + case EDQUOT: 1.536 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.537 + break; 1.538 +#endif 1.539 +#ifdef ENOLINK 1.540 + case ENOLINK: 1.541 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.542 + break; 1.543 +#endif 1.544 + default: 1.545 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.546 + break; 1.547 + } 1.548 +} 1.549 + 1.550 +void _MD_unix_map_lseek_error(int err) 1.551 +{ 1.552 + switch (err) { 1.553 + case EBADF: 1.554 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.555 + break; 1.556 + case ESPIPE: 1.557 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.558 + break; 1.559 + case EINVAL: 1.560 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.561 + break; 1.562 + default: 1.563 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.564 + break; 1.565 + } 1.566 +} 1.567 + 1.568 +void _MD_unix_map_fsync_error(int err) 1.569 +{ 1.570 + switch (err) { 1.571 + case EBADF: 1.572 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.573 + break; 1.574 +#ifdef ENOLINK 1.575 + case ENOLINK: 1.576 +#endif 1.577 + case ETIMEDOUT: 1.578 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.579 + break; 1.580 + case EINTR: 1.581 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.582 + break; 1.583 + case EIO: 1.584 + PR_SetError(PR_IO_ERROR, err); 1.585 + break; 1.586 + case EINVAL: 1.587 + PR_SetError(PR_INVALID_METHOD_ERROR, err); 1.588 + break; 1.589 + default: 1.590 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.591 + break; 1.592 + } 1.593 +} 1.594 + 1.595 +void _MD_unix_map_close_error(int err) 1.596 +{ 1.597 + switch (err) { 1.598 + case EBADF: 1.599 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.600 + break; 1.601 + case EINTR: 1.602 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.603 + break; 1.604 +#ifdef ENOLINK 1.605 + case ENOLINK: 1.606 +#endif 1.607 + case ETIMEDOUT: 1.608 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.609 + break; 1.610 + case EIO: 1.611 + PR_SetError(PR_IO_ERROR, err); 1.612 + break; 1.613 + default: 1.614 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.615 + break; 1.616 + } 1.617 +} 1.618 + 1.619 +void _MD_unix_map_socket_error(int err) 1.620 +{ 1.621 + switch (err) { 1.622 + case EPROTONOSUPPORT: 1.623 + PR_SetError(PR_PROTOCOL_NOT_SUPPORTED_ERROR, err); 1.624 + break; 1.625 + case EMFILE: 1.626 + PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err); 1.627 + break; 1.628 + case ENFILE: 1.629 + PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err); 1.630 + break; 1.631 + case EACCES: 1.632 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.633 + break; 1.634 +#if !defined(SCO) 1.635 + case ENOBUFS: 1.636 +#endif /* !defined(SCO) */ 1.637 + case ENOMEM: 1.638 +#ifdef ENOSR 1.639 + case ENOSR: 1.640 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.641 + break; 1.642 +#endif 1.643 + default: 1.644 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.645 + break; 1.646 + } 1.647 +} 1.648 + 1.649 +void _MD_unix_map_socketavailable_error(int err) 1.650 +{ 1.651 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.652 +} 1.653 + 1.654 +void _MD_unix_map_recv_error(int err) 1.655 +{ 1.656 + switch (err) { 1.657 + case EAGAIN: 1.658 +#if EWOULDBLOCK != EAGAIN 1.659 + case EWOULDBLOCK: 1.660 +#endif 1.661 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.662 + break; 1.663 + case EBADF: 1.664 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.665 + break; 1.666 +#if !defined(BEOS) 1.667 + case ENOTSOCK: 1.668 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.669 + break; 1.670 +#endif 1.671 + case EINTR: 1.672 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.673 + break; 1.674 + case EFAULT: 1.675 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.676 + break; 1.677 + case ENOMEM: 1.678 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.679 + break; 1.680 + case ECONNRESET: 1.681 + case EPIPE: 1.682 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.683 + break; 1.684 +#ifdef ENOSR 1.685 + case ENOSR: 1.686 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.687 + break; 1.688 +#endif 1.689 + default: 1.690 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.691 + break; 1.692 + } 1.693 +} 1.694 + 1.695 +void _MD_unix_map_recvfrom_error(int err) 1.696 +{ 1.697 + switch (err) { 1.698 + case EAGAIN: 1.699 +#if EWOULDBLOCK != EAGAIN 1.700 + case EWOULDBLOCK: 1.701 +#endif 1.702 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.703 + break; 1.704 + case EBADF: 1.705 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.706 + break; 1.707 +#if !defined(BEOS) 1.708 + case ENOTSOCK: 1.709 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.710 + break; 1.711 +#endif 1.712 + case EINTR: 1.713 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.714 + break; 1.715 + case EFAULT: 1.716 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.717 + break; 1.718 + case ENOMEM: 1.719 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.720 + break; 1.721 +#ifdef ENOSR 1.722 + case ENOSR: 1.723 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.724 + break; 1.725 +#endif 1.726 + case ECONNRESET: 1.727 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.728 + break; 1.729 + default: 1.730 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.731 + break; 1.732 + } 1.733 +} 1.734 + 1.735 +void _MD_unix_map_send_error(int err) 1.736 +{ 1.737 + switch (err) { 1.738 + case EAGAIN: 1.739 +#if EWOULDBLOCK != EAGAIN 1.740 + case EWOULDBLOCK: 1.741 +#endif 1.742 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.743 + break; 1.744 + case EBADF: 1.745 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.746 + break; 1.747 +#if !defined(BEOS) 1.748 + case ENOTSOCK: 1.749 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.750 + break; 1.751 +#endif 1.752 +#if !defined(BEOS) 1.753 + case EMSGSIZE: 1.754 +#endif 1.755 + case EINVAL: 1.756 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.757 + break; 1.758 +#if !defined(SCO) 1.759 + case ENOBUFS: 1.760 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.761 + break; 1.762 +#endif /* !defined(SCO) */ 1.763 + case ECONNREFUSED: 1.764 + PR_SetError(PR_CONNECT_REFUSED_ERROR, err); 1.765 + break; 1.766 + case EISCONN: 1.767 + PR_SetError(PR_IS_CONNECTED_ERROR, err); 1.768 + break; 1.769 + case EFAULT: 1.770 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.771 + break; 1.772 + case EINTR: 1.773 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.774 + break; 1.775 + case ENOMEM: 1.776 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.777 + break; 1.778 +#ifdef ENOSR 1.779 + case ENOSR: 1.780 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.781 + break; 1.782 +#endif 1.783 + case ECONNRESET: 1.784 + case EPIPE: 1.785 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.786 + break; 1.787 + default: 1.788 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.789 + break; 1.790 + } 1.791 +} 1.792 + 1.793 +void _MD_unix_map_sendto_error(int err) 1.794 +{ 1.795 + switch (err) { 1.796 + case EAGAIN: 1.797 +#if EWOULDBLOCK != EAGAIN 1.798 + case EWOULDBLOCK: 1.799 +#endif 1.800 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.801 + break; 1.802 + case EBADF: 1.803 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.804 + break; 1.805 +#if !defined(BEOS) 1.806 + case ENOTSOCK: 1.807 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.808 + break; 1.809 +#endif 1.810 +#if !defined(BEOS) 1.811 + case EMSGSIZE: 1.812 +#endif 1.813 + case EINVAL: 1.814 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.815 + break; 1.816 +#if !defined(SCO) 1.817 + case ENOBUFS: 1.818 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.819 + break; 1.820 +#endif /* !defined(SCO) */ 1.821 + case ECONNREFUSED: 1.822 + PR_SetError(PR_CONNECT_REFUSED_ERROR, err); 1.823 + break; 1.824 + case EISCONN: 1.825 + PR_SetError(PR_IS_CONNECTED_ERROR, err); 1.826 + break; 1.827 + case EFAULT: 1.828 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.829 + break; 1.830 + case EINTR: 1.831 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.832 + break; 1.833 + case ENOMEM: 1.834 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.835 + break; 1.836 +#ifdef ENOSR 1.837 + case ENOSR: 1.838 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.839 + break; 1.840 +#endif 1.841 + case ECONNRESET: 1.842 + case EPIPE: 1.843 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.844 + break; 1.845 + default: 1.846 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.847 + break; 1.848 + } 1.849 +} 1.850 + 1.851 +void _MD_unix_map_writev_error(int err) 1.852 +{ 1.853 + switch (err) { 1.854 + case EAGAIN: 1.855 +#if EWOULDBLOCK != EAGAIN 1.856 + case EWOULDBLOCK: 1.857 +#endif 1.858 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.859 + break; 1.860 + case EBADF: 1.861 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.862 + break; 1.863 + case EFAULT: 1.864 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.865 + break; 1.866 + case EINTR: 1.867 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.868 + break; 1.869 +#ifdef ENOSR 1.870 + case ENOSR: 1.871 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.872 + break; 1.873 +#endif 1.874 + case EINVAL: 1.875 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.876 + break; 1.877 + case ECONNRESET: 1.878 + case EPIPE: 1.879 + PR_SetError(PR_CONNECT_RESET_ERROR, err); 1.880 + break; 1.881 + default: 1.882 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.883 + break; 1.884 + } 1.885 +} 1.886 + 1.887 +void _MD_unix_map_accept_error(int err) 1.888 +{ 1.889 + switch (err) { 1.890 + case EAGAIN: 1.891 +#if EWOULDBLOCK != EAGAIN 1.892 + case EWOULDBLOCK: 1.893 +#endif 1.894 + PR_SetError(PR_WOULD_BLOCK_ERROR, err); 1.895 + break; 1.896 + case EBADF: 1.897 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.898 + break; 1.899 +#if !defined(BEOS) 1.900 + case ENOTSOCK: 1.901 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.902 + break; 1.903 +#endif 1.904 +#if !defined(BEOS) 1.905 + case EOPNOTSUPP: 1.906 +#endif 1.907 + case ENODEV: 1.908 + PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err); 1.909 + break; 1.910 + case EFAULT: 1.911 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.912 + break; 1.913 + case EMFILE: 1.914 + PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err); 1.915 + break; 1.916 + case ENFILE: 1.917 + PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err); 1.918 + break; 1.919 + case EINTR: 1.920 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.921 + break; 1.922 + case ENOMEM: 1.923 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.924 + break; 1.925 +#ifdef ENOSR 1.926 + case ENOSR: 1.927 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.928 + break; 1.929 +#endif 1.930 +#ifdef EPROTO 1.931 + case EPROTO: 1.932 + PR_SetError(PR_IO_ERROR, err); 1.933 + break; 1.934 +#endif 1.935 + default: 1.936 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.937 + break; 1.938 + } 1.939 +} 1.940 + 1.941 +void _MD_unix_map_connect_error(int err) 1.942 +{ 1.943 + switch (err) { 1.944 + case EBADF: 1.945 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.946 + break; 1.947 + case EADDRNOTAVAIL: 1.948 + PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err); 1.949 + break; 1.950 + case EINPROGRESS: 1.951 + PR_SetError(PR_IN_PROGRESS_ERROR, err); 1.952 + break; 1.953 + case EALREADY: 1.954 + PR_SetError(PR_ALREADY_INITIATED_ERROR, err); 1.955 + break; 1.956 +#if !defined(BEOS) 1.957 + case ENOTSOCK: 1.958 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.959 + break; 1.960 +#endif 1.961 + case EAFNOSUPPORT: 1.962 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.963 + break; 1.964 + case EISCONN: 1.965 + PR_SetError(PR_IS_CONNECTED_ERROR, err); 1.966 + break; 1.967 + case ETIMEDOUT: 1.968 + PR_SetError(PR_IO_TIMEOUT_ERROR, err); 1.969 + break; 1.970 + case ECONNREFUSED: 1.971 + PR_SetError(PR_CONNECT_REFUSED_ERROR, err); 1.972 + break; 1.973 + case ENETUNREACH: 1.974 + PR_SetError(PR_NETWORK_UNREACHABLE_ERROR, err); 1.975 + break; 1.976 + case EADDRINUSE: 1.977 + PR_SetError(PR_ADDRESS_IN_USE_ERROR, err); 1.978 + break; 1.979 + case EFAULT: 1.980 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.981 + break; 1.982 + /* 1.983 + * UNIX domain sockets are not supported in NSPR 1.984 + */ 1.985 + case EACCES: 1.986 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.987 + break; 1.988 + case EINTR: 1.989 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.990 + break; 1.991 + case EINVAL: 1.992 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.993 + break; 1.994 + case EIO: 1.995 +#if defined(UNIXWARE) 1.996 + /* 1.997 + * On some platforms, if we connect to a port on 1.998 + * the local host (the loopback address) that no 1.999 + * process is listening on, we get EIO instead 1.1000 + * of ECONNREFUSED. 1.1001 + */ 1.1002 + PR_SetError(PR_CONNECT_REFUSED_ERROR, err); 1.1003 +#else 1.1004 + PR_SetError(PR_IO_ERROR, err); 1.1005 +#endif 1.1006 + break; 1.1007 + case ELOOP: 1.1008 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.1009 + break; 1.1010 + case ENOENT: 1.1011 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.1012 + break; 1.1013 +#ifdef ENOSR 1.1014 + case ENOSR: 1.1015 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1016 + break; 1.1017 +#endif 1.1018 + case ENXIO: 1.1019 + PR_SetError(PR_IO_ERROR, err); 1.1020 + break; 1.1021 + case EPROTOTYPE: 1.1022 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.1023 + break; 1.1024 + default: 1.1025 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1026 + break; 1.1027 + } 1.1028 +} 1.1029 + 1.1030 +void _MD_unix_map_bind_error(int err) 1.1031 +{ 1.1032 + switch (err) { 1.1033 + case EBADF: 1.1034 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1035 + break; 1.1036 +#if !defined(BEOS) 1.1037 + case ENOTSOCK: 1.1038 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1039 + break; 1.1040 +#endif 1.1041 + case EFAULT: 1.1042 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1043 + break; 1.1044 + case EADDRNOTAVAIL: 1.1045 + PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err); 1.1046 + break; 1.1047 + case EADDRINUSE: 1.1048 + PR_SetError(PR_ADDRESS_IN_USE_ERROR, err); 1.1049 + break; 1.1050 + case EACCES: 1.1051 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.1052 + break; 1.1053 + case EINVAL: 1.1054 + PR_SetError(PR_SOCKET_ADDRESS_IS_BOUND_ERROR, err); 1.1055 + break; 1.1056 +#ifdef ENOSR 1.1057 + case ENOSR: 1.1058 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1059 + break; 1.1060 +#endif 1.1061 + /* 1.1062 + * UNIX domain sockets are not supported in NSPR 1.1063 + */ 1.1064 + case EIO: 1.1065 + case EISDIR: 1.1066 + case ELOOP: 1.1067 + case ENOENT: 1.1068 + case ENOTDIR: 1.1069 + case EROFS: 1.1070 + PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err); 1.1071 + break; 1.1072 + default: 1.1073 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1074 + break; 1.1075 + } 1.1076 +} 1.1077 + 1.1078 +void _MD_unix_map_listen_error(int err) 1.1079 +{ 1.1080 + switch (err) { 1.1081 + case EBADF: 1.1082 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1083 + break; 1.1084 +#if !defined(BEOS) 1.1085 + case ENOTSOCK: 1.1086 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1087 + break; 1.1088 +#endif 1.1089 +#if !defined(BEOS) 1.1090 + case EOPNOTSUPP: 1.1091 + PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err); 1.1092 + break; 1.1093 +#endif 1.1094 + default: 1.1095 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1096 + break; 1.1097 + } 1.1098 +} 1.1099 + 1.1100 +void _MD_unix_map_shutdown_error(int err) 1.1101 +{ 1.1102 + switch (err) { 1.1103 + case EBADF: 1.1104 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1105 + break; 1.1106 +#if !defined(BEOS) 1.1107 + case ENOTSOCK: 1.1108 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1109 + break; 1.1110 +#endif 1.1111 + case ENOTCONN: 1.1112 + PR_SetError(PR_NOT_CONNECTED_ERROR, err); 1.1113 + break; 1.1114 + case ENOMEM: 1.1115 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.1116 + break; 1.1117 +#ifdef ENOSR 1.1118 + case ENOSR: 1.1119 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1120 + break; 1.1121 +#endif 1.1122 + default: 1.1123 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1124 + break; 1.1125 + } 1.1126 +} 1.1127 + 1.1128 +void _MD_unix_map_socketpair_error(int err) 1.1129 +{ 1.1130 + switch (err) { 1.1131 + case EMFILE: 1.1132 + PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err); 1.1133 + break; 1.1134 + case EFAULT: 1.1135 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1136 + break; 1.1137 + case ENOMEM: 1.1138 +#ifdef ENOSR 1.1139 + case ENOSR: 1.1140 +#endif 1.1141 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1142 + break; 1.1143 + case EAFNOSUPPORT: 1.1144 + case EPROTONOSUPPORT: 1.1145 +#if !defined(BEOS) 1.1146 + case EOPNOTSUPP: 1.1147 +#endif 1.1148 + default: 1.1149 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1150 + break; 1.1151 + } 1.1152 +} 1.1153 + 1.1154 +void _MD_unix_map_getsockname_error(int err) 1.1155 +{ 1.1156 + switch (err) { 1.1157 + case EBADF: 1.1158 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1159 + break; 1.1160 +#if !defined(BEOS) 1.1161 + case ENOTSOCK: 1.1162 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1163 + break; 1.1164 +#endif 1.1165 + case EFAULT: 1.1166 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1167 + break; 1.1168 +#if !defined(SCO) 1.1169 + case ENOBUFS: 1.1170 +#endif /* !defined(SCO) */ 1.1171 + case ENOMEM: 1.1172 +#ifdef ENOSR 1.1173 + case ENOSR: 1.1174 +#endif 1.1175 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1176 + break; 1.1177 + default: 1.1178 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1179 + break; 1.1180 + } 1.1181 +} 1.1182 + 1.1183 +void _MD_unix_map_getpeername_error(int err) 1.1184 +{ 1.1185 + 1.1186 + switch (err) { 1.1187 + case EBADF: 1.1188 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1189 + break; 1.1190 +#if !defined(BEOS) 1.1191 + case ENOTSOCK: 1.1192 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1193 + break; 1.1194 +#endif 1.1195 + case ENOTCONN: 1.1196 + PR_SetError(PR_NOT_CONNECTED_ERROR, err); 1.1197 + break; 1.1198 + case EFAULT: 1.1199 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1200 + break; 1.1201 +#if !defined(SCO) 1.1202 + case ENOBUFS: 1.1203 +#endif /* !defined(SCO) */ 1.1204 + case ENOMEM: 1.1205 +#ifdef ENOSR 1.1206 + case ENOSR: 1.1207 +#endif 1.1208 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1209 + break; 1.1210 + default: 1.1211 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1212 + break; 1.1213 + } 1.1214 +} 1.1215 + 1.1216 +void _MD_unix_map_getsockopt_error(int err) 1.1217 +{ 1.1218 + switch (err) { 1.1219 + case EBADF: 1.1220 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1221 + break; 1.1222 +#if !defined(BEOS) 1.1223 + case ENOTSOCK: 1.1224 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1225 + break; 1.1226 +#endif 1.1227 + case ENOPROTOOPT: 1.1228 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.1229 + break; 1.1230 + case EFAULT: 1.1231 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1232 + break; 1.1233 + case EINVAL: 1.1234 + PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err); 1.1235 + break; 1.1236 + case ENOMEM: 1.1237 +#ifdef ENOSR 1.1238 + case ENOSR: 1.1239 +#endif 1.1240 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1241 + break; 1.1242 + default: 1.1243 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1244 + break; 1.1245 + } 1.1246 +} 1.1247 + 1.1248 +void _MD_unix_map_setsockopt_error(int err) 1.1249 +{ 1.1250 + switch (err) { 1.1251 + case EBADF: 1.1252 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1253 + break; 1.1254 +#if !defined(BEOS) 1.1255 + case ENOTSOCK: 1.1256 + PR_SetError(PR_NOT_SOCKET_ERROR, err); 1.1257 + break; 1.1258 +#endif 1.1259 + case ENOPROTOOPT: 1.1260 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.1261 + break; 1.1262 + case EFAULT: 1.1263 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1264 + break; 1.1265 + case EINVAL: 1.1266 + PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err); 1.1267 + break; 1.1268 + case ENOMEM: 1.1269 +#ifdef ENOSR 1.1270 + case ENOSR: 1.1271 +#endif 1.1272 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1273 + break; 1.1274 + default: 1.1275 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1276 + break; 1.1277 + } 1.1278 +} 1.1279 + 1.1280 +void _MD_unix_map_open_error(int err) 1.1281 +{ 1.1282 + switch (err) { 1.1283 + case EACCES: 1.1284 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.1285 + break; 1.1286 + case EAGAIN: 1.1287 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1288 + break; 1.1289 + case EBUSY: 1.1290 + PR_SetError(PR_IO_ERROR, err); 1.1291 + break; 1.1292 + case EEXIST: 1.1293 + PR_SetError(PR_FILE_EXISTS_ERROR, err); 1.1294 + break; 1.1295 + case EFAULT: 1.1296 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1297 + break; 1.1298 + case EINTR: 1.1299 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.1300 + break; 1.1301 + case EINVAL: 1.1302 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.1303 + break; 1.1304 + case EIO: 1.1305 + PR_SetError(PR_IO_ERROR, err); 1.1306 + break; 1.1307 + case EISDIR: 1.1308 + PR_SetError(PR_IS_DIRECTORY_ERROR, err); 1.1309 + break; 1.1310 + case ELOOP: 1.1311 + PR_SetError(PR_LOOP_ERROR, err); 1.1312 + break; 1.1313 + case EMFILE: 1.1314 + PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err); 1.1315 + break; 1.1316 + case ENAMETOOLONG: 1.1317 + PR_SetError(PR_NAME_TOO_LONG_ERROR, err); 1.1318 + break; 1.1319 + case ENFILE: 1.1320 + PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err); 1.1321 + break; 1.1322 + case ENODEV: 1.1323 + case ENOENT: 1.1324 + case ENXIO: 1.1325 + PR_SetError(PR_FILE_NOT_FOUND_ERROR, err); 1.1326 + break; 1.1327 + case ENOMEM: 1.1328 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1329 + break; 1.1330 + case ENOSPC: 1.1331 + PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err); 1.1332 + break; 1.1333 +#ifdef ENOSR 1.1334 + case ENOSR: 1.1335 +#endif 1.1336 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1337 + break; 1.1338 + case ENOTDIR: 1.1339 + PR_SetError(PR_NOT_DIRECTORY_ERROR, err); 1.1340 + break; 1.1341 + case EPERM: 1.1342 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.1343 + break; 1.1344 + case ETIMEDOUT: 1.1345 + PR_SetError(PR_REMOTE_FILE_ERROR, err); 1.1346 + break; 1.1347 + case EROFS: 1.1348 + PR_SetError(PR_READ_ONLY_FILESYSTEM_ERROR, err); 1.1349 + break; 1.1350 + default: 1.1351 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1352 + break; 1.1353 + } 1.1354 +} 1.1355 + 1.1356 +void _MD_unix_map_mmap_error(int err) 1.1357 +{ 1.1358 + 1.1359 + switch (err) { 1.1360 + case EBADF: 1.1361 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1362 + break; 1.1363 + case EAGAIN: 1.1364 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1365 + break; 1.1366 + case EACCES: 1.1367 + PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err); 1.1368 + break; 1.1369 + case ENOMEM: 1.1370 + PR_SetError(PR_OUT_OF_MEMORY_ERROR, err); 1.1371 + break; 1.1372 + default: 1.1373 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1374 + break; 1.1375 + } 1.1376 +} 1.1377 + 1.1378 +void _MD_unix_map_gethostname_error(int err) 1.1379 +{ 1.1380 + switch (err) { 1.1381 + case EFAULT: 1.1382 + PR_SetError(PR_ACCESS_FAULT_ERROR, err); 1.1383 + break; 1.1384 + default: 1.1385 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1386 + break; 1.1387 + } 1.1388 +} 1.1389 + 1.1390 +void _MD_unix_map_select_error(int err) 1.1391 +{ 1.1392 + switch (err) { 1.1393 + case EBADF: 1.1394 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1395 + break; 1.1396 + case EINTR: 1.1397 + PR_SetError(PR_PENDING_INTERRUPT_ERROR, err); 1.1398 + break; 1.1399 + case EINVAL: 1.1400 + PR_SetError(PR_INVALID_ARGUMENT_ERROR, err); 1.1401 + break; 1.1402 + default: 1.1403 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1404 + break; 1.1405 + } 1.1406 +} 1.1407 + 1.1408 +void _MD_unix_map_poll_error(int err) 1.1409 +{ 1.1410 + PRErrorCode prerror; 1.1411 + switch (err) { 1.1412 + case EAGAIN: 1.1413 + prerror = PR_INSUFFICIENT_RESOURCES_ERROR; 1.1414 + break; 1.1415 + case EINVAL: 1.1416 + prerror = PR_INVALID_ARGUMENT_ERROR; 1.1417 + break; 1.1418 + case EFAULT: 1.1419 + prerror = PR_ACCESS_FAULT_ERROR; 1.1420 + break; 1.1421 + default: 1.1422 + prerror = PR_UNKNOWN_ERROR; 1.1423 + break; 1.1424 + } 1.1425 + PR_SetError(prerror, err); 1.1426 +} 1.1427 + 1.1428 +void _MD_unix_map_flock_error(int err) 1.1429 +{ 1.1430 + switch (err) { 1.1431 + case EBADF: 1.1432 + case EINVAL: 1.1433 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1434 + break; 1.1435 + case EWOULDBLOCK: 1.1436 + PR_SetError(PR_FILE_IS_LOCKED_ERROR, err); 1.1437 + break; 1.1438 + default: 1.1439 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1440 + break; 1.1441 + } 1.1442 +} 1.1443 + 1.1444 +void _MD_unix_map_lockf_error(int err) 1.1445 +{ 1.1446 + switch (err) { 1.1447 + case EBADF: 1.1448 + PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1.1449 + break; 1.1450 + case EACCES: 1.1451 + PR_SetError(PR_FILE_IS_LOCKED_ERROR, err); 1.1452 + break; 1.1453 + case EDEADLK: 1.1454 + PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err); 1.1455 + break; 1.1456 + default: 1.1457 + PR_SetError(PR_UNKNOWN_ERROR, err); 1.1458 + break; 1.1459 + } 1.1460 +} 1.1461 + 1.1462 +#ifdef HPUX11 1.1463 +void _MD_hpux_map_sendfile_error(int oserror) 1.1464 +{ 1.1465 + PRErrorCode prerror; 1.1466 + 1.1467 + switch (oserror) { 1.1468 + case ENOTSOCK: 1.1469 + prerror = PR_NOT_SOCKET_ERROR; 1.1470 + break; 1.1471 + case EFAULT: 1.1472 + prerror = PR_ACCESS_FAULT_ERROR; 1.1473 + break; 1.1474 + case ENOBUFS: 1.1475 + prerror = PR_INSUFFICIENT_RESOURCES_ERROR; 1.1476 + break; 1.1477 + case EINVAL: 1.1478 + prerror = PR_INVALID_ARGUMENT_ERROR; 1.1479 + break; 1.1480 + case ENOTCONN: 1.1481 + prerror = PR_NOT_CONNECTED_ERROR; 1.1482 + break; 1.1483 + case EPIPE: 1.1484 + prerror = PR_CONNECT_RESET_ERROR; 1.1485 + break; 1.1486 + case ENOMEM: 1.1487 + prerror = PR_OUT_OF_MEMORY_ERROR; 1.1488 + break; 1.1489 + case EOPNOTSUPP: 1.1490 + prerror = PR_NOT_TCP_SOCKET_ERROR; 1.1491 + break; 1.1492 + default: 1.1493 + prerror = PR_UNKNOWN_ERROR; 1.1494 + } 1.1495 + PR_SetError(prerror, oserror); 1.1496 +} 1.1497 +#endif /* HPUX11 */