Blame |
Last modification |
View Log
| Download
| RSS feed
| ?url?
/* ioerrs.c */
/*****************************************************************************/
/* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only */
/* */
/* AS-Portierung */
/* */
/* Abliefern der I/O-Fehlermeldungen */
/* */
/* Historie: 11.10.1996 Grundsteinlegung */
/* */
/*****************************************************************************/
#include "stdinc.h"
#include "strutil.h"
#include <errno.h>
#include "nlmessages.h"
#include "ioerrs.rsc"
#ifdef _USE_MSH
# include "ioerrs.msh"
#endif
#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 *hs
;
const char *GetErrorMsg
(int number
)
{
ErrorDef
*z
;
for (z
= ErrorDefs
; z
->Msg
!= -1; z
++)
if (number
== z
->Code
)
break;
if (z
->Msg
!= -1)
return catgetmessage
(&MsgCat
, z
->Msg
);
else
{
as_snprintf
(hs
, STRINGSIZE
, "%s%d", catgetmessage
(&MsgCat
, Num_IoErrUnknown
), number
);
return hs
;
}
}
const char *GetReadErrorMsg
(void)
{
return catgetmessage
(&MsgCat
, Num_IoErr_READERROR
);
}
void ioerrs_init
(char *ProgPath
)
{
hs
= (char*)malloc(sizeof(char) * STRINGSIZE
);
#ifdef _USE_MSH
msg_catalog_open_buffer
(&MsgCat
, ioerrs_msh_data
, sizeof(ioerrs_msh_data
), MsgId1
, MsgId2
);
UNUSED
(ProgPath
);
#else
msg_catalog_open_file
(&MsgCat
, "ioerrs.msg", ProgPath
, MsgId1
, MsgId2
);
#endif
}