Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1. /* ioerrs.c */
  2. /*****************************************************************************/
  3. /* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
  4. /*                                                                           */
  5. /* AS-Portierung                                                             */
  6. /*                                                                           */
  7. /* Abliefern der I/O-Fehlermeldungen                                         */
  8. /*                                                                           */
  9. /* Historie: 11.10.1996 Grundsteinlegung                                     */
  10. /*                                                                           */
  11. /*****************************************************************************/
  12.  
  13. #include "stdinc.h"
  14. #include "strutil.h"
  15. #include <errno.h>
  16. #include "nlmessages.h"
  17. #include "ioerrs.rsc"
  18. #ifdef _USE_MSH
  19. # include "ioerrs.msh"
  20. #endif
  21. #include "ioerrs.h"
  22.  
  23. typedef struct
  24. {
  25.   int Code;
  26.   int Msg;
  27. } ErrorDef;
  28.  
  29. static TMsgCat MsgCat;
  30.  
  31. static ErrorDef ErrorDefs[] =
  32. {
  33. #ifdef EPERM
  34.   { EPERM       , Num_IoErr_EPERM },
  35. #endif
  36. #ifdef ENOENT
  37.   { ENOENT      , Num_IoErr_ENOENT },
  38. #endif
  39. #ifdef ESRCH
  40.   { ESRCH       , Num_IoErr_ESRCH },
  41. #endif
  42. #ifdef EINTR
  43.   { EINTR       , Num_IoErr_EINTR },
  44. #endif
  45. #ifdef EIO
  46.   { EIO         , Num_IoErr_EIO },
  47. #endif
  48. #ifdef ENXIO
  49.   { ENXIO       , Num_IoErr_ENXIO },
  50. #endif
  51. #ifdef E2BIG
  52.   { E2BIG       , Num_IoErr_E2BIG },
  53. #endif
  54. #ifdef ENOEXEC
  55.   { ENOEXEC     , Num_IoErr_ENOEXEC },
  56. #endif
  57. #ifdef EBADF
  58.   { EBADF       , Num_IoErr_EBADF },
  59. #endif
  60. #ifdef ECHILD
  61.   { ECHILD      , Num_IoErr_ECHILD },
  62. #endif
  63. #ifdef EDEADLK
  64.   { EDEADLK     , Num_IoErr_EDEADLK },
  65. #endif
  66. #ifdef ENOMEM
  67.   { ENOMEM      , Num_IoErr_ENOMEM },
  68. #endif
  69. #ifdef EACCES
  70.   { EACCES      , Num_IoErr_EACCES },
  71. #endif
  72. #ifdef EFAULT
  73.   { EFAULT      , Num_IoErr_EFAULT },
  74. #endif
  75. #ifdef ENOTBLK
  76.   { ENOTBLK     , Num_IoErr_ENOTBLK },
  77. #endif
  78. #ifdef EBUSY
  79.   { EBUSY       , Num_IoErr_EBUSY },
  80. #endif
  81. #ifdef EEXIST
  82.   { EEXIST      , Num_IoErr_EEXIST },
  83. #endif
  84. #ifdef EXDEV
  85.   { EXDEV       , Num_IoErr_EXDEV },
  86. #endif
  87. #ifdef ENODEV
  88.   { ENODEV      , Num_IoErr_ENODEV },
  89. #endif
  90. #ifdef ENOTDIR
  91.   { ENOTDIR     , Num_IoErr_ENOTDIR },
  92. #endif
  93. #ifdef EISDIR
  94.   { EISDIR      , Num_IoErr_EISDIR },
  95. #endif
  96. #ifdef EINVAL
  97.   { EINVAL      , Num_IoErr_EINVAL },
  98. #endif
  99. #ifdef ENFILE
  100.   { ENFILE      , Num_IoErr_ENFILE },
  101. #endif
  102. #ifdef EMFILE
  103.   { EMFILE      , Num_IoErr_EMFILE },
  104. #endif
  105. #ifdef ENOTTY
  106.   { ENOTTY      , Num_IoErr_ENOTTY },
  107. #endif
  108. #ifdef ETXTBSY
  109.   { ETXTBSY     , Num_IoErr_ETXTBSY },
  110. #endif
  111. #ifdef EFBIG
  112.   { EFBIG       , Num_IoErr_EFBIG },
  113. #endif
  114. #ifdef ENOSPC
  115.   { ENOSPC      , Num_IoErr_ENOSPC },
  116. #endif
  117. #ifdef ESPIPE
  118.   { ESPIPE      , Num_IoErr_ESPIPE },
  119. #endif
  120. #ifdef EROFS
  121.   { EROFS       , Num_IoErr_EROFS },
  122. #endif
  123. #ifdef EMLINK
  124.   { EMLINK      , Num_IoErr_EMLINK },
  125. #endif
  126. #ifdef EPIPE
  127.   { EPIPE       , Num_IoErr_EPIPE },
  128. #endif
  129. #ifdef EDOM
  130.   { EDOM        , Num_IoErr_EDOM },
  131. #endif
  132. #ifdef ERANGE
  133.   { ERANGE      , Num_IoErr_ERANGE },
  134. #endif
  135. #ifdef ENAMETOOLONG
  136.   { ENAMETOOLONG, Num_IoErr_ENAMETOOLONG },
  137. #endif
  138. #ifdef ENOLCK
  139.   { ENOLCK      , Num_IoErr_ENOLCK },
  140. #endif
  141. #ifdef ENOSYS
  142.   { ENOSYS      , Num_IoErr_ENOSYS },
  143. #endif
  144. #ifdef ENOTEMPTY
  145.   { ENOTEMPTY   , Num_IoErr_ENOTEMPTY },
  146. #endif
  147. #ifdef ELOOP
  148.   { ELOOP       , Num_IoErr_ELOOP },
  149. #endif
  150. #ifdef EWOULDBLOCK
  151.   { EWOULDBLOCK , Num_IoErr_EWOULDBLOCK },
  152. #endif
  153. #ifdef ENOMSG
  154.   { ENOMSG      , Num_IoErr_ENOMSG },
  155. #endif
  156. #ifdef EIDRM
  157.   { EIDRM       , Num_IoErr_EIDRM },
  158. #endif
  159. #ifdef ECHRNG
  160.   { ECHRNG      , Num_IoErr_ECHRNG },
  161. #endif
  162. #ifdef EL2NSYNC
  163.   { EL2NSYNC    , Num_IoErr_EL2NSYNC },
  164. #endif
  165. #ifdef EL3HLT
  166.   { EL3HLT      , Num_IoErr_EL3HLT },
  167. #endif
  168. #ifdef EL3RST
  169.   { EL3RST      , Num_IoErr_EL3RST },
  170. #endif
  171. #ifdef ELNRNG
  172.   { ELNRNG      , Num_IoErr_ELNRNG },
  173. #endif
  174. #ifdef EUNATCH
  175.   { EUNATCH     , Num_IoErr_EUNATCH },
  176. #endif
  177. #ifdef ENOCSI
  178.   { ENOCSI      , Num_IoErr_ENOCSI },
  179. #endif
  180.   { -1, -1 }
  181. };
  182.  
  183. char *hs;
  184.  
  185. const char *GetErrorMsg(int number)
  186. {
  187.   ErrorDef *z;
  188.  
  189.   for (z = ErrorDefs; z->Msg != -1; z++)
  190.     if (number == z->Code)
  191.       break;
  192.  
  193.   if (z->Msg != -1)
  194.     return catgetmessage(&MsgCat, z->Msg);
  195.   else
  196.   {
  197.     as_snprintf(hs, STRINGSIZE, "%s%d", catgetmessage(&MsgCat, Num_IoErrUnknown), number);
  198.     return hs;
  199.   }
  200. }
  201.  
  202. const char *GetReadErrorMsg(void)
  203. {
  204.   return catgetmessage(&MsgCat, Num_IoErr_READERROR);
  205. }
  206.  
  207. void ioerrs_init(char *ProgPath)
  208. {
  209.   hs = (char*)malloc(sizeof(char) * STRINGSIZE);
  210. #ifdef _USE_MSH
  211.   msg_catalog_open_buffer(&MsgCat, ioerrs_msh_data, sizeof(ioerrs_msh_data), MsgId1, MsgId2);
  212.   UNUSED(ProgPath);
  213. #else
  214.   msg_catalog_open_file(&MsgCat, "ioerrs.msg", ProgPath, MsgId1, MsgId2);
  215. #endif
  216. }
  217.