home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / libnix-0.8-src.lha / libnix-0.8 / sources / nix / errno / __seterrno.c next >
Encoding:
C/C++ Source or Header  |  1994-12-12  |  1.8 KB  |  80 lines

  1. #include <errno.h>
  2. #include <dos/dosasl.h>
  3. #ifdef __GNUC__
  4. #include <inline/dos.h>
  5. #endif
  6.  
  7. /* Table to convert amigados error messages to unix ones */
  8.  
  9. extern int errno;
  10.  
  11. static long _errortable[]=
  12.   ERROR_NO_FREE_STORE        ,ENOMEM,
  13.   ERROR_TASK_TABLE_FULL        ,EPROCLIM,
  14. /*ERROR_BAD_TEMPLATE
  15.   ERROR_BAD_NUMBER
  16.   ERROR_REQUIRED_ARG_MISSING
  17.   ERROR_KEY_NEEDS_ARG*/
  18.   ERROR_TOO_MANY_ARGS        ,E2BIG,
  19. /*ERROR_UNMATCHED_QUOTES*/
  20.   ERROR_LINE_TOO_LONG        ,E2BIG,
  21. /*ERROR_FILE_NOT_OBJECT
  22.   ERROR_INVALID_RESIDENT_LIBRARY
  23.   ERROR_NO_DEFAULT_DIR*/
  24.   ERROR_OBJECT_IN_USE        ,ETXTBSY,
  25.   ERROR_OBJECT_EXISTS        ,EEXIST,
  26.   ERROR_DIR_NOT_FOUND        ,ENOENT,
  27.   ERROR_OBJECT_NOT_FOUND    ,ENOENT,
  28.   ERROR_BAD_STREAM_NAME        ,ENAMETOOLONG,
  29.   ERROR_OBJECT_TOO_LARGE    ,EFBIG,
  30.   ERROR_ACTION_NOT_KNOWN    ,ENODEV,
  31. /*ERROR_INVALID_COMPONENT_NAME
  32.   ERROR_INVALID_LOCK
  33.   ERROR_OBJECT_WRONG_TYPE*/
  34.   ERROR_DISK_NOT_VALIDATED    ,EBUSY,
  35.   ERROR_DISK_WRITE_PROTECTED    ,EROFS,
  36. /*ERROR_RENAME_ACROSS_DEVICES*/
  37.   ERROR_DIRECTORY_NOT_EMPTY    ,ENOTEMPTY,
  38.   ERROR_TOO_MANY_LEVELS        ,ENAMETOOLONG,
  39.   ERROR_DEVICE_NOT_MOUNTED    ,ENXIO,
  40.   ERROR_SEEK_ERROR        ,ESPIPE,
  41. /*ERROR_COMMENT_TOO_BIG*/
  42.   ERROR_DISK_FULL        ,ENOSPC,
  43.   ERROR_DELETE_PROTECTED    ,EACCES,
  44.   ERROR_WRITE_PROTECTED        ,EACCES,
  45.   ERROR_READ_PROTECTED        ,EACCES,
  46.   ERROR_NOT_A_DOS_DISK        ,EFTYPE,
  47.   ERROR_NO_DISK            ,ENXIO,
  48. /*ERROR_NO_MORE_ENTRIES
  49.   ERROR_IS_SOFT_LINK
  50.   ERROR_OBJECT_LINKED*/
  51.   ERROR_BAD_HUNK        ,ENOEXEC,
  52. /*ERROR_NOT_IMPLEMENTED
  53.   ERROR_RECORD_NOT_LOCKED
  54.   ERROR_LOCK_COLLISION
  55.   ERROR_LOCK_TIMEOUT
  56.   ERROR_UNLOCK_ERROR
  57.   ERROR_BUFFER_OVERFLOW
  58.   ERROR_BREAK*/
  59.   ERROR_NOT_EXECUTABLE        ,EACCES,
  60.   0
  61. };
  62.   
  63. void __seterrno(void)
  64.   long amigaerror;
  65.   long *ptr=_errortable;
  66.   amigaerror=IoErr();
  67.   while(*ptr)
  68.   {
  69.     if(*ptr++==amigaerror)
  70.     {
  71.       errno=*ptr;
  72.       return; 
  73.     }
  74.     ptr++;
  75.   }
  76.   errno=EPERM;
  77. }
  78.