diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2005-04-13 20:41:33 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2005-04-13 20:41:33 +0400 |
commit | 7460bfd32bd2680383c72d7d26ccb7776ccffb00 (patch) | |
tree | bd91f1b6551b8483b0c1278d0ece55fa65f3f4ad /winsup/cygwin/cygerrno.h | |
parent | f134945dcbf9158af7a2b36694f5362a2c616e66 (diff) |
* cygerrno.h (__seterrno_from_nt_status): Define. Always set Win32
error code as well as errno. Use throughout where errno is set from
NT status.
(set_errno): Evaluate val only once.
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fix typo in
debug output.
* fhandler_mem.cc (fhandler_dev_mem::open): Rely on
__seterrno_from_nt_status setting Win32 error code in debug output.
* fhandler_proc.cc (format_proc_uptime): Ditto.
(format_proc_stat): Ditto.
* fhandler_process.cc (format_process_stat): Ditto.
* sysconf.cc (sysconf): Ditto.
Diffstat (limited to 'winsup/cygwin/cygerrno.h')
-rw-r--r-- | winsup/cygwin/cygerrno.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/winsup/cygwin/cygerrno.h b/winsup/cygwin/cygerrno.h index c1a0fd821..f3be0ce1b 100644 --- a/winsup/cygwin/cygerrno.h +++ b/winsup/cygwin/cygerrno.h @@ -16,9 +16,15 @@ int __stdcall geterrno_from_win_error (DWORD code, int deferrno) __attribute__ ( #define __seterrno() seterrno (__FILE__, __LINE__) #define __seterrno_from_win_error(val) seterrno_from_win_error (__FILE__, __LINE__, val) +#define __seterrno_from_nt_status(status) \ + ({ \ + DWORD winerr = RtlNtStatusToDosError (status); \ + SetLastError (winerr); \ + __seterrno_from_win_error (winerr); \ + }) #ifndef DEBUGGING -#define set_errno(val) (errno = (val), _impure_ptr->_errno = (val)) +#define set_errno(val) (errno = _impure_ptr->_errno = (val)) #else int __stdcall __set_errno (const char *ln, int ln, int val) __attribute ((regparm(3))); #define set_errno(val) __set_errno (__PRETTY_FUNCTION__, __LINE__, (val)) |