home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / nsprpub / pr / src / md / windows / w16error.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  8.3 KB  |  234 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /*
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  * 
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  * 
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18.  
  19. /*
  20. ** Note: A single error mapping function is provided.
  21. **
  22. */ 
  23. #include "prerror.h"
  24. #include <errno.h>
  25. #include <winsock.h>
  26.  
  27.  
  28. void _PR_MD_map_error( int err )
  29. {
  30.  
  31.     switch ( err )
  32.     {
  33.         case  ENOENT:   /* No such file or directory */
  34.             PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
  35.             break;
  36.         case  E2BIG:    /* Argument list too big */
  37.             PR_SetError( PR_INVALID_ARGUMENT_ERROR, err );
  38.             break;
  39.         case  ENOEXEC:  /* Exec format error */
  40.             PR_SetError( PR_UNKNOWN_ERROR, err );
  41.             break;
  42.         case  EBADF:    /* Bad file number */
  43.             PR_SetError( PR_BAD_DESCRIPTOR_ERROR, err );
  44.             break;
  45.         case  ENOMEM:   /* Not enough Memory */
  46.             PR_SetError( PR_OUT_OF_MEMORY_ERROR, err );
  47.             break;
  48.         case  EACCES:   /* Permission denied */
  49.             PR_SetError( PR_NO_ACCESS_RIGHTS_ERROR, err );
  50.             break;
  51.         case  EEXIST:   /* File exists */
  52.         
  53.  /* RESTART here */
  54.             PR_SetError( PR_UNKNOWN_ERROR, err );
  55.             break;
  56.         case  EXDEV:    /* Cross device link */
  57.             PR_SetError( PR_UNKNOWN_ERROR, err );
  58.             break;
  59.         case  EINVAL:   /* Invalid argument */
  60.             PR_SetError( PR_UNKNOWN_ERROR, err );
  61.             break;
  62.         case  ENFILE:   /* File table overflow */
  63.             PR_SetError( PR_UNKNOWN_ERROR, err );
  64.             break;
  65.         case  EMFILE:   /* Too many open files */
  66.             PR_SetError( PR_UNKNOWN_ERROR, err );
  67.             break;
  68.         case  ENOSPC:   /* No space left on device */
  69.             PR_SetError( PR_UNKNOWN_ERROR, err );
  70.             break;
  71.         /* math errors */
  72.         case  EDOM:     /* Argument too large */
  73.             PR_SetError( PR_UNKNOWN_ERROR, err );
  74.             break;
  75.         case  ERANGE:   /* Result too large */
  76.             PR_SetError( PR_UNKNOWN_ERROR, err );
  77.             break;
  78.         /* file locking error */
  79.         case  EDEADLK:      /* Resource deadlock would occur */
  80.             PR_SetError( PR_UNKNOWN_ERROR, err );
  81.             break;
  82.         case  EINTR:    /* Interrupt */
  83.             PR_SetError( PR_UNKNOWN_ERROR, err );
  84.             break;
  85.         case  ECHILD:   /* Child does not exist */
  86.             PR_SetError( PR_UNKNOWN_ERROR, err );
  87.             break;
  88.         /* POSIX errors */
  89.         case  EAGAIN:   /* Resource unavailable, try again */
  90.             PR_SetError( PR_UNKNOWN_ERROR, err );
  91.             break;
  92.         case  EBUSY:    /* Device or Resource is busy */
  93.             PR_SetError( PR_UNKNOWN_ERROR, err );
  94.             break;
  95.         case  EFBIG:    /* File too large */
  96.             PR_SetError( PR_UNKNOWN_ERROR, err );
  97.             break;
  98.         case  EIO:      /* I/O error */
  99.             PR_SetError( PR_IO_ERROR, err );
  100.             break;
  101.         case  EISDIR:   /* Is a directory */
  102.             PR_SetError( PR_UNKNOWN_ERROR, err );
  103.             break;
  104.         case  ENOTDIR:  /* Not a directory */
  105.             PR_SetError( PR_UNKNOWN_ERROR, err );
  106.             break;
  107.         case  EMLINK:   /* Too many links */
  108.             PR_SetError( PR_UNKNOWN_ERROR, err );
  109.             break;
  110.         case  ENOTBLK:  /* Block device required */
  111.             PR_SetError( PR_UNKNOWN_ERROR, err );
  112.             break;
  113.         case  ENOTTY:   /* Not a character device */
  114.             PR_SetError( PR_UNKNOWN_ERROR, err );
  115.             break;
  116.         case  ENXIO:    /* No such device or address */
  117.             PR_SetError( PR_UNKNOWN_ERROR, err );
  118.             break;
  119.         case  EPERM:    /* Not owner */
  120.             PR_SetError( PR_UNKNOWN_ERROR, err );
  121.             break;
  122.         case  EPIPE:    /* Broken pipe */
  123.             PR_SetError( PR_UNKNOWN_ERROR, err );
  124.             break;
  125.         case  EROFS:    /* Read only file system */
  126.             PR_SetError( PR_UNKNOWN_ERROR, err );
  127.             break;
  128.         case  ESPIPE:   /* Illegal seek */
  129.             PR_SetError( PR_UNKNOWN_ERROR, err );
  130.             break;
  131.         case  ESRCH:    /* No such process */
  132.             PR_SetError( PR_UNKNOWN_ERROR, err );
  133.             break;
  134.         case  ETXTBSY:  /* Text file busy */
  135.             PR_SetError( PR_UNKNOWN_ERROR, err );
  136.             break;
  137.         case  EFAULT:   /* Bad address */
  138.             PR_SetError( PR_UNKNOWN_ERROR, err );
  139.             break;
  140.         case  ENAMETOOLONG: /* Name too long */
  141.             PR_SetError( PR_UNKNOWN_ERROR, err );
  142.             break;
  143.         case  ENODEV:   /* No such device */
  144.             PR_SetError( PR_UNKNOWN_ERROR, err );
  145.             break;
  146.         case  ENOLCK:   /* No locks available on system */
  147.             PR_SetError( PR_UNKNOWN_ERROR, err );
  148.             break;
  149.         case  ENOSYS:   /* Unknown system call */
  150.             PR_SetError( PR_UNKNOWN_ERROR, err );
  151.             break;
  152.         case  ENOTEMPTY:    /* Directory not empty */
  153.         /* Normative Addendum error */
  154.         case  EILSEQ:   /* Multibyte/widw character encoding error */
  155.             PR_SetError( PR_UNKNOWN_ERROR, err );
  156.             break;
  157.             
  158.         /* WinSock errors */
  159.         case WSAEACCES:
  160.             PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
  161.             break;
  162.         case WSAEADDRINUSE:
  163.             PR_SetError(PR_ADDRESS_IN_USE_ERROR, err);
  164.             break;
  165.         case WSAEADDRNOTAVAIL:
  166.             PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err);
  167.             break;
  168.         case WSAEAFNOSUPPORT:
  169.             PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err);
  170.             break;
  171.         case WSAEBADF:
  172.             PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
  173.             break;
  174.         case WSAECONNREFUSED:
  175.             PR_SetError(PR_CONNECT_REFUSED_ERROR, err);
  176.             break;
  177.         case WSAEFAULT:
  178.             PR_SetError(PR_ACCESS_FAULT_ERROR, err);
  179.             break;
  180.         case WSAEINVAL:
  181.             PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err);
  182.             break;
  183.         case WSAEISCONN:
  184.             PR_SetError(PR_IS_CONNECTED_ERROR, err);
  185.             break;
  186.         case WSAEMFILE:
  187.             PR_SetError(PR_PROC_DESC_TABLE_FULL_ERROR, err);
  188.             break;
  189.         case WSAENETDOWN:
  190.         case WSAENETUNREACH:
  191.             PR_SetError(PR_NETWORK_UNREACHABLE_ERROR, err);
  192.             break;
  193.         case WSAENOBUFS:
  194.             PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
  195.             break;
  196.         case WSAENOPROTOOPT:
  197.         case WSAEMSGSIZE:
  198.             PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
  199.             break;
  200.         case WSAENOTCONN:
  201.             PR_SetError(PR_NOT_CONNECTED_ERROR, err);
  202.             break;
  203.         case WSAENOTSOCK:
  204.             PR_SetError(PR_NOT_SOCKET_ERROR, err);
  205.             break;
  206.         case WSAEOPNOTSUPP:
  207.             PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err);
  208.             break;
  209.         case WSAEPROTONOSUPPORT:
  210.             PR_SetError(PR_PROTOCOL_NOT_SUPPORTED_ERROR, err);
  211.             break;
  212.         case WSAETIMEDOUT:
  213.             PR_SetError(PR_IO_TIMEOUT_ERROR, err);
  214.             break;
  215.         case WSAEINTR:
  216.             PR_SetError(PR_PENDING_INTERRUPT_ERROR, err );
  217.             break;
  218.         case WSASYSNOTREADY:
  219.         case WSAVERNOTSUPPORTED:
  220.             PR_SetError(PR_PROTOCOL_NOT_SUPPORTED_ERROR, err);
  221.             break;
  222.         case WSAEWOULDBLOCK:
  223.             PR_SetError(PR_WOULD_BLOCK_ERROR, err);
  224.             break;
  225.             
  226.         default:
  227.             PR_SetError( PR_UNKNOWN_ERROR, err );
  228.             break;
  229.     }
  230.     return;
  231. } /* end _MD_map_win16_error() */
  232.  
  233.  
  234.