aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Tsai <joetsai@digital-static.net>2017-11-29 17:11:45 -0800
committerJoe Tsai <joetsai@google.com>2018-03-29 23:17:53 +0000
commitdfd7f3562645ebd587d7d883bbaa8915fcf8c84b (patch)
tree4d24688128eac091ec6b07417bc64ada6dff7ccb
parent4b265fb74736ffaba2ad5cc96f43e442ae0d9850 (diff)
downloadgo-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.go5
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 {