Handle O_CREATE flag to *MemMapFs.OpenFile. - afero - [fork] go afero port for 9front
 (HTM) git clone git@git.drkhsh.at/afero.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 47e9336de62bc9cdd252560f70f28fc4f5b8f06a
 (DIR) parent 42d35dace7d89fd79d24afba9d900881b97292f5
 (HTM) Author: Alex Tomlins <alex@tomlins.org.uk>
       Date:   Sat,  8 Aug 2015 18:50:19 +0100
       
       Handle O_CREATE flag to *MemMapFs.OpenFile.
       
       To allow MemMapFs to be used in place of OsFs in tests where this flag
       is used to create the file if it doesn't already exist..
       
       Diffstat:
         M fs_test.go                          |      15 +++++++++++++++
         M memmap.go                           |       6 +++++-
       
       2 files changed, 20 insertions(+), 1 deletion(-)
       ---
 (DIR) diff --git a/fs_test.go b/fs_test.go
       @@ -70,6 +70,21 @@ func TestRead0(t *testing.T) {
                }
        }
        
       +func TestOpenFile(t *testing.T) {
       +        for _, fs := range Fss {
       +                path := testDir + "/" + testName
       +                fs.MkdirAll(testDir, 0777) // Just in case.
       +                fs.Remove(path)            // Just in case.
       +
       +                f, err := fs.OpenFile(path, os.O_CREATE, 0600)
       +                if err != nil {
       +                        t.Error(fs.Name(), "OpenFile (O_CREATE) failed:", err)
       +                        continue
       +                }
       +                f.Close()
       +        }
       +}
       +
        func TestMemFileRead(t *testing.T) {
                f := MemFileCreate("testfile")
                f.WriteString("abcd")
 (DIR) diff --git a/memmap.go b/memmap.go
       @@ -205,7 +205,11 @@ func (m *MemMapFs) lockfreeOpen(name string) (File, error) {
        }
        
        func (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {
       -        return m.Open(name)
       +        file, err := m.Open(name)
       +        if os.IsNotExist(err) && (flag&os.O_CREATE > 0) {
       +                file, err = m.Create(name)
       +        }
       +        return file, err
        }
        
        func (m *MemMapFs) Remove(name string) error {