* 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.
This commit is contained in:
parent
f134945dcb
commit
7460bfd32b
|
@ -1,3 +1,18 @@
|
|||
2005-04-13 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* 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.
|
||||
|
||||
2005-04-13 Christopher Faylor <cgf@timesys.com>
|
||||
|
||||
* fhandler.h (fhandler_base::utimes_fs): New method.
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -665,7 +665,7 @@ fhandler_base::open (int flags, mode_t mode)
|
|||
create_disposition, create_options, NULL, 0);
|
||||
if (!NT_SUCCESS (status))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (status));
|
||||
__seterrno_from_nt_status (status);
|
||||
if (!nohandle ())
|
||||
goto done;
|
||||
}
|
||||
|
|
|
@ -141,7 +141,7 @@ fhandler_base::fstat_by_handle (struct __stat64 *buf)
|
|||
pfai->InternalInformation.IndexNumber.LowPart,
|
||||
pfai->StandardInformation.NumberOfLinks);
|
||||
|
||||
debug_printf ("%u = NtQuerynformationFile)",
|
||||
debug_printf ("%u = NtQueryInformationFile)",
|
||||
RtlNtStatusToDosError (status));
|
||||
}
|
||||
|
||||
|
|
|
@ -48,9 +48,8 @@ fhandler_dev_mem::open (int flags, mode_t)
|
|||
if ((ret = NtQuerySystemInformation (SystemBasicInformation, (PVOID) &sbi,
|
||||
sizeof sbi, NULL)) != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %E", ret);
|
||||
mem_size = 0;
|
||||
}
|
||||
else
|
||||
|
@ -109,7 +108,7 @@ fhandler_dev_mem::open (int flags, mode_t)
|
|||
NTSTATUS ret = NtOpenSection (&mem, section_access, &attr);
|
||||
if (!NT_SUCCESS (ret))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
set_io_handle (NULL);
|
||||
return 0;
|
||||
}
|
||||
|
@ -151,7 +150,7 @@ fhandler_dev_mem::write (const void *ptr, size_t ulen)
|
|||
0,
|
||||
PAGE_READONLY)) != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -159,7 +158,7 @@ fhandler_dev_mem::write (const void *ptr, size_t ulen)
|
|||
|
||||
if (!NT_SUCCESS (ret = NtUnmapViewOfSection (INVALID_HANDLE_VALUE, viewmem)))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -203,7 +202,7 @@ fhandler_dev_mem::read (void *ptr, size_t& ulen)
|
|||
0,
|
||||
PAGE_READONLY)) != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
ulen = (size_t) -1;
|
||||
return;
|
||||
}
|
||||
|
@ -212,7 +211,7 @@ fhandler_dev_mem::read (void *ptr, size_t& ulen)
|
|||
|
||||
if (!NT_SUCCESS (ret = NtUnmapViewOfSection (INVALID_HANDLE_VALUE, viewmem)))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
ulen = (size_t) -1;
|
||||
return;
|
||||
}
|
||||
|
@ -303,7 +302,7 @@ fhandler_dev_mem::mmap (caddr_t *addr, size_t len, DWORD access,
|
|||
NTSTATUS ret = NtOpenSection (&h, section_access, &attr);
|
||||
if (!NT_SUCCESS (ret))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
syscall_printf ("-1 = mmap(): NtOpenSection failed with %E");
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
@ -325,7 +324,7 @@ fhandler_dev_mem::mmap (caddr_t *addr, size_t len, DWORD access,
|
|||
0,
|
||||
protect)) != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
syscall_printf ("-1 = mmap(): NtMapViewOfSection failed with %E");
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
@ -347,7 +346,7 @@ fhandler_dev_mem::munmap (HANDLE h, caddr_t addr, size_t len)
|
|||
NTSTATUS ret;
|
||||
if (!NT_SUCCESS (ret = NtUnmapViewOfSection (INVALID_HANDLE_VALUE, addr)))
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
return -1;
|
||||
}
|
||||
CloseHandle (h);
|
||||
|
@ -391,7 +390,7 @@ fhandler_dev_mem::fixup_mmap_after_fork (HANDLE h, DWORD access, int flags,
|
|||
0,
|
||||
protect)) != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
syscall_printf ("-1 = fixup_mmap_after_fork(): NtMapViewOfSection failed with %E");
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -477,9 +477,8 @@ format_proc_uptime (char *destbuf, size_t maxsize)
|
|||
}
|
||||
else if (ret != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %E", ret);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -514,9 +513,8 @@ format_proc_stat (char *destbuf, size_t maxsize)
|
|||
(PVOID) &sbi, sizeof sbi, NULL))
|
||||
!= STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %E", ret);
|
||||
sbi.NumberProcessors = 1;
|
||||
}
|
||||
|
||||
|
@ -556,9 +554,8 @@ format_proc_stat (char *destbuf, size_t maxsize)
|
|||
sizeof stodi, NULL);
|
||||
if (ret != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf("NtQuerySystemInformation: ret %d, Dos(ret) %E", ret);
|
||||
return 0;
|
||||
}
|
||||
pages_in = spi.PagesRead;
|
||||
|
|
|
@ -683,9 +683,8 @@ format_process_stat (_pinfo *p, char *destbuf, size_t maxsize)
|
|||
sizeof spt, NULL);
|
||||
if (ret != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf ("NtQueryInformationProcess: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf ("NtQueryInformationProcess: ret %d, Dos(ret) %E", ret);
|
||||
return 0;
|
||||
}
|
||||
fault_count = vmc.PageFaultCount;
|
||||
|
|
|
@ -1115,7 +1115,7 @@ fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
|
|||
base ? AT_ROUND_TO_PAGE : 0, protect);
|
||||
if (ret != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
base = NULL;
|
||||
}
|
||||
else
|
||||
|
@ -1196,7 +1196,7 @@ fhandler_disk_file::fixup_mmap_after_fork (HANDLE h, DWORD access, int flags,
|
|||
ulen, &phys, &ulen, ViewShare,
|
||||
AT_ROUND_TO_PAGE, protect);
|
||||
if (ret != STATUS_SUCCESS)
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
}
|
||||
else
|
||||
base = MapViewOfFileEx (h, access, 0, offset, size, address);
|
||||
|
|
|
@ -931,7 +931,7 @@ create_token (cygsid &usersid, user_groups &new_groups, struct passwd *pw)
|
|||
&auth_luid, &exp, &user, new_tok_gsids, privs, &owner,
|
||||
&pgrp, &dacl, &source);
|
||||
if (ret)
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
else if (GetLastError () == ERROR_PROC_NOT_FOUND)
|
||||
{
|
||||
__seterrno ();
|
||||
|
@ -1153,7 +1153,7 @@ write_sd (HANDLE fh, const char *file, security_descriptor &sd)
|
|||
if (fh == INVALID_HANDLE_VALUE) /* CreateFile failed */
|
||||
__seterrno ();
|
||||
else if (ret != STATUS_SUCCESS) /* NtSetSecurityObject failed */
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
else /* Everything's fine. */
|
||||
res = 0;
|
||||
return res;
|
||||
|
@ -1348,7 +1348,7 @@ get_nt_object_security (HANDLE handle, SE_OBJECT_TYPE object_type,
|
|||
}
|
||||
if (ret != STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -79,9 +79,9 @@ sysconf (int in)
|
|||
sizeof sbi, NULL))
|
||||
!= STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %E",
|
||||
ret);
|
||||
return -1;
|
||||
}
|
||||
switch (in)
|
||||
|
@ -112,9 +112,9 @@ sysconf (int in)
|
|||
sizeof spi, NULL))
|
||||
!= STATUS_SUCCESS)
|
||||
{
|
||||
__seterrno_from_win_error (RtlNtStatusToDosError (ret));
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %d",
|
||||
ret, RtlNtStatusToDosError (ret));
|
||||
__seterrno_from_nt_status (ret);
|
||||
debug_printf ("NtQuerySystemInformation: ret %d, Dos(ret) %E",
|
||||
ret);
|
||||
return -1;
|
||||
}
|
||||
return spi.AvailablePages;
|
||||
|
|
Loading…
Reference in New Issue