Blame Iex/IexThrowErrnoExc.cpp

Packit 8dc392
///////////////////////////////////////////////////////////////////////////
Packit 8dc392
//
Packit 8dc392
// Copyright (c) 2002-2012, Industrial Light & Magic, a division of Lucas
Packit 8dc392
// Digital Ltd. LLC
Packit 8dc392
// 
Packit 8dc392
// All rights reserved.
Packit 8dc392
// 
Packit 8dc392
// Redistribution and use in source and binary forms, with or without
Packit 8dc392
// modification, are permitted provided that the following conditions are
Packit 8dc392
// met:
Packit 8dc392
// *       Redistributions of source code must retain the above copyright
Packit 8dc392
// notice, this list of conditions and the following disclaimer.
Packit 8dc392
// *       Redistributions in binary form must reproduce the above
Packit 8dc392
// copyright notice, this list of conditions and the following disclaimer
Packit 8dc392
// in the documentation and/or other materials provided with the
Packit 8dc392
// distribution.
Packit 8dc392
// *       Neither the name of Industrial Light & Magic nor the names of
Packit 8dc392
// its contributors may be used to endorse or promote products derived
Packit 8dc392
// from this software without specific prior written permission. 
Packit 8dc392
// 
Packit 8dc392
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit 8dc392
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit 8dc392
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
Packit 8dc392
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
Packit 8dc392
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
Packit 8dc392
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
Packit 8dc392
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
Packit 8dc392
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
Packit 8dc392
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Packit 8dc392
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit 8dc392
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 8dc392
//
Packit 8dc392
///////////////////////////////////////////////////////////////////////////
Packit 8dc392
Packit 8dc392
Packit 8dc392
Packit 8dc392
//----------------------------------------------------------------
Packit 8dc392
//
Packit 8dc392
//	Exceptions that correspond to "errno" error codes,
Packit 8dc392
//	and a function to make throwing those exceptions easy.
Packit 8dc392
//
Packit 8dc392
//----------------------------------------------------------------
Packit 8dc392
Packit 8dc392
#include "IexThrowErrnoExc.h"
Packit 8dc392
#include "IexErrnoExc.h"
Packit 8dc392
#include <string.h>
Packit 8dc392
#include <errno.h>
Packit 8dc392
Packit 8dc392
#ifdef PLATFORM_WINDOWS
Packit 8dc392
#include <windows.h>
Packit 8dc392
#endif
Packit 8dc392
Packit 8dc392
IEX_INTERNAL_NAMESPACE_SOURCE_ENTER
Packit 8dc392
Packit 8dc392
Packit 8dc392
void throwErrnoExc (const std::string &text, int errnum)
Packit 8dc392
{
Packit 8dc392
#ifdef PLATFORM_WINDOWS
Packit 8dc392
    if (0 != getenv("IEXDEBUGTHROW"))
Packit 8dc392
        DebugBreak();
Packit 8dc392
#endif
Packit 8dc392
Packit 8dc392
    const char *entext = strerror (errnum);
Packit 8dc392
    std::string tmp (text);
Packit 8dc392
    std::string::size_type pos;
Packit 8dc392
Packit 8dc392
    while (std::string::npos != (pos = tmp.find ("%T")))
Packit 8dc392
	tmp.replace (pos, 2, entext, strlen (entext));
Packit 8dc392
Packit 8dc392
    switch (errnum)
Packit 8dc392
    {
Packit 8dc392
      #if defined (EPERM)
Packit 8dc392
	  case EPERM:
Packit 8dc392
	    throw EpermExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOENT)
Packit 8dc392
	  case ENOENT:
Packit 8dc392
	    throw EnoentExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESRCH)
Packit 8dc392
	  case ESRCH:
Packit 8dc392
	    throw EsrchExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINTR)
Packit 8dc392
	  case EINTR:
Packit 8dc392
	    throw EintrExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EIO)
Packit 8dc392
	  case EIO:
Packit 8dc392
	    throw EioExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENXIO)
Packit 8dc392
	  case ENXIO:
