home *** CD-ROM | disk | FTP | other *** search
- #include <errno.h>
- #include <dos/dosasl.h>
- #ifdef __GNUC__
- #include <inline/dos.h>
- #endif
-
- /* Table to convert amigados error messages to unix ones */
-
- extern int errno;
-
- static long _errortable[]=
- {
- ERROR_NO_FREE_STORE ,ENOMEM,
- ERROR_TASK_TABLE_FULL ,EPROCLIM,
- /*ERROR_BAD_TEMPLATE
- ERROR_BAD_NUMBER
- ERROR_REQUIRED_ARG_MISSING
- ERROR_KEY_NEEDS_ARG*/
- ERROR_TOO_MANY_ARGS ,E2BIG,
- /*ERROR_UNMATCHED_QUOTES*/
- ERROR_LINE_TOO_LONG ,E2BIG,
- /*ERROR_FILE_NOT_OBJECT
- ERROR_INVALID_RESIDENT_LIBRARY
- ERROR_NO_DEFAULT_DIR*/
- ERROR_OBJECT_IN_USE ,ETXTBSY,
- ERROR_OBJECT_EXISTS ,EEXIST,
- ERROR_DIR_NOT_FOUND ,ENOENT,
- ERROR_OBJECT_NOT_FOUND ,ENOENT,
- ERROR_BAD_STREAM_NAME ,ENAMETOOLONG,
- ERROR_OBJECT_TOO_LARGE ,EFBIG,
- ERROR_ACTION_NOT_KNOWN ,ENODEV,
- /*ERROR_INVALID_COMPONENT_NAME
- ERROR_INVALID_LOCK
- ERROR_OBJECT_WRONG_TYPE*/
- ERROR_DISK_NOT_VALIDATED ,EBUSY,
- ERROR_DISK_WRITE_PROTECTED ,EROFS,
- /*ERROR_RENAME_ACROSS_DEVICES*/
- ERROR_DIRECTORY_NOT_EMPTY ,ENOTEMPTY,
- ERROR_TOO_MANY_LEVELS ,ENAMETOOLONG,
- ERROR_DEVICE_NOT_MOUNTED ,ENXIO,
- ERROR_SEEK_ERROR ,ESPIPE,
- /*ERROR_COMMENT_TOO_BIG*/
- ERROR_DISK_FULL ,ENOSPC,
- ERROR_DELETE_PROTECTED ,EACCES,
- ERROR_WRITE_PROTECTED ,EACCES,
- ERROR_READ_PROTECTED ,EACCES,
- ERROR_NOT_A_DOS_DISK ,EFTYPE,
- ERROR_NO_DISK ,ENXIO,
- /*ERROR_NO_MORE_ENTRIES
- ERROR_IS_SOFT_LINK
- ERROR_OBJECT_LINKED*/
- ERROR_BAD_HUNK ,ENOEXEC,
- /*ERROR_NOT_IMPLEMENTED
- ERROR_RECORD_NOT_LOCKED
- ERROR_LOCK_COLLISION
- ERROR_LOCK_TIMEOUT
- ERROR_UNLOCK_ERROR
- ERROR_BUFFER_OVERFLOW
- ERROR_BREAK*/
- ERROR_NOT_EXECUTABLE ,EACCES,
- 0
- };
-
- void __seterrno(void)
- {
- long amigaerror;
- long *ptr=_errortable;
- amigaerror=IoErr();
- while(*ptr)
- {
- if(*ptr++==amigaerror)
- {
- errno=*ptr;
- return;
- }
- ptr++;
- }
- errno=EPERM;
- }
-