diff --git a/src/fdlib.c b/src/fdlib.c index 6e34aceb771462740433f6e5f886568c384ee95c..90d209214f2ad8c192f61accd13d6a3f1c1f2a82 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)