Packit 8dc392
	    throw EnxioExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (E2BIG)
Packit 8dc392
	  case E2BIG:
Packit 8dc392
	    throw E2bigExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOEXEC)
Packit 8dc392
	  case ENOEXEC:
Packit 8dc392
	    throw EnoexecExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADF)
Packit 8dc392
	  case EBADF:
Packit 8dc392
	    throw EbadfExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECHILD)
Packit 8dc392
	  case ECHILD:
Packit 8dc392
	    throw EchildExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EAGAIN)
Packit 8dc392
	  case EAGAIN:
Packit 8dc392
	    throw EagainExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOMEM)
Packit 8dc392
	  case ENOMEM:
Packit 8dc392
	    throw EnomemExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EACCES)
Packit 8dc392
	  case EACCES:
Packit 8dc392
	    throw EaccesExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EFAULT)
Packit 8dc392
	  case EFAULT:
Packit 8dc392
	    throw EfaultExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTBLK)
Packit 8dc392
	  case ENOTBLK:
Packit 8dc392
	    throw EnotblkExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBUSY)
Packit 8dc392
	  case EBUSY:
Packit 8dc392
	    throw EbusyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EEXIST)
Packit 8dc392
	  case EEXIST:
Packit 8dc392
	    throw EexistExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EXDEV)
Packit 8dc392
	  case EXDEV:
Packit 8dc392
	    throw ExdevExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENODEV)
Packit 8dc392
	  case ENODEV:
Packit 8dc392
	    throw EnodevExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTDIR)
Packit 8dc392
	  case ENOTDIR:
Packit 8dc392
	    throw EnotdirExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EISDIR)
Packit 8dc392
	  case EISDIR:
Packit 8dc392
	    throw EisdirExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINVAL)
Packit 8dc392
	  case EINVAL:
Packit 8dc392
	    throw EinvalExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENFILE)
Packit 8dc392
	  case ENFILE:
Packit 8dc392
	    throw EnfileExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EMFILE)
Packit 8dc392
	  case EMFILE:
Packit 8dc392
	    throw EmfileExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTTY)
Packit 8dc392
	  case ENOTTY:
Packit 8dc392
	    throw EnottyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ETXTBSY)
Packit 8dc392
	  case ETXTBSY:
Packit 8dc392
	    throw EtxtbsyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EFBIG)
Packit 8dc392
	  case EFBIG:
Packit 8dc392
	    throw EfbigExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOSPC)
Packit 8dc392
	  case ENOSPC:
Packit 8dc392
	    throw EnospcExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESPIPE)
Packit 8dc392
	  case ESPIPE:
Packit 8dc392
	    throw EspipeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EROFS)
Packit 8dc392
	  case EROFS:
Packit 8dc392
	    throw ErofsExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EMLINK)
Packit 8dc392
	  case EMLINK:
Packit 8dc392
	    throw EmlinkExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPIPE)
Packit 8dc392
	  case EPIPE:
Packit 8dc392
	    throw EpipeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDOM)
Packit 8dc392
	  case EDOM:
Packit 8dc392
	    throw EdomExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ERANGE)
Packit 8dc392
	  case ERANGE:
Packit 8dc392
	    throw ErangeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOMSG)
Packit 8dc392
	  case ENOMSG:
Packit 8dc392
	    throw EnomsgExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EIDRM)
Packit 8dc392
	  case EIDRM:
Packit 8dc392
	    throw EidrmExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECHRNG)
Packit 8dc392
	  case ECHRNG:
Packit 8dc392
	    throw EchrngExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EL2NSYNC)
Packit 8dc392
	  case EL2NSYNC:
Packit 8dc392
	    throw El2nsyncExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EL3HLT)
Packit 8dc392
	  case EL3HLT:
Packit 8dc392
	    throw El3hltExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EL3RST)
Packit 8dc392
	  case EL3RST:
Packit 8dc392
	    throw El3rstExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELNRNG)
