15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file essentially replicates NSPR's source for the functions that 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * map system-specific error codes to NSPR error codes. We would use 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NSPR's functions, instead of duplicating them, but they're private. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * As long as SSL's server session cache code must do platform native I/O 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to accomplish its job, and NSPR's error mapping functions remain private, 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * this code will continue to need to be replicated. 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * This Source Code Form is subject to the terms of the Mozilla Public 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * License, v. 2.0. If a copy of the MPL was not distributed with this 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if 0 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "primpl.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define _PR_POLL_AVAILABLE 1 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "prerror.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (__bsdi__) || defined(NTO) || defined(DARWIN) || defined(BEOS) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef _PR_POLL_AVAILABLE 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(_PR_POLL_AVAILABLE) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <poll.h> 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h> 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* forward declarations. */ 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_default_error(int err); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_opendir_error(int err) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_closedir_error(int err) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_BAD_DESCRIPTOR_ERROR; break; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_readdir_error(int err) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOENT: prError = PR_NO_MORE_FILES_ERROR; break; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EOVERFLOW 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EOVERFLOW: prError = PR_IO_ERROR; break; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_IO_ERROR; break; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_IO_ERROR; break; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_unlink_error(int err) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPERM: prError = PR_IS_DIRECTORY_ERROR; break; 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_stat_error(int err) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_fstat_error(int err) 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_rename_error(int err) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EEXIST: prError = PR_DIRECTORY_NOT_EMPTY_ERROR; break; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_access_error(int err) 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_mkdir_error(int err) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_rmdir_error(int err) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EEXIST: prError = PR_DIRECTORY_NOT_EMPTY_ERROR; break; 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_DIRECTORY_NOT_EMPTY_ERROR; break; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_read_error(int err) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_INVALID_METHOD_ERROR; break; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_INVALID_ARGUMENT_ERROR; break; 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_write_error(int err) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_INVALID_METHOD_ERROR; break; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_INVALID_METHOD_ERROR; break; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_lseek_error(int err) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_fsync_error(int err) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_INVALID_METHOD_ERROR; break; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_close_error(int err) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_socket_error(int err) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_socketavailable_error(int err) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_recv_error(int err) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_recvfrom_error(int err) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_send_error(int err) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_sendto_error(int err) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_writev_error(int err) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_accept_error(int err) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENODEV: prError = PR_NOT_TCP_SOCKET_ERROR; break; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_connect_error(int err) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EACCES: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(UNIXWARE) || defined(SNI) || defined(NEC) 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * On some platforms, if we connect to a port on the local host 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * (the loopback address) that no process is listening on, we get 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * EIO instead of ECONNREFUSED. 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EIO: prError = PR_CONNECT_REFUSED_ERROR; break; 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ELOOP: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOENT: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_IO_ERROR; break; 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_bind_error(int err) 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_SOCKET_ADDRESS_IS_BOUND_ERROR; break; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * UNIX domain sockets are not supported in NSPR 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EIO: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EISDIR: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ELOOP: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOENT: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOTDIR: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EROFS: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_listen_error(int err) 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_shutdown_error(int err) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_socketpair_error(int err) 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_getsockname_error(int err) 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_getpeername_error(int err) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_getsockopt_error(int err) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_BUFFER_OVERFLOW_ERROR; break; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_setsockopt_error(int err) 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_BUFFER_OVERFLOW_ERROR; break; 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_open_error(int err) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAGAIN: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EBUSY: prError = PR_IO_ERROR; break; 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENODEV: prError = PR_FILE_NOT_FOUND_ERROR; break; 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_REMOTE_FILE_ERROR; break; 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_mmap_error(int err) 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAGAIN: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EMFILE: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENODEV: prError = PR_OPERATION_NOT_SUPPORTED_ERROR; break; 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_INVALID_ARGUMENT_ERROR; break; 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_gethostname_error(int err) 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_select_error(int err) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _PR_POLL_AVAILABLE 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_poll_error(int err) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAGAIN: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_poll_revents_error(int err) 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (err & POLLNVAL) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(PR_BAD_DESCRIPTOR_ERROR, EBADF); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (err & POLLHUP) 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(PR_CONNECT_RESET_ERROR, EPIPE); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else if (err & POLLERR) 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(PR_IO_ERROR, EIO); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) else 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(PR_UNKNOWN_ERROR, err); 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* _PR_POLL_AVAILABLE */ 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_flock_error(int err) 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_BAD_DESCRIPTOR_ERROR; break; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EWOULDBLOCK: prError = PR_FILE_IS_LOCKED_ERROR; break; 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_lockf_error(int err) 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err) { 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EACCES: prError = PR_FILE_IS_LOCKED_ERROR; break; 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EDEADLK: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: nss_MD_unix_map_default_error(err); return; 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HPUX11 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_hpux_map_sendfile_error(int err) 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) nss_MD_unix_map_default_error(err); 4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* HPUX11 */ 4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void nss_MD_unix_map_default_error(int err) 4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PRErrorCode prError; 4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (err ) { 4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EACCES: prError = PR_NO_ACCESS_RIGHTS_ERROR; break; 4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EADDRINUSE: prError = PR_ADDRESS_IN_USE_ERROR; break; 4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EADDRNOTAVAIL: prError = PR_ADDRESS_NOT_AVAILABLE_ERROR; break; 4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAFNOSUPPORT: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EAGAIN: prError = PR_WOULD_BLOCK_ERROR; break; 4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /* 4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * On QNX and Neutrino, EALREADY is defined as EBUSY. 4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if EALREADY != EBUSY 4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EALREADY: prError = PR_ALREADY_INITIATED_ERROR; break; 4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EBADF: prError = PR_BAD_DESCRIPTOR_ERROR; break; 4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EBADMSG 4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EBADMSG: prError = PR_IO_ERROR; break; 4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EBUSY: prError = PR_FILESYSTEM_MOUNTED_ERROR; break; 4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ECONNREFUSED: prError = PR_CONNECT_REFUSED_ERROR; break; 4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ECONNRESET: prError = PR_CONNECT_RESET_ERROR; break; 4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EDEADLK: prError = PR_DEADLOCK_ERROR; break; 4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EDIRCORRUPTED 4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EDIRCORRUPTED: prError = PR_DIRECTORY_CORRUPTED_ERROR; break; 4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EDQUOT 4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EDQUOT: prError = PR_NO_DEVICE_SPACE_ERROR; break; 4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EEXIST: prError = PR_FILE_EXISTS_ERROR; break; 4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EFAULT: prError = PR_ACCESS_FAULT_ERROR; break; 4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EFBIG: prError = PR_FILE_TOO_BIG_ERROR; break; 4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINPROGRESS: prError = PR_IN_PROGRESS_ERROR; break; 4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINTR: prError = PR_PENDING_INTERRUPT_ERROR; break; 4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EINVAL: prError = PR_INVALID_ARGUMENT_ERROR; break; 4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EIO: prError = PR_IO_ERROR; break; 4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EISCONN: prError = PR_IS_CONNECTED_ERROR; break; 4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EISDIR: prError = PR_IS_DIRECTORY_ERROR; break; 4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ELOOP: prError = PR_LOOP_ERROR; break; 4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EMFILE: prError = PR_PROC_DESC_TABLE_FULL_ERROR; break; 4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EMLINK: prError = PR_MAX_DIRECTORY_ENTRIES_ERROR; break; 4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EMSGSIZE: prError = PR_INVALID_ARGUMENT_ERROR; break; 4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EMULTIHOP 4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EMULTIHOP: prError = PR_REMOTE_FILE_ERROR; break; 4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENAMETOOLONG: prError = PR_NAME_TOO_LONG_ERROR; break; 4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENETUNREACH: prError = PR_NETWORK_UNREACHABLE_ERROR; break; 4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENFILE: prError = PR_SYS_DESC_TABLE_FULL_ERROR; break; 4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(SCO) 4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOBUFS: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENODEV: prError = PR_FILE_NOT_FOUND_ERROR; break; 4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOENT: prError = PR_FILE_NOT_FOUND_ERROR; break; 4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOLCK: prError = PR_FILE_IS_LOCKED_ERROR; break; 4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef ENOLINK 4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOLINK: prError = PR_REMOTE_FILE_ERROR; break; 4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOMEM: prError = PR_OUT_OF_MEMORY_ERROR; break; 4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOPROTOOPT: prError = PR_INVALID_ARGUMENT_ERROR; break; 4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOSPC: prError = PR_NO_DEVICE_SPACE_ERROR; break; 4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef ENOSR 4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOSR: prError = PR_INSUFFICIENT_RESOURCES_ERROR; break; 4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOTCONN: prError = PR_NOT_CONNECTED_ERROR; break; 4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOTDIR: prError = PR_NOT_DIRECTORY_ERROR; break; 4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENOTSOCK: prError = PR_NOT_SOCKET_ERROR; break; 4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ENXIO: prError = PR_FILE_NOT_FOUND_ERROR; break; 4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EOPNOTSUPP: prError = PR_NOT_TCP_SOCKET_ERROR; break; 4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EOVERFLOW 4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EOVERFLOW: prError = PR_BUFFER_OVERFLOW_ERROR; break; 4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPERM: prError = PR_NO_ACCESS_RIGHTS_ERROR; break; 4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPIPE: prError = PR_CONNECT_RESET_ERROR; break; 5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef EPROTO 5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPROTO: prError = PR_IO_ERROR; break; 5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPROTONOSUPPORT: prError = PR_PROTOCOL_NOT_SUPPORTED_ERROR; break; 5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EPROTOTYPE: prError = PR_ADDRESS_NOT_SUPPORTED_ERROR; break; 5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ERANGE: prError = PR_INVALID_METHOD_ERROR; break; 5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EROFS: prError = PR_READ_ONLY_FILESYSTEM_ERROR; break; 5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ESPIPE: prError = PR_INVALID_METHOD_ERROR; break; 5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case ETIMEDOUT: prError = PR_IO_TIMEOUT_ERROR; break; 5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if EWOULDBLOCK != EAGAIN 5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EWOULDBLOCK: prError = PR_WOULD_BLOCK_ERROR; break; 5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EXDEV: prError = PR_NOT_SAME_DEVICE_ERROR; break; 5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) default: prError = PR_UNKNOWN_ERROR; break; 5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PR_SetError(prError, err); 5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 518