IexThrowErrnoExc.cpp 17.4 KB
Newer Older
1 2 3 4
///////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
// Digital Ltd. LLC
5
//
6
// All rights reserved.
7
//
8 9 10 11 12 13 14 15 16 17 18
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
// *       Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// *       Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// *       Neither the name of Industrial Light & Magic nor the names of
// its contributors may be used to endorse or promote products derived
19 20
// from this software without specific prior written permission.
//
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////



//----------------------------------------------------------------
//
//	Exceptions that correspond to "errno" error codes,
//	and a function to make throwing those exceptions easy.
//
//----------------------------------------------------------------

#include "IexThrowErrnoExc.h"
#include "IexErrnoExc.h"
#include <string.h>
#include <errno.h>

namespace Iex {


void throwErrnoExc (const std::string &text, int errnum)
{
    const char *entext = strerror (errnum);
    std::string tmp (text);
    std::string::size_type pos;

    while (std::string::npos != (pos = tmp.find ("%T")))
59
    tmp.replace (pos, 2, entext, strlen (entext));
60 61 62 63

    switch (errnum)
    {
      #if defined (EPERM)
64 65
      case EPERM:
        throw EpermExc (tmp);
66 67 68
      #endif

      #if defined (ENOENT)
69 70
      case ENOENT:
        throw EnoentExc (tmp);
71 72 73
      #endif

      #if defined (ESRCH)
74 75
      case ESRCH:
        throw EsrchExc (tmp);
76 77 78
      #endif

      #if defined (EINTR)
79 80
      case EINTR:
        throw EintrExc (tmp);
81 82 83
      #endif

      #if defined (EIO)
84 85
      case EIO:
        throw EioExc (tmp);
86 87 88
      #endif

      #if defined (ENXIO)
89 90
      case ENXIO:
        throw EnxioExc (tmp);
91 92 93
      #endif

      #if defined (E2BIG)
94 95
      case E2BIG:
        throw E2bigExc (tmp);
96 97 98
      #endif

      #if defined (ENOEXEC)
99 100
      case ENOEXEC:
        throw EnoexecExc (tmp);
101 102 103
      #endif

      #if defined (EBADF)
104 105
      case EBADF:
        throw EbadfExc (tmp);
106 107 108
      #endif

      #if defined (ECHILD)
109 110
      case ECHILD:
        throw EchildExc (tmp);
111 112 113
      #endif

      #if defined (EAGAIN)
114 115
      case EAGAIN:
        throw EagainExc (tmp);
116 117 118
      #endif

      #if defined (ENOMEM)
119 120
      case ENOMEM:
        throw EnomemExc (tmp);
121 122 123
      #endif

      #if defined (EACCES)
124 125
      case EACCES:
        throw EaccesExc (tmp);
126 127 128
      #endif

      #if defined (EFAULT)
129 130
      case EFAULT:
        throw EfaultExc (tmp);
131 132 133
      #endif

      #if defined (ENOTBLK)
134 135
      case ENOTBLK:
        throw EnotblkExc (tmp);
136 137 138
      #endif

      #if defined (EBUSY)
139 140
      case EBUSY:
        throw EbusyExc (tmp);
141 142 143
      #endif

      #if defined (EEXIST)
144 145
      case EEXIST:
        throw EexistExc (tmp);
146 147 148
      #endif

      #if defined (EXDEV)
149 150
      case EXDEV:
        throw ExdevExc (tmp);
151 152 153
      #endif

      #if defined (ENODEV)
154 155
      case ENODEV:
        throw EnodevExc (tmp);
156 157 158
      #endif

      #if defined (ENOTDIR)
159 160
      case ENOTDIR:
        throw EnotdirExc (tmp);
161 162 163
      #endif

      #if defined (EISDIR)
164 165
      case EISDIR:
        throw EisdirExc (tmp);
166 167 168
      #endif

      #if defined (EINVAL)
169 170
      case EINVAL:
        throw EinvalExc (tmp);
171 172 173
      #endif

      #if defined (ENFILE)
174 175
      case ENFILE:
        throw EnfileExc (tmp);
176 177 178
      #endif

      #if defined (EMFILE)
179 180
      case EMFILE:
        throw EmfileExc (tmp);
181 182 183
      #endif

      #if defined (ENOTTY)
184 185
      case ENOTTY:
        throw EnottyExc (tmp);
186 187 188
      #endif

      #if defined (ETXTBSY)
189 190
      case ETXTBSY:
        throw EtxtbsyExc (tmp);
191 192 193
      #endif

      #if defined (EFBIG)
194 195
      case EFBIG:
        throw EfbigExc (tmp);
196 197 198
      #endif

      #if defined (ENOSPC)
199 200
      case ENOSPC:
        throw EnospcExc (tmp);
201 202 203
      #endif

      #if defined (ESPIPE)
204 205
      case ESPIPE:
        throw EspipeExc (tmp);
206 207 208
      #endif

      #if defined (EROFS)
209 210
      case EROFS:
        throw ErofsExc (tmp);
211 212 213
      #endif

      #if defined (EMLINK)
214 215
      case EMLINK:
        throw EmlinkExc (tmp);
216 217 218
      #endif

      #if defined (EPIPE)
219 220
      case EPIPE:
        throw EpipeExc (tmp);
221 222 223
      #endif

      #if defined (EDOM)
224 225
      case EDOM:
        throw EdomExc (tmp);
226 227 228
      #endif

      #if defined (ERANGE)
229 230
      case ERANGE:
        throw ErangeExc (tmp);
231 232 233
      #endif

      #if defined (ENOMSG)
234 235
      case ENOMSG:
        throw EnomsgExc (tmp);
236 237 238
      #endif

      #if defined (EIDRM)
239 240
      case EIDRM:
        throw EidrmExc (tmp);
241 242 243
      #endif

      #if defined (ECHRNG)
244 245
      case ECHRNG:
        throw EchrngExc (tmp);
246 247 248
      #endif

      #if defined (EL2NSYNC)
249 250
      case EL2NSYNC:
        throw El2nsyncExc (tmp);
251 252 253
      #endif

      #if defined (EL3HLT)
254 255
      case EL3HLT:
        throw El3hltExc (tmp);
256 257 258
      #endif

      #if defined (EL3RST)
259 260
      case EL3RST:
        throw El3rstExc (tmp);
261 262 263
      #endif

      #if defined (ELNRNG)
264 265
      case ELNRNG:
        throw ElnrngExc (tmp);
266 267 268
      #endif

      #if defined (EUNATCH)
269 270
      case EUNATCH:
        throw EunatchExc (tmp);
271 272 273
      #endif

      #if defined (ENOSCI)
274 275
      case ENOCSI:
        throw EnocsiExc (tmp);
276 277 278
      #endif

      #if defined (EL2HLT)
279 280
      case EL2HLT:
        throw El2hltExc (tmp);
281 282 283
      #endif

      #if defined (EDEADLK)
284 285
      case EDEADLK:
        throw EdeadlkExc (tmp);
286 287 288
      #endif

      #if defined (ENOLCK)
289 290
      case ENOLCK:
        throw EnolckExc (tmp);
291 292 293
      #endif

      #if defined (EBADE)
294 295
      case EBADE:
        throw EbadeExc (tmp);
296 297 298
      #endif

      #if defined (EBADR)
299 300
      case EBADR:
        throw EbadrExc (tmp);
301 302 303
      #endif

      #if defined (EXFULL)
304 305
      case EXFULL:
        throw ExfullExc (tmp);
306 307 308
      #endif

      #if defined (ENOANO)
309 310
      case ENOANO:
        throw EnoanoExc (tmp);
311 312 313
      #endif

      #if defined (EBADRQC)
314 315
      case EBADRQC:
        throw EbadrqcExc (tmp);
316 317 318
      #endif

      #if defined (EBADSLT)
319 320
      case EBADSLT:
        throw EbadsltExc (tmp);
321 322 323
      #endif

      #if defined (EDEADLOCK) && defined (EDEADLK)
324 325 326 327
      #if EDEADLOCK != EDEADLK
          case EDEADLOCK:
        throw EdeadlockExc (tmp);
      #endif
328
      #elif defined (EDEADLOCK)
329 330
      case EDEADLOCK:
        throw EdeadlockExc (tmp);
331 332 333
      #endif

      #if defined (EBFONT)
334 335
      case EBFONT:
        throw EbfontExc (tmp);
336 337 338
      #endif

      #if defined (ENOSTR)
339 340
      case ENOSTR:
        throw EnostrExc (tmp);
341 342 343
      #endif

      #if defined (ENODATA)
344 345
      case ENODATA:
        throw EnodataExc (tmp);
346 347 348
      #endif

      #if defined (ETIME)
349 350
      case ETIME:
        throw EtimeExc (tmp);
351 352 353
      #endif

      #if defined (ENOSR)
354 355
      case ENOSR:
        throw EnosrExc (tmp);
356 357 358
      #endif

      #if defined (ENONET)
359 360
      case ENONET:
        throw EnonetExc (tmp);
361 362 363
      #endif

      #if defined (ENOPKG)
364 365
      case ENOPKG:
        throw EnopkgExc (tmp);
366 367 368
      #endif

      #if defined (EREMOTE)
369 370
      case EREMOTE:
        throw EremoteExc (tmp);
371 372 373
      #endif

      #if defined (ENOLINK)
374 375
      case ENOLINK:
        throw EnolinkExc (tmp);
376 377 378
      #endif

      #if defined (EADV)
379 380
      case EADV:
        throw EadvExc (tmp);
381 382 383
      #endif

      #if defined (ESRMNT)
384 385
      case ESRMNT:
        throw EsrmntExc (tmp);
386 387 388
      #endif

      #if defined (ECOMM)
389 390
      case ECOMM:
        throw EcommExc (tmp);
391 392 393
      #endif

      #if defined (EPROTO)
394 395
      case EPROTO:
        throw EprotoExc (tmp);
396 397 398
      #endif

      #if defined (EMULTIHOP)
399 400
      case EMULTIHOP:
        throw EmultihopExc (tmp);
401 402 403
      #endif

      #if defined (EBADMSG)
404 405
      case EBADMSG:
        throw EbadmsgExc (tmp);
406 407 408
      #endif

      #if defined (ENAMETOOLONG)
409 410
      case ENAMETOOLONG:
        throw EnametoolongExc (tmp);
411 412 413
      #endif

      #if defined (EOVERFLOW)
414 415
      case EOVERFLOW:
        throw EoverflowExc (tmp);
416 417 418
      #endif

      #if defined (ENOTUNIQ)
419 420
      case ENOTUNIQ:
        throw EnotuniqExc (tmp);
421 422 423
      #endif

      #if defined (EBADFD)
424 425
      case EBADFD:
        throw EbadfdExc (tmp);
426 427 428
      #endif

      #if defined (EREMCHG)
429 430
      case EREMCHG:
        throw EremchgExc (tmp);
431 432 433
      #endif

      #if defined (ELIBACC)
434 435
      case ELIBACC:
        throw ElibaccExc (tmp);
436 437 438
      #endif

      #if defined (ELIBBAD)
439 440
      case ELIBBAD:
        throw ElibbadExc (tmp);
441 442 443
      #endif

      #if defined (ELIBSCN)
444 445
      case ELIBSCN:
        throw ElibscnExc (tmp);
446 447 448
      #endif

      #if defined (ELIBMAX)
449 450
      case ELIBMAX:
        throw ElibmaxExc (tmp);
451 452 453
      #endif

      #if defined (ELIBEXEC)
454 455
      case ELIBEXEC:
        throw ElibexecExc (tmp);
456 457 458
      #endif

      #if defined (EILSEQ)
459 460
      case EILSEQ:
        throw EilseqExc (tmp);
461 462 463
      #endif

      #if defined (ENOSYS)
464 465
      case ENOSYS:
        throw EnosysExc (tmp);
466 467 468
      #endif

      #if defined (ELOOP)
469 470
      case ELOOP:
        throw EloopExc (tmp);
471 472 473
      #endif

      #if defined (ERESTART)
474 475
      case ERESTART:
        throw ErestartExc (tmp);
476 477 478
      #endif

      #if defined (ESTRPIPE)
479 480
      case ESTRPIPE:
        throw EstrpipeExc (tmp);
481 482 483
      #endif

      #if defined (ENOTEMPTY)
484 485
      case ENOTEMPTY:
        throw EnotemptyExc (tmp);
486 487 488
      #endif

      #if defined (EUSERS)
489 490
      case EUSERS:
        throw EusersExc (tmp);
491 492 493
      #endif

      #if defined (ENOTSOCK)
494 495
      case ENOTSOCK:
        throw EnotsockExc (tmp);
496 497 498
      #endif

      #if defined (EDESTADDRREQ)
499 500
      case EDESTADDRREQ:
        throw EdestaddrreqExc (tmp);
501 502 503
      #endif

      #if defined (EMSGSIZE)
504 505
      case EMSGSIZE:
        throw EmsgsizeExc (tmp);
506 507 508
      #endif

      #if defined (EPROTOTYPE)
509 510
      case EPROTOTYPE:
        throw EprototypeExc (tmp);
511 512 513
      #endif

      #if defined (ENOPROTOOPT)
514 515
      case ENOPROTOOPT:
        throw EnoprotooptExc (tmp);
516 517 518
      #endif

      #if defined (EPROTONOSUPPORT)
519 520
      case EPROTONOSUPPORT:
        throw EprotonosupportExc (tmp);
521 522 523
      #endif

      #if defined (ESOCKTNOSUPPORT)
524 525
      case ESOCKTNOSUPPORT:
        throw EsocktnosupportExc (tmp);
526 527 528
      #endif

      #if defined (EOPNOTSUPP)
529 530
      case EOPNOTSUPP:
        throw EopnotsuppExc (tmp);
531 532 533
      #endif

      #if defined (EPFNOSUPPORT)
534 535
      case EPFNOSUPPORT:
        throw EpfnosupportExc (tmp);
536 537 538
      #endif

      #if defined (EAFNOSUPPORT)
539 540
      case EAFNOSUPPORT:
        throw EafnosupportExc (tmp);
541 542 543
      #endif

      #if defined (EADDRINUSE)
544 545
      case EADDRINUSE:
        throw EaddrinuseExc (tmp);
546 547 548
      #endif

      #if defined (EADDRNOTAVAIL)
549 550
      case EADDRNOTAVAIL:
        throw EaddrnotavailExc (tmp);
551 552 553
      #endif

      #if defined (ENETDOWN)
554 555
      case ENETDOWN:
        throw EnetdownExc (tmp);
556 557 558
      #endif

      #if defined (ENETUNREACH)
559 560
      case ENETUNREACH:
        throw EnetunreachExc (tmp);
561 562 563
      #endif

      #if defined (ENETRESET)
564 565
      case ENETRESET:
        throw EnetresetExc (tmp);
566 567 568
      #endif

      #if defined (ECONNABORTED)
569 570
      case ECONNABORTED:
        throw EconnabortedExc (tmp);
571 572 573
      #endif

      #if defined (ECONNRESET)
574 575
      case ECONNRESET:
        throw EconnresetExc (tmp);
576 577 578
      #endif

      #if defined (ENOBUFS)
579 580
      case ENOBUFS:
        throw EnobufsExc (tmp);
581 582 583
      #endif

      #if defined (EISCONN)
584 585
      case EISCONN:
        throw EisconnExc (tmp);
586 587 588
      #endif

      #if defined (ENOTCONN)
589 590
      case ENOTCONN:
        throw EnotconnExc (tmp);
591 592 593
      #endif

      #if defined (ESHUTDOWN)
594 595
      case ESHUTDOWN:
        throw EshutdownExc (tmp);
596 597 598
      #endif

      #if defined (ETOOMANYREFS)
599 600
      case ETOOMANYREFS:
        throw EtoomanyrefsExc (tmp);
601 602 603
      #endif

      #if defined (ETIMEDOUT)
604 605
      case ETIMEDOUT:
        throw EtimedoutExc (tmp);
606 607 608
      #endif

      #if defined (ECONNREFUSED)
609 610
      case ECONNREFUSED:
        throw EconnrefusedExc (tmp);
611 612 613
      #endif

      #if defined (EHOSTDOWN)
614 615
      case EHOSTDOWN:
        throw EhostdownExc (tmp);
616 617 618
      #endif

      #if defined (EHOSTUNREACH)
619 620
      case EHOSTUNREACH:
        throw EhostunreachExc (tmp);
621 622 623
      #endif

      #if defined (EALREADY)
624 625
      case EALREADY:
        throw EalreadyExc (tmp);
626 627 628
      #endif

      #if defined (EINPROGRESS)
629 630
      case EINPROGRESS:
        throw EinprogressExc (tmp);
631 632 633
      #endif

      #if defined (ESTALE)
634 635
      case ESTALE:
        throw EstaleExc (tmp);
636 637 638
      #endif

      #if defined (EIORESID)
639 640
      case EIORESID:
        throw EioresidExc (tmp);
641 642 643
      #endif

      #if defined (EUCLEAN)
644 645
      case EUCLEAN:
        throw EucleanExc (tmp);
646 647 648
      #endif

      #if defined (ENOTNAM)
649 650
      case ENOTNAM:
        throw EnotnamExc (tmp);
651 652 653
      #endif

      #if defined (ENAVAIL)
654 655
      case ENAVAIL:
        throw EnavailExc (tmp);
656 657 658
      #endif

      #if defined (EISNAM)
659 660
      case EISNAM:
        throw EisnamExc (tmp);
661 662 663
      #endif

      #if defined (EREMOTEIO)
664 665
      case EREMOTEIO:
        throw EremoteioExc (tmp);
666 667 668
      #endif

      #if defined (EINIT)
669 670
      case EINIT:
        throw EinitExc (tmp);
671 672 673
      #endif

      #if defined (EREMDEV)
674 675
      case EREMDEV:
        throw EremdevExc (tmp);
676 677 678
      #endif

      #if defined (ECANCELED)
679 680
      case ECANCELED:
        throw EcanceledExc (tmp);
681 682 683
      #endif

      #if defined (ENOLIMFILE)
684 685
      case ENOLIMFILE:
        throw EnolimfileExc (tmp);
686 687 688
      #endif

      #if defined (EPROCLIM)
689 690
      case EPROCLIM:
        throw EproclimExc (tmp);
691 692 693
      #endif

      #if defined (EDISJOINT)
694 695
      case EDISJOINT:
        throw EdisjointExc (tmp);
696 697 698
      #endif

      #if defined (ENOLOGIN)
699 700
      case ENOLOGIN:
        throw EnologinExc (tmp);
701 702 703
      #endif

      #if defined (ELOGINLIM)
704 705
      case ELOGINLIM:
        throw EloginlimExc (tmp);
706 707 708
      #endif

      #if defined (EGROUPLOOP)
709 710
      case EGROUPLOOP:
        throw EgrouploopExc (tmp);
711 712 713
      #endif

      #if defined (ENOATTACH)
714 715
      case ENOATTACH:
        throw EnoattachExc (tmp);
716 717 718
      #endif

      #if defined (ENOTSUP) && defined (EOPNOTSUPP)
719 720 721 722
      #if ENOTSUP != EOPNOTSUPP
          case ENOTSUP:
        throw EnotsupExc (tmp);
      #endif
723
      #elif defined (ENOTSUP)
724 725
      case ENOTSUP:
        throw EnotsupExc (tmp);
726 727 728
      #endif

      #if defined (ENOATTR)
729 730
      case ENOATTR:
        throw EnoattrExc (tmp);
731 732 733
      #endif

      #if defined (EDIRCORRUPTED)
734 735
      case EDIRCORRUPTED:
        throw EdircorruptedExc (tmp);
736 737 738
      #endif

      #if defined (EDQUOT)
739 740
      case EDQUOT:
        throw EdquotExc (tmp);
741 742 743
      #endif

      #if defined (ENFSREMOTE)
744 745
      case ENFSREMOTE:
        throw EnfsremoteExc (tmp);
746 747 748
      #endif

      #if defined (ECONTROLLER)
749 750
      case ECONTROLLER:
        throw EcontrollerExc (tmp);
751 752 753
      #endif

      #if defined (ENOTCONTROLLER)
754 755
      case ENOTCONTROLLER:
        throw EnotcontrollerExc (tmp);
756 757 758
      #endif

      #if defined (EENQUEUED)
759 760
      case EENQUEUED:
        throw EenqueuedExc (tmp);
761 762 763
      #endif

      #if defined (ENOTENQUEUED)
764 765
      case ENOTENQUEUED:
        throw EnotenqueuedExc (tmp);
766 767 768
      #endif

      #if defined (EJOINED)
769 770
      case EJOINED:
        throw EjoinedExc (tmp);
771 772 773
      #endif

      #if defined (ENOTJOINED)
774 775
      case ENOTJOINED:
        throw EnotjoinedExc (tmp);
776 777 778
      #endif

      #if defined (ENOPROC)
779 780
      case ENOPROC:
        throw EnoprocExc (tmp);
781 782 783
      #endif

      #if defined (EMUSTRUN)
784 785
      case EMUSTRUN:
        throw EmustrunExc (tmp);
786 787 788
      #endif

      #if defined (ENOTSTOPPED)
789 790
      case ENOTSTOPPED:
        throw EnotstoppedExc (tmp);
791 792 793
      #endif

      #if defined (ECLOCKCPU)
794 795
      case ECLOCKCPU:
        throw EclockcpuExc (tmp);
796 797 798
      #endif

      #if defined (EINVALSTATE)
799 800
      case EINVALSTATE:
        throw EinvalstateExc (tmp);
801 802 803
      #endif

      #if defined (ENOEXIST)
804 805
      case ENOEXIST:
        throw EnoexistExc (tmp);
806 807 808
      #endif

      #if defined (EENDOFMINOR)
809 810
      case EENDOFMINOR:
        throw EendofminorExc (tmp);
811 812 813
      #endif

      #if defined (EBUFSIZE)
814 815
      case EBUFSIZE:
        throw EbufsizeExc (tmp);
816 817 818
      #endif

      #if defined (EEMPTY)
819 820
      case EEMPTY:
        throw EemptyExc (tmp);
821 822 823
      #endif

      #if defined (ENOINTRGROUP)
824 825
      case ENOINTRGROUP:
        throw EnointrgroupExc (tmp);
826 827 828
      #endif

      #if defined (EINVALMODE)
829 830
      case EINVALMODE:
        throw EinvalmodeExc (tmp);
831 832 833
      #endif

      #if defined (ECANTEXTENT)
834 835
      case ECANTEXTENT:
        throw EcantextentExc (tmp);
836 837 838
      #endif

      #if defined (EINVALTIME)
839 840
      case EINVALTIME:
        throw EinvaltimeExc (tmp);
841 842 843
      #endif

      #if defined (EDESTROYED)
844 845
      case EDESTROYED:
        throw EdestroyedExc (tmp);
846 847 848 849 850 851 852 853 854 855 856 857 858 859
      #endif
    }

    throw ErrnoExc (tmp);
}


void throwErrnoExc (const std::string &text)
{
    throwErrnoExc (text, errno);
}


} // namespace Iex