Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Firefox/nsprpub/pr/src/md/unix/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 15 kB image not shown  

Quelle  unix_errors.c   Sprache: C

 
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include "primpl.h"
#if defined(_PR_POLL_AVAILABLE)
#  include <poll.h>
#endif
#include <errno.h>

void _MD_unix_map_default_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EACCES:
      prError = PR_NO_ACCESS_RIGHTS_ERROR;
      break;
    case EADDRINUSE:
      prError = PR_ADDRESS_IN_USE_ERROR;
      break;
    case EADDRNOTAVAIL:
      prError = PR_ADDRESS_NOT_AVAILABLE_ERROR;
      break;
    case EAFNOSUPPORT:
      prError = PR_ADDRESS_NOT_SUPPORTED_ERROR;
      break;
    case EAGAIN:
      prError = PR_WOULD_BLOCK_ERROR;
      break;
      /*
       * On QNX and Neutrino, EALREADY is defined as EBUSY.
       */

#if EALREADY != EBUSY
    case EALREADY:
      prError = PR_ALREADY_INITIATED_ERROR;
      break;
#endif
    case EBADF:
      prError = PR_BAD_DESCRIPTOR_ERROR;
      break;
#ifdef EBADMSG
    case EBADMSG:
      prError = PR_IO_ERROR;
      break;
#endif
    case EBUSY:
      prError = PR_FILESYSTEM_MOUNTED_ERROR;
      break;
    case ECONNABORTED:
      prError = PR_CONNECT_ABORTED_ERROR;
      break;
    case ECONNREFUSED:
      prError = PR_CONNECT_REFUSED_ERROR;
      break;
    case ECONNRESET:
      prError = PR_CONNECT_RESET_ERROR;
      break;
    case EDEADLK:
      prError = PR_DEADLOCK_ERROR;
      break;
#ifdef EDIRCORRUPTED
    case EDIRCORRUPTED:
      prError = PR_DIRECTORY_CORRUPTED_ERROR;
      break;
#endif
#ifdef EDQUOT
    case EDQUOT:
      prError = PR_NO_DEVICE_SPACE_ERROR;
      break;
#endif
    case EEXIST:
      prError = PR_FILE_EXISTS_ERROR;
      break;
    case EFAULT:
      prError = PR_ACCESS_FAULT_ERROR;
      break;
    case EFBIG:
      prError = PR_FILE_TOO_BIG_ERROR;
      break;
    case EHOSTUNREACH:
    case EHOSTDOWN:
      prError = PR_HOST_UNREACHABLE_ERROR;
      break;
    case EINPROGRESS:
      prError = PR_IN_PROGRESS_ERROR;
      break;
    case EINTR:
      prError = PR_PENDING_INTERRUPT_ERROR;
      break;
    case EINVAL:
      prError = PR_INVALID_ARGUMENT_ERROR;
      break;
    case EIO:
      prError = PR_IO_ERROR;
      break;
    case EISCONN:
      prError = PR_IS_CONNECTED_ERROR;
      break;
    case EISDIR:
      prError = PR_IS_DIRECTORY_ERROR;
      break;
    case ELOOP:
      prError = PR_LOOP_ERROR;
      break;
    case EMFILE:
      prError = PR_PROC_DESC_TABLE_FULL_ERROR;
      break;
    case EMLINK:
      prError = PR_MAX_DIRECTORY_ENTRIES_ERROR;
      break;
    case EMSGSIZE:
      prError = PR_INVALID_ARGUMENT_ERROR;
      break;
#ifdef EMULTIHOP
    case EMULTIHOP:
      prError = PR_REMOTE_FILE_ERROR;
      break;
#endif
    case ENAMETOOLONG:
      prError = PR_NAME_TOO_LONG_ERROR;
      break;
    case ENETUNREACH:
      prError = PR_NETWORK_UNREACHABLE_ERROR;
      break;
    case ENFILE:
      prError = PR_SYS_DESC_TABLE_FULL_ERROR;
      break;
      /*
       * On SCO OpenServer 5, ENOBUFS is defined as ENOSR.
       */

