Files
marisa/cmd/marisa/writefile.go
yakumo.izuru c83cad8164 リファクタリングと再設計
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>

git-svn-id: file:///srv/svn/repo/marisa/trunk@67 d6811dac-2434-b64a-9ddc-f563ab233461
2024-02-11 02:08:18 +00:00

39 lines
879 B
Go

package main
import (
"io"
"os"
)
func writefile(f *os.File, s io.ReadCloser, contentlength int64) error {
buffer := make([]byte, 4096)
eof := false
sz := int64(0)
defer f.Sync()
for !eof {
n, err := s.Read(buffer)
if err != nil && err != io.EOF {
return err
} else if err == io.EOF {
eof = true
}
/* ensure we don't write more than expected */
r := int64(n)
if sz+r > contentlength {
r = contentlength - sz
eof = true
}
_, err = f.Write(buffer[:r])
if err != nil {
return err
}
sz += r
}
return nil
}