/* ioerrs.c */
/*****************************************************************************/
/* AS-Portierung                                                             */
/*                                                                           */
/* Abliefern der I/O-Fehlermeldungen                                         */
/*                                                                           */
/* Historie: 11.10.1996 Grundsteinlegung                                     */
/*                                                                           */
/*****************************************************************************/

#include "stdinc.h"
#include <errno.h>
#include "nlmessages.h"
#include "ioerrs.rsc"
#include "ioerrs.h"

typedef struct
         {
          int Code;
          int Msg;
         } ErrorDef;

static TMsgCat MsgCat;

static ErrorDef ErrorDefs[]={
#ifdef EPERM
     {EPERM       , Num_IoErr_EPERM},
#endif
#ifdef ENOENT
     {ENOENT      , Num_IoErr_ENOENT},
#endif
#ifdef ESRCH
     {ESRCH       , Num_IoErr_ESRCH},
#endif
#ifdef EINTR
     {EINTR       , Num_IoErr_EINTR},
#endif
#ifdef EIO
     {EIO         , Num_IoErr_EIO},
#endif
#ifdef ENXIO
     {ENXIO       , Num_IoErr_ENXIO},
#endif
#ifdef E2BIG
     {E2BIG       , Num_IoErr_E2BIG},
#endif
#ifdef ENOEXEC
     {ENOEXEC     , Num_IoErr_ENOEXEC},
#endif
#ifdef EBADF
     {EBADF       , Num_IoErr_EBADF},
#endif
#ifdef ECHILD
     {ECHILD      , Num_IoErr_ECHILD},
#endif
#ifdef EDEADLK
     {EDEADLK     , Num_IoErr_EDEADLK},
#endif
#ifdef ENOMEM
     {ENOMEM      , Num_IoErr_ENOMEM},
#endif
#ifdef EACCES
     {EACCES      , Num_IoErr_EACCES},
#endif
#ifdef EFAULT
     {EFAULT      , Num_IoErr_EFAULT},
#endif
#ifdef ENOTBLK
     {ENOTBLK     , Num_IoErr_ENOTBLK},
#endif
#ifdef EBUSY
     {EBUSY       , Num_IoErr_EBUSY},
#endif
#ifdef EEXIST
     {EEXIST      , Num_IoErr_EEXIST},
#endif
#ifdef EXDEV
     {EXDEV       , Num_IoErr_EXDEV},
#endif
#ifdef ENODEV
     {ENODEV      , Num_IoErr_ENODEV},
#endif
#ifdef ENOTDIR
     {ENOTDIR     , Num_IoErr_ENOTDIR},
#endif
#ifdef EISDIR
     {EISDIR      , Num_IoErr_EISDIR},
#endif
#ifdef EINVAL
     {EINVAL      , Num_IoErr_EINVAL},
#endif
#ifdef ENFILE
     {ENFILE      , Num_IoErr_ENFILE},
#endif
#ifdef EMFILE
     {EMFILE      , Num_IoErr_EMFILE},
#endif
#ifdef ENOTTY
     {ENOTTY      , Num_IoErr_ENOTTY},
#endif
#ifdef ETXTBSY
     {ETXTBSY     , Num_IoErr_ETXTBSY},
#endif
#ifdef EFBIG
     {EFBIG       , Num_IoErr_EFBIG},
#endif
#ifdef ENOSPC
     {ENOSPC      , Num_IoErr_ENOSPC},
#endif
#ifdef ESPIPE
     {ESPIPE      , Num_IoErr_ESPIPE},
#endif
#ifdef EROFS
     {EROFS       , Num_IoErr_EROFS},
#endif
#ifdef EMLINK
     {EMLINK      , Num_IoErr_EMLINK},
#endif
#ifdef EPIPE
     {EPIPE       , Num_IoErr_EPIPE},
#endif
#ifdef EDOM
     {EDOM        , Num_IoErr_EDOM},
#endif
#ifdef ERANGE
     {ERANGE      , Num_IoErr_ERANGE},
#endif
#ifdef ENAMETOOLONG
     {ENAMETOOLONG, Num_IoErr_ENAMETOOLONG},
#endif
#ifdef ENOLCK
     {ENOLCK      , Num_IoErr_ENOLCK},
#endif
#ifdef ENOSYS
     {ENOSYS      , Num_IoErr_ENOSYS},
#endif
#ifdef ENOTEMPTY
     {ENOTEMPTY   , Num_IoErr_ENOTEMPTY},
#endif
#ifdef ELOOP
     {ELOOP       , Num_IoErr_ELOOP},
#endif
#ifdef EWOULDBLOCK
     {EWOULDBLOCK , Num_IoErr_EWOULDBLOCK},
#endif
#ifdef ENOMSG
     {ENOMSG      , Num_IoErr_ENOMSG},
#endif
#ifdef EIDRM
     {EIDRM       , Num_IoErr_EIDRM},
#endif
#ifdef ECHRNG
     {ECHRNG      , Num_IoErr_ECHRNG},
#endif
#ifdef EL2NSYNC
     {EL2NSYNC    , Num_IoErr_EL2NSYNC},
#endif
#ifdef EL3HLT
     {EL3HLT      , Num_IoErr_EL3HLT},
#endif
#ifdef EL3RST
     {EL3RST      , Num_IoErr_EL3RST},
#endif
#ifdef ELNRNG
     {ELNRNG      , Num_IoErr_ELNRNG},
#endif
#ifdef EUNATCH
     {EUNATCH     , Num_IoErr_EUNATCH},
#endif
#ifdef ENOCSI
     {ENOCSI      , Num_IoErr_ENOCSI},
#endif
     {-1,-1}};
       
	char *GetErrorMsg(int number)
BEGIN
   static String hs;
   ErrorDef *z;

   for (z=ErrorDefs; z->Msg!=-1; z++)
    if (number==z->Code) break;

   if (z->Msg!=-1) return catgetmessage(&MsgCat,z->Msg);
   else
    BEGIN
     sprintf(hs,"%s%d",catgetmessage(&MsgCat,Num_IoErrUnknown),number); return hs;
    END
END

	void ioerrs_init(char *ProgPath)
BEGIN
   opencatalog(&MsgCat,"ioerrs.msg",ProgPath,MsgId1,MsgId2);
END