#if defined(ENOBUFS) && (ENOBUFS != ENOSR)
    case ENOBUFS:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
#endif
    case ENODEV:
      prError = PR_FILE_NOT_FOUND_ERROR;
      break;
    case ENOENT:
      prError = PR_FILE_NOT_FOUND_ERROR;
      break;
    case ENOLCK:
      prError = PR_FILE_IS_LOCKED_ERROR;
      break;
#ifdef ENOLINK
    case ENOLINK:
      prError = PR_REMOTE_FILE_ERROR;
      break;
#endif
    case ENOMEM:
      prError = PR_OUT_OF_MEMORY_ERROR;
      break;
    case ENOPROTOOPT:
      prError = PR_INVALID_ARGUMENT_ERROR;
      break;
    case ENOSPC:
      prError = PR_NO_DEVICE_SPACE_ERROR;
      break;
#ifdef ENOSR
    case ENOSR:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
#endif
    case ENOSYS:
      prError = PR_NOT_IMPLEMENTED_ERROR;
      break;
    case ENOTCONN:
      prError = PR_NOT_CONNECTED_ERROR;
      break;
    case ENOTDIR:
      prError = PR_NOT_DIRECTORY_ERROR;
      break;
    case ENOTSOCK:
      prError = PR_NOT_SOCKET_ERROR;
      break;
    case ENXIO:
      prError = PR_FILE_NOT_FOUND_ERROR;
      break;
    case EOPNOTSUPP:
      prError = PR_NOT_TCP_SOCKET_ERROR;
      break;
#ifdef EOVERFLOW
    case EOVERFLOW:
      prError = PR_BUFFER_OVERFLOW_ERROR;
      break;
#endif
    case EPERM:
      prError = PR_NO_ACCESS_RIGHTS_ERROR;
      break;
    case EPIPE:
      prError = PR_CONNECT_RESET_ERROR;
      break;
#ifdef EPROTO
    case EPROTO:
      prError = PR_IO_ERROR;
      break;
#endif
    case EPROTONOSUPPORT:
      prError = PR_PROTOCOL_NOT_SUPPORTED_ERROR;
      break;
    case EPROTOTYPE:
      prError = PR_ADDRESS_NOT_SUPPORTED_ERROR;
      break;
    case ERANGE:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    case EROFS:
      prError = PR_READ_ONLY_FILESYSTEM_ERROR;
      break;
    case ESPIPE:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    case ETIMEDOUT:
      prError = PR_IO_TIMEOUT_ERROR;
      break;
#if EWOULDBLOCK != EAGAIN
    case EWOULDBLOCK:
      prError = PR_WOULD_BLOCK_ERROR;
      break;
#endif
    case EXDEV:
      prError = PR_NOT_SAME_DEVICE_ERROR;
      break;
    default:
      prError = PR_UNKNOWN_ERROR;
      break;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_opendir_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_closedir_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_BAD_DESCRIPTOR_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_readdir_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case 0:
    case ENOENT:
      prError = PR_NO_MORE_FILES_ERROR;
      break;
#ifdef EOVERFLOW
    case EOVERFLOW:
      prError = PR_IO_ERROR;
      break;