Packit 8dc392
	  case ELNRNG:
Packit 8dc392
	    throw ElnrngExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EUNATCH)
Packit 8dc392
	  case EUNATCH:
Packit 8dc392
	    throw EunatchExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOSCI)
Packit 8dc392
	  case ENOCSI:
Packit 8dc392
	    throw EnocsiExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EL2HLT)
Packit 8dc392
	  case EL2HLT:
Packit 8dc392
	    throw El2hltExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDEADLK)
Packit 8dc392
	  case EDEADLK:
Packit 8dc392
	    throw EdeadlkExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOLCK)
Packit 8dc392
	  case ENOLCK:
Packit 8dc392
	    throw EnolckExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADE)
Packit 8dc392
	  case EBADE:
Packit 8dc392
	    throw EbadeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADR)
Packit 8dc392
	  case EBADR:
Packit 8dc392
	    throw EbadrExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EXFULL)
Packit 8dc392
	  case EXFULL:
Packit 8dc392
	    throw ExfullExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOANO)
Packit 8dc392
	  case ENOANO:
Packit 8dc392
	    throw EnoanoExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADRQC)
Packit 8dc392
	  case EBADRQC:
Packit 8dc392
	    throw EbadrqcExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADSLT)
Packit 8dc392
	  case EBADSLT:
Packit 8dc392
	    throw EbadsltExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDEADLOCK) && defined (EDEADLK)
Packit 8dc392
	  #if EDEADLOCK != EDEADLK
Packit 8dc392
	      case EDEADLOCK:
Packit 8dc392
		throw EdeadlockExc (tmp);
Packit 8dc392
	  #endif
Packit 8dc392
      #elif defined (EDEADLOCK)
Packit 8dc392
	  case EDEADLOCK:
Packit 8dc392
	    throw EdeadlockExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBFONT)
Packit 8dc392
	  case EBFONT:
Packit 8dc392
	    throw EbfontExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOSTR)
Packit 8dc392
	  case ENOSTR:
Packit 8dc392
	    throw EnostrExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENODATA)
Packit 8dc392
	  case ENODATA:
Packit 8dc392
	    throw EnodataExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ETIME)
Packit 8dc392
	  case ETIME:
Packit 8dc392
	    throw EtimeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOSR)
Packit 8dc392
	  case ENOSR:
Packit 8dc392
	    throw EnosrExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENONET)
Packit 8dc392
	  case ENONET:
Packit 8dc392
	    throw EnonetExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOPKG)
Packit 8dc392
	  case ENOPKG:
Packit 8dc392
	    throw EnopkgExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EREMOTE)
Packit 8dc392
	  case EREMOTE:
Packit 8dc392
	    throw EremoteExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOLINK)
Packit 8dc392
	  case ENOLINK:
Packit 8dc392
	    throw EnolinkExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EADV)
Packit 8dc392
	  case EADV:
Packit 8dc392
	    throw EadvExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESRMNT)
Packit 8dc392
	  case ESRMNT:
Packit 8dc392
	    throw EsrmntExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECOMM)
Packit 8dc392
	  case ECOMM:
Packit 8dc392
	    throw EcommExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPROTO)
Packit 8dc392
	  case EPROTO:
Packit 8dc392
	    throw EprotoExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EMULTIHOP)
Packit 8dc392
	  case EMULTIHOP:
Packit 8dc392
	    throw EmultihopExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADMSG)
Packit 8dc392
	  case EBADMSG:
Packit 8dc392
	    throw EbadmsgExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENAMETOOLONG)
Packit 8dc392
	  case ENAMETOOLONG:
Packit 8dc392
	    throw EnametoolongExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EOVERFLOW)
Packit 8dc392
	  case EOVERFLOW:
Packit 8dc392
	    throw EoverflowExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTUNIQ)
Packit 8dc392
	  case ENOTUNIQ:
Packit 8dc392
	    throw EnotuniqExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBADFD)
