MCPcopy Index your code
hub / github.com/CodisLabs/codis / writeFile

Method writeFile

pkg/models/fs/fsclient.go:140–177  ·  view source on GitHub ↗
(realpath string, data []byte, noexists bool)

Source from the content-addressed store, hash-verified

138}
139
140func (c *Client) writeFile(realpath string, data []byte, noexists bool) error {
141 if noexists {
142 _, err := os.Stat(realpath)
143 if err == nil {
144 return errors.Errorf("file already exists")
145 } else if !os.IsNotExist(err) {
146 return errors.Trace(err)
147 }
148 }
149 if err := mkdirFor(realpath); err != nil {
150 return err
151 }
152
153 f, err := c.newTempFile()
154 if err != nil {
155 return err
156 }
157 defer f.Close()
158
159 var writeThenRename = func() error {
160 _, err := f.Write(data)
161 if err != nil {
162 return errors.Trace(err)
163 }
164 if err := f.Close(); err != nil {
165 return errors.Trace(err)
166 }
167 if err := os.Rename(f.Name(), realpath); err != nil {
168 return errors.Trace(err)
169 }
170 return nil
171 }
172 if err := writeThenRename(); err != nil {
173 os.Remove(f.Name())
174 return err
175 }
176 return nil
177}
178
179func (c *Client) Create(path string, data []byte) error {
180 c.Lock()

Callers 2

CreateMethod · 0.95
UpdateMethod · 0.95

Calls 5

newTempFileMethod · 0.95
mkdirForFunction · 0.85
ErrorfMethod · 0.80
CloseMethod · 0.65
WriteMethod · 0.45

Tested by

no test coverage detected