#endif
    case EINVAL:
      prError = PR_IO_ERROR;
      break;
    case ENXIO:
      prError = PR_IO_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_unlink_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EPERM:
      prError = PR_IS_DIRECTORY_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_stat_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_fstat_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_rename_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EEXIST:
      prError = PR_DIRECTORY_NOT_EMPTY_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_access_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_mkdir_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_rmdir_error(int err) {
  PRErrorCode prError;

  switch (err) {
    /*
     * On AIX 4.3, ENOTEMPTY is defined as EEXIST.
     */

#if ENOTEMPTY != EEXIST
    case ENOTEMPTY:
      prError = PR_DIRECTORY_NOT_EMPTY_ERROR;
      break;
#endif
    case EEXIST:
      prError = PR_DIRECTORY_NOT_EMPTY_ERROR;
      break;
    case EINVAL:
      prError = PR_DIRECTORY_NOT_EMPTY_ERROR;
      break;
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_read_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    case ENXIO:
      prError = PR_INVALID_ARGUMENT_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_write_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    case ENXIO:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_lseek_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_fsync_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    case EINVAL:
      prError = PR_INVALID_METHOD_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_close_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_socket_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_socketavailable_error(int err) {
  PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
}

void _MD_unix_map_recv_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_recvfrom_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_send_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_sendto_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_writev_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_accept_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENODEV:
      prError = PR_NOT_TCP_SOCKET_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_connect_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENXIO:
      prError = PR_IO_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_bind_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_SOCKET_ADDRESS_IS_BOUND_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_listen_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_shutdown_error(int err) { _MD_unix_map_default_error(err); }

void _MD_unix_map_socketpair_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_getsockname_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_getpeername_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_getsockopt_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_BUFFER_OVERFLOW_ERROR;
      break;
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_setsockopt_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_BUFFER_OVERFLOW_ERROR;
      break;
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_open_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EAGAIN:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    case EBUSY:
      prError = PR_IO_ERROR;
      break;
    case ENODEV:
      prError = PR_FILE_NOT_FOUND_ERROR;
      break;
    case ENOMEM:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
#ifdef EOVERFLOW
    case EOVERFLOW:
      prError = PR_FILE_TOO_BIG_ERROR;
      break;
#endif
    case ETIMEDOUT:
      prError = PR_REMOTE_FILE_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_mmap_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EAGAIN:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    case EMFILE:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    case ENODEV:
      prError = PR_OPERATION_NOT_SUPPORTED_ERROR;
      break;
    case ENXIO:
      prError = PR_INVALID_ARGUMENT_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_gethostname_error(int err) {
  _MD_unix_map_default_error(err);
}

void _MD_unix_map_select_error(int err) { _MD_unix_map_default_error(err); }

#if defined(_PR_POLL_AVAILABLE) || defined(_PR_NEED_FAKE_POLL)
void _MD_unix_map_poll_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EAGAIN:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_poll_revents_error(int err) {
  if (err & POLLNVAL) {
    PR_SetError(PR_BAD_DESCRIPTOR_ERROR, EBADF);
  } else if (err & POLLHUP) {
    PR_SetError(PR_CONNECT_RESET_ERROR, EPIPE);
  } else if (err & POLLERR) {
    PR_SetError(PR_IO_ERROR, EIO);
  } else {
    PR_SetError(PR_UNKNOWN_ERROR, err);
  }
}
#endif /* _PR_POLL_AVAILABLE || _PR_NEED_FAKE_POLL */

void _MD_unix_map_flock_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EINVAL:
      prError = PR_BAD_DESCRIPTOR_ERROR;
      break;
    case EWOULDBLOCK:
      prError = PR_FILE_IS_LOCKED_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

void _MD_unix_map_lockf_error(int err) {
  PRErrorCode prError;

  switch (err) {
    case EACCES:
      prError = PR_FILE_IS_LOCKED_ERROR;
      break;
    case EDEADLK:
      prError = PR_INSUFFICIENT_RESOURCES_ERROR;
      break;
    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}

#ifdef AIX
void _MD_aix_map_sendfile_error(int err) { _MD_unix_map_default_error(err); }
#endif /* AIX */

#ifdef HPUX11
void _MD_hpux_map_sendfile_error(int err) { _MD_unix_map_default_error(err); }
#endif /* HPUX11 */

#ifdef SOLARIS
void _MD_solaris_map_sendfile_error(int err) {
  PRErrorCode prError;

  switch (err) {
    /*
     * Solaris defines a 0 return value for sendfile to mean end-of-file.
     */

    case 0:
      prError = PR_END_OF_FILE_ERROR;
      break;

    default:
      _MD_unix_map_default_error(err);
      return;
  }
  PR_SetError(prError, err);
}
#endif /* SOLARIS */

#ifdef LINUX
void _MD_linux_map_sendfile_error(int err) { _MD_unix_map_default_error(err); }
#endif /* LINUX */

Messung V0.5
C=99 H=100 G=99

¤ Dauer der Verarbeitung: 0.41 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.