diff options
author | Russ Cox <rsc@golang.org> | 2014-10-27 20:45:16 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-10-27 20:45:16 -0400 |
commit | 1c534714e1d353d45670a3ed76f4f4a7c7bfa7c6 (patch) | |
tree | 5b1dfa80cd8fecbb33e7d64a6943bc26812b5f0b | |
parent | 2fe9482343a4321d54dac5eca5eb04e06aea29d6 (diff) | |
download | go-1c534714e1d353d45670a3ed76f4f4a7c7bfa7c6.tar.gz go-1c534714e1d353d45670a3ed76f4f4a7c7bfa7c6.zip |
syscall: accept pre-existing directories in nacl zip file
NaCl creates /tmp. This lets the zip file populate it.
LGTM=adg
R=adg
CC=golang-codereviews
https://golang.org/cl/159600043
-rw-r--r-- | src/syscall/fs_nacl.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/syscall/fs_nacl.go b/src/syscall/fs_nacl.go index 4abc9b81c9..6e6ce2ab7b 100644 --- a/src/syscall/fs_nacl.go +++ b/src/syscall/fs_nacl.go @@ -818,6 +818,12 @@ func create(name string, mode uint32, sec int64, data []byte) error { fs.mu.Unlock() f, err := fs.open(name, O_CREATE|O_EXCL, mode) if err != nil { + if mode&S_IFMT == S_IFDIR { + ip, _, err := fs.namei(name, false) + if err == nil && (ip.Mode&S_IFMT) == S_IFDIR { + return nil // directory already exists + } + } return err } ip := f.(*fsysFile).inode |