diff options
| author | Yasuhiro Matsumoto <mattn.jp@gmail.com> | 2016-03-18 13:00:26 +0900 |
|---|---|---|
| committer | Alex Brainman <alex.brainman@gmail.com> | 2016-03-24 09:22:33 +0000 |
| commit | ebd67ba588eabd5bf968b5bd14dff21a1a1b1be4 (patch) | |
| tree | 4491c8cae3ed0687bec8dc96a9b4f3a1473645d9 /src/os/stat_windows.go | |
| parent | ddcf8d402a0f8b7556dad49005ff578244baa11c (diff) | |
| download | go-ebd67ba588eabd5bf968b5bd14dff21a1a1b1be4.tar.xz | |
os: fix Stdin.Stat() on windows
If name is /dev/{stdin,stdout,stderr}, return fileInfo.
Fixes #14853.
Change-Id: Ibf7d1ae7b9f3dc43f6ed7c905ea2c5102e1971cc
Reviewed-on: https://go-review.googlesource.com/20845
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Diffstat (limited to 'src/os/stat_windows.go')
| -rw-r--r-- | src/os/stat_windows.go | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/os/stat_windows.go b/src/os/stat_windows.go index d65c58200f..b8f97ad60a 100644 --- a/src/os/stat_windows.go +++ b/src/os/stat_windows.go @@ -25,10 +25,19 @@ func (file *File) Stat() (FileInfo, error) { if file.name == DevNull { return &devNullStat, nil } + + ft, err := syscall.GetFileType(file.fd) + if err != nil { + return nil, &PathError{"GetFileType", file.name, err} + } + if ft == syscall.FILE_TYPE_PIPE { + return &fileStat{name: basename(file.name), pipe: true}, nil + } + var d syscall.ByHandleFileInformation - e := syscall.GetFileInformationByHandle(syscall.Handle(file.fd), &d) - if e != nil { - return nil, &PathError{"GetFileInformationByHandle", file.name, e} + err = syscall.GetFileInformationByHandle(syscall.Handle(file.fd), &d) + if err != nil { + return nil, &PathError{"GetFileInformationByHandle", file.name, err} } return &fileStat{ name: basename(file.name), @@ -43,6 +52,7 @@ func (file *File) Stat() (FileInfo, error) { vol: d.VolumeSerialNumber, idxhi: d.FileIndexHigh, idxlo: d.FileIndexLow, + pipe: false, }, nil } |
