package file import ( "fmt" "git.0x7f.app/WOJ/woj-server/pkg/utils" "os" ) type LimitedWriter struct { File *os.File Limit int64 n int64 } func (lw *LimitedWriter) Write(p []byte) (int, error) { remaining := lw.Limit - lw.n if remaining <= 0 { return 0, fmt.Errorf("write limit exceeded") } var err, err2 error var n int writeLen := int64(len(p)) if writeLen > remaining { err = fmt.Errorf("write limit exceeded") writeLen = remaining } n, err2 = lw.File.Write(p[:writeLen]) lw.n += int64(n) return n, utils.If(err2 != nil, err2, err) }