Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2005-04-13 20:41:33 +0400
committerCorinna Vinschen <corinna@vinschen.de>2005-04-13 20:41:33 +0400
commit7460bfd32bd2680383c72d7d26ccb7776ccffb00 (patch)
treebd91f1b6551b8483b0c1278d0ece55fa65f3f4ad /winsup/cygwin/cygerrno.h
parentf134945dcbf9158af7a2b36694f5362a2c616e66 (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.h8
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))