MCPcopy
hub / github.com/micro-editor/micro / Write

Method Write

internal/buffer/save.go:135–181  ·  view source on GitHub ↗
(b *SharedBuffer)

Source from the content-addressed store, hash-verified

133}
134
135func (wf wrappedFile) Write(b *SharedBuffer) (int, error) {
136 file := bufio.NewWriter(transform.NewWriter(wf.writeCloser, b.encoding.NewEncoder()))
137
138 b.Lock()
139 defer b.Unlock()
140
141 if len(b.lines) == 0 {
142 return 0, nil
143 }
144
145 // end of line
146 var eol []byte
147 if b.Endings == FFDos {
148 eol = []byte{'\r', '\n'}
149 } else {
150 eol = []byte{'\n'}
151 }
152
153 err := wf.Truncate()
154 if err != nil {
155 return 0, err
156 }
157
158 // write lines
159 size, err := file.Write(b.lines[0].data)
160 if err != nil {
161 return 0, err
162 }
163
164 for _, l := range b.lines[1:] {
165 if _, err = file.Write(eol); err != nil {
166 return 0, err
167 }
168 if _, err = file.Write(l.data); err != nil {
169 return 0, err
170 }
171 size += len(eol) + len(l.data)
172 }
173
174 err = file.Flush()
175 if err == nil && !wf.withSudo {
176 // Call Sync() on the file to make sure the content is safely on disk.
177 f := wf.writeCloser.(*os.File)
178 err = f.Sync()
179 }
180 return size, err
181}
182
183func (wf wrappedFile) Close() error {
184 err := wf.writeCloser.Close()

Callers 2

overwriteFileMethod · 0.45
safeWriteMethod · 0.45

Calls 3

TruncateMethod · 0.95
LockMethod · 0.65
UnlockMethod · 0.65

Tested by

no test coverage detected