Packit 8dc392
	  case EBADFD:
Packit 8dc392
	    throw EbadfdExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EREMCHG)
Packit 8dc392
	  case EREMCHG:
Packit 8dc392
	    throw EremchgExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELIBACC)
Packit 8dc392
	  case ELIBACC:
Packit 8dc392
	    throw ElibaccExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELIBBAD)
Packit 8dc392
	  case ELIBBAD:
Packit 8dc392
	    throw ElibbadExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELIBSCN)
Packit 8dc392
	  case ELIBSCN:
Packit 8dc392
	    throw ElibscnExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELIBMAX)
Packit 8dc392
	  case ELIBMAX:
Packit 8dc392
	    throw ElibmaxExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELIBEXEC)
Packit 8dc392
	  case ELIBEXEC:
Packit 8dc392
	    throw ElibexecExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EILSEQ)
Packit 8dc392
	  case EILSEQ:
Packit 8dc392
	    throw EilseqExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOSYS)
Packit 8dc392
	  case ENOSYS:
Packit 8dc392
	    throw EnosysExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELOOP)
Packit 8dc392
	  case ELOOP:
Packit 8dc392
	    throw EloopExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ERESTART)
Packit 8dc392
	  case ERESTART:
Packit 8dc392
	    throw ErestartExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESTRPIPE)
Packit 8dc392
	  case ESTRPIPE:
Packit 8dc392
	    throw EstrpipeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTEMPTY)
Packit 8dc392
	  case ENOTEMPTY:
Packit 8dc392
	    throw EnotemptyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EUSERS)
Packit 8dc392
	  case EUSERS:
Packit 8dc392
	    throw EusersExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTSOCK)
Packit 8dc392
	  case ENOTSOCK:
Packit 8dc392
	    throw EnotsockExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDESTADDRREQ)
Packit 8dc392
	  case EDESTADDRREQ:
Packit 8dc392
	    throw EdestaddrreqExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EMSGSIZE)
Packit 8dc392
	  case EMSGSIZE:
Packit 8dc392
	    throw EmsgsizeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPROTOTYPE)
Packit 8dc392
	  case EPROTOTYPE:
Packit 8dc392
	    throw EprototypeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOPROTOOPT)
Packit 8dc392
	  case ENOPROTOOPT:
Packit 8dc392
	    throw EnoprotooptExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPROTONOSUPPORT)
Packit 8dc392
	  case EPROTONOSUPPORT:
Packit 8dc392
	    throw EprotonosupportExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESOCKTNOSUPPORT)
Packit 8dc392
	  case ESOCKTNOSUPPORT:
Packit 8dc392
	    throw EsocktnosupportExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EOPNOTSUPP)
Packit 8dc392
	  case EOPNOTSUPP:
Packit 8dc392
	    throw EopnotsuppExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPFNOSUPPORT)
Packit 8dc392
	  case EPFNOSUPPORT:
Packit 8dc392
	    throw EpfnosupportExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EAFNOSUPPORT)
Packit 8dc392
	  case EAFNOSUPPORT:
Packit 8dc392
	    throw EafnosupportExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EADDRINUSE)
Packit 8dc392
	  case EADDRINUSE:
Packit 8dc392
	    throw EaddrinuseExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EADDRNOTAVAIL)
Packit 8dc392
	  case EADDRNOTAVAIL:
Packit 8dc392
	    throw EaddrnotavailExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENETDOWN)
Packit 8dc392
	  case ENETDOWN:
Packit 8dc392
	    throw EnetdownExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENETUNREACH)
Packit 8dc392
	  case ENETUNREACH:
Packit 8dc392
	    throw EnetunreachExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENETRESET)
Packit 8dc392
	  case ENETRESET:
Packit 8dc392
	    throw EnetresetExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECONNABORTED)
Packit 8dc392
	  case ECONNABORTED:
Packit 8dc392
	    throw EconnabortedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECONNRESET)
Packit 8dc392
	  case ECONNRESET:
