From dab4361cf21a49f84f9d4040031e95406c53ab4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Grubbstr=C3=B6m=20=28Grubba=29?= <grubba@grubba.org> Date: Mon, 10 Feb 2020 11:17:47 +0100 Subject: [PATCH] I/O [NT]: Restructured debug_fd_read() somewhat. This is in preparation for adding support for ptys. --- src/fdlib.c | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/src/fdlib.c b/src/fdlib.c index 6e34aceb77..90d209214f 100644 --- a/src/fdlib.c +++ b/src/fdlib.c @@ -2121,35 +2121,38 @@ PMOD_EXPORT ptrdiff_t debug_fd_read(FD fd, void *to, ptrdiff_t len) } } } - /* FALLTHRU */ + break; + case FD_CONSOLE: case FD_FILE: - ret=0; - if(len && !ReadFile(handle, to, - DO_NOT_WARN((DWORD)len), - &ret,0) && ret<=0) - { - unsigned int err = GetLastError(); - release_fd(fd); - set_errno_from_win32_error (err); - switch(err) - { - /* Pretend we reached the end of the file */ - case ERROR_BROKEN_PIPE: - return 0; - } - FDDEBUG(fprintf(stderr,"Read failed %d\n",errno)); - return -1; - } - FDDEBUG(fprintf(stderr,"Read on %d returned %ld\n",fd,ret)); - release_fd(fd); - return ret; + break; default: errno=ENOTSUPP; release_fd(fd); return -1; } + + ret=0; + if(len && !ReadFile(handle, to, + DO_NOT_WARN((DWORD)len), + &ret,0) && ret<=0) + { + unsigned int err = GetLastError(); + release_fd(fd); + set_errno_from_win32_error (err); + switch(err) + { + /* Pretend we reached the end of the file */ + case ERROR_BROKEN_PIPE: + return 0; + } + FDDEBUG(fprintf(stderr,"Read failed %d\n",errno)); + return -1; + } + FDDEBUG(fprintf(stderr,"Read on %d returned %ld\n",fd,ret)); + release_fd(fd); + return ret; } PMOD_EXPORT PIKE_OFF_T debug_fd_lseek(FD fd, PIKE_OFF_T pos, int where) -- GitLab