diff options
| author | Joe Tsai <joetsai@digital-static.net> | 2017-11-29 17:11:45 -0800 |
|---|---|---|
| committer | Joe Tsai <joetsai@google.com> | 2018-03-29 23:17:53 +0000 |
| commit | dfd7f3562645ebd587d7d883bbaa8915fcf8c84b (patch) | |
| tree | 4d24688128eac091ec6b07417bc64ada6dff7ccb | |
| parent | 4b265fb74736ffaba2ad5cc96f43e442ae0d9850 (diff) | |
| download | go-dfd7f3562645ebd587d7d883bbaa8915fcf8c84b.tar.xz | |
os: add ModeIrregular flag
There is currently no way for os.FileMode.IsRegular to report false
without being one of the following types:
ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice
This makes it difficult for custom implementations of os.FileInfo to return
a Mode that is explicitly not regular without resorting to setting one
of the types listed above. However, every one of the aforementioned types
are ill-suited as a general-purpose "not regular" file type.
Thus, add a ModeIrregular to serve exactly for that purpose.
The ModeIrregular type carries no information other than the fact that the
file is not regular.
Updates #22903
Fixes #23878
Change-Id: I4f34d88f960bcb014816d8e7b5de8b1035077948
Reviewed-on: https://go-review.googlesource.com/94856
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
| -rw-r--r-- | src/os/types.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/os/types.go b/src/os/types.go index db7848759c..b0b7d8d94d 100644 --- a/src/os/types.go +++ b/src/os/types.go @@ -54,15 +54,16 @@ const ( ModeSetgid // g: setgid ModeCharDevice // c: Unix character device, when ModeDevice is set ModeSticky // t: sticky + ModeIrregular // ?: non-regular file; nothing else is known about this file // Mask for the type bits. For regular files, none will be set. - ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice + ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice | ModeIrregular ModePerm FileMode = 0777 // Unix permission bits ) func (m FileMode) String() string { - const str = "dalTLDpSugct" + const str = "dalTLDpSugct?" var buf [32]byte // Mode is uint32. w := 0 for i, c := range str { |