Packit 8dc392
	    throw EconnresetExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOBUFS)
Packit 8dc392
	  case ENOBUFS:
Packit 8dc392
	    throw EnobufsExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EISCONN)
Packit 8dc392
	  case EISCONN:
Packit 8dc392
	    throw EisconnExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTCONN)
Packit 8dc392
	  case ENOTCONN:
Packit 8dc392
	    throw EnotconnExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESHUTDOWN)
Packit 8dc392
	  case ESHUTDOWN:
Packit 8dc392
	    throw EshutdownExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ETOOMANYREFS)
Packit 8dc392
	  case ETOOMANYREFS:
Packit 8dc392
	    throw EtoomanyrefsExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ETIMEDOUT)
Packit 8dc392
	  case ETIMEDOUT:
Packit 8dc392
	    throw EtimedoutExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECONNREFUSED)
Packit 8dc392
	  case ECONNREFUSED:
Packit 8dc392
	    throw EconnrefusedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EHOSTDOWN)
Packit 8dc392
	  case EHOSTDOWN:
Packit 8dc392
	    throw EhostdownExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EHOSTUNREACH)
Packit 8dc392
	  case EHOSTUNREACH:
Packit 8dc392
	    throw EhostunreachExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EALREADY)
Packit 8dc392
	  case EALREADY:
Packit 8dc392
	    throw EalreadyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINPROGRESS)
Packit 8dc392
	  case EINPROGRESS:
Packit 8dc392
	    throw EinprogressExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ESTALE)
Packit 8dc392
	  case ESTALE:
Packit 8dc392
	    throw EstaleExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EIORESID)
Packit 8dc392
	  case EIORESID:
Packit 8dc392
	    throw EioresidExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EUCLEAN)
Packit 8dc392
	  case EUCLEAN:
Packit 8dc392
	    throw EucleanExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTNAM)
Packit 8dc392
	  case ENOTNAM:
Packit 8dc392
	    throw EnotnamExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENAVAIL)
Packit 8dc392
	  case ENAVAIL:
Packit 8dc392
	    throw EnavailExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EISNAM)
Packit 8dc392
	  case EISNAM:
Packit 8dc392
	    throw EisnamExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EREMOTEIO)
Packit 8dc392
	  case EREMOTEIO:
Packit 8dc392
	    throw EremoteioExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINIT)
Packit 8dc392
	  case EINIT:
Packit 8dc392
	    throw EinitExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EREMDEV)
Packit 8dc392
	  case EREMDEV:
Packit 8dc392
	    throw EremdevExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECANCELED)
Packit 8dc392
	  case ECANCELED:
Packit 8dc392
	    throw EcanceledExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOLIMFILE)
Packit 8dc392
	  case ENOLIMFILE:
Packit 8dc392
	    throw EnolimfileExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EPROCLIM)
Packit 8dc392
	  case EPROCLIM:
Packit 8dc392
	    throw EproclimExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDISJOINT)
Packit 8dc392
	  case EDISJOINT:
Packit 8dc392
	    throw EdisjointExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOLOGIN)
Packit 8dc392
	  case ENOLOGIN:
Packit 8dc392
	    throw EnologinExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ELOGINLIM)
Packit 8dc392
	  case ELOGINLIM:
Packit 8dc392
	    throw EloginlimExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EGROUPLOOP)
Packit 8dc392
	  case EGROUPLOOP:
Packit 8dc392
	    throw EgrouploopExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOATTACH)
Packit 8dc392
	  case ENOATTACH:
Packit 8dc392
	    throw EnoattachExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTSUP) && defined (EOPNOTSUPP)
Packit 8dc392
	  #if ENOTSUP != EOPNOTSUPP
Packit 8dc392
	      case ENOTSUP:
Packit 8dc392
		throw EnotsupExc (tmp);
Packit 8dc392
	  #endif
Packit 8dc392
      #elif defined (ENOTSUP)
Packit 8dc392
	  case ENOTSUP:
