4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-02 12:30:24 +08:00

Cygwin: AF_UNIX: peek_pipe: change error handling

Return an NTSTATUS code instead of a ULONG.  Add a new ULONG reference
argument to replace the previous return value.
This commit is contained in:
Ken Brown 2020-10-09 16:56:29 -04:00
parent 1533431754
commit cd42f043f4
2 changed files with 11 additions and 7 deletions

View File

@ -1059,7 +1059,8 @@ class fhandler_socket_unix : public fhandler_socket
int wait_pipe (PUNICODE_STRING pipe_name);
int connect_pipe (PUNICODE_STRING pipe_name);
int listen_pipe ();
ULONG peek_pipe (PFILE_PIPE_PEEK_BUFFER pbuf, ULONG psize, HANDLE evt);
NTSTATUS peek_pipe (PFILE_PIPE_PEEK_BUFFER pbuf, ULONG psize, HANDLE evt,
ULONG &ret_len);
int disconnect_pipe (HANDLE ph);
/* The NULL pointer check is required for FS methods like fstat. When
called via stat or lstat, there's no shared memory, just a path in pc. */

View File

@ -723,7 +723,9 @@ fhandler_socket_unix::grab_admin_pkg ()
if (!(evt = create_event ()))
return 0;
io_lock ();
ULONG ret_len = peek_pipe (pbuf, MAX_PATH, evt);
ULONG ret_len;
status = peek_pipe (pbuf, MAX_PATH, evt, ret_len);
/* FIXME: Check status and handle error. */
if (pbuf->NumberOfMessages == 0 || ret_len < sizeof (af_unix_pkt_hdr_t))
{
io_unlock ();
@ -1138,9 +1140,9 @@ fhandler_socket_unix::listen_pipe ()
return ret;
}
ULONG
NTSTATUS
fhandler_socket_unix::peek_pipe (PFILE_PIPE_PEEK_BUFFER pbuf, ULONG psize,
HANDLE evt)
HANDLE evt, ULONG &ret_len)
{
NTSTATUS status;
IO_STATUS_BLOCK io;
@ -1154,9 +1156,10 @@ fhandler_socket_unix::peek_pipe (PFILE_PIPE_PEEK_BUFFER pbuf, ULONG psize,
if (NT_SUCCESS (status))
status = io.Status;
}
return NT_SUCCESS (status) ? (io.Information
- offsetof (FILE_PIPE_PEEK_BUFFER, Data))
: 0;
ret_len = (NT_SUCCESS (status)
? (io.Information - offsetof (FILE_PIPE_PEEK_BUFFER, Data))
: 0);
return status;
}
int