(p []byte)
| 880 | } |
| 881 | |
| 882 | func (r *atLeastReader) Read(p []byte) (int, error) { |
| 883 | if r.N <= 0 { |
| 884 | return 0, io.EOF |
| 885 | } |
| 886 | n, err := r.R.Read(p) |
| 887 | r.N -= int64(n) // won't underflow unless len(p) >= n > 9223372036854775809 |
| 888 | if r.N > 0 && err == io.EOF { |
| 889 | return n, io.ErrUnexpectedEOF |
| 890 | } |
| 891 | if r.N <= 0 && err == nil { |
| 892 | return n, io.EOF |
| 893 | } |
| 894 | return n, err |
| 895 | } |
| 896 | |
| 897 | // readFromUntil reads from r into c.rawInput until c.rawInput contains |
| 898 | // at least n bytes or else returns an error. |