Packit 8dc392
	    throw EnotsupExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOATTR)
Packit 8dc392
	  case ENOATTR:
Packit 8dc392
	    throw EnoattrExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDIRCORRUPTED)
Packit 8dc392
	  case EDIRCORRUPTED:
Packit 8dc392
	    throw EdircorruptedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDQUOT)
Packit 8dc392
	  case EDQUOT:
Packit 8dc392
	    throw EdquotExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENFSREMOTE)
Packit 8dc392
	  case ENFSREMOTE:
Packit 8dc392
	    throw EnfsremoteExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECONTROLLER)
Packit 8dc392
	  case ECONTROLLER:
Packit 8dc392
	    throw EcontrollerExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTCONTROLLER)
Packit 8dc392
	  case ENOTCONTROLLER:
Packit 8dc392
	    throw EnotcontrollerExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EENQUEUED)
Packit 8dc392
	  case EENQUEUED:
Packit 8dc392
	    throw EenqueuedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTENQUEUED)
Packit 8dc392
	  case ENOTENQUEUED:
Packit 8dc392
	    throw EnotenqueuedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EJOINED)
Packit 8dc392
	  case EJOINED:
Packit 8dc392
	    throw EjoinedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTJOINED)
Packit 8dc392
	  case ENOTJOINED:
Packit 8dc392
	    throw EnotjoinedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOPROC)
Packit 8dc392
	  case ENOPROC:
Packit 8dc392
	    throw EnoprocExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EMUSTRUN)
Packit 8dc392
	  case EMUSTRUN:
Packit 8dc392
	    throw EmustrunExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOTSTOPPED)
Packit 8dc392
	  case ENOTSTOPPED:
Packit 8dc392
	    throw EnotstoppedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECLOCKCPU)
Packit 8dc392
	  case ECLOCKCPU:
Packit 8dc392
	    throw EclockcpuExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINVALSTATE)
Packit 8dc392
	  case EINVALSTATE:
Packit 8dc392
	    throw EinvalstateExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOEXIST)
Packit 8dc392
	  case ENOEXIST:
Packit 8dc392
	    throw EnoexistExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EENDOFMINOR)
Packit 8dc392
	  case EENDOFMINOR:
Packit 8dc392
	    throw EendofminorExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EBUFSIZE)
Packit 8dc392
	  case EBUFSIZE:
Packit 8dc392
	    throw EbufsizeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EEMPTY)
Packit 8dc392
	  case EEMPTY:
Packit 8dc392
	    throw EemptyExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ENOINTRGROUP)
Packit 8dc392
	  case ENOINTRGROUP:
Packit 8dc392
	    throw EnointrgroupExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINVALMODE)
Packit 8dc392
	  case EINVALMODE:
Packit 8dc392
	    throw EinvalmodeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (ECANTEXTENT)
Packit 8dc392
	  case ECANTEXTENT:
Packit 8dc392
	    throw EcantextentExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EINVALTIME)
Packit 8dc392
	  case EINVALTIME:
Packit 8dc392
	    throw EinvaltimeExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
Packit 8dc392
      #if defined (EDESTROYED)
Packit 8dc392
	  case EDESTROYED:
Packit 8dc392
	    throw EdestroyedExc (tmp);
Packit 8dc392
      #endif
Packit 8dc392
    }
Packit 8dc392
Packit 8dc392
    throw ErrnoExc (tmp);
Packit 8dc392
}
Packit 8dc392
Packit 8dc392
Packit 8dc392
void throwErrnoExc (const std::string &text)
Packit 8dc392
{
Packit 8dc392
    throwErrnoExc (text, errno);
Packit 8dc392
}
Packit 8dc392
Packit 8dc392
void throwErrnoExc()
Packit 8dc392
{
Packit 8dc392
    std::string txt = "%T.";
Packit 8dc392
    throwErrnoExc (txt);
Packit 8dc392
}
Packit 8dc392
Packit 8dc392
IEX_INTERNAL_NAMESPACE_SOURCE_EXIT