diff options
| author | gingerBill <bill@gingerbill.org> | 2023-09-30 20:26:04 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-09-30 20:26:04 +0100 |
| commit | 5023313c031d2d2e587dc1e30b4982e7784061c2 (patch) | |
| tree | 2ce225d27db249cdb7a6061a388ef09072a3a6ee /core/bufio | |
| parent | 3e0fd6368225ddfa6820be72d194b7cd1daf52dc (diff) | |
Minor cleanups to the core library
Diffstat (limited to 'core/bufio')
| -rw-r--r-- | core/bufio/reader.odin | 44 |
1 files changed, 13 insertions, 31 deletions
diff --git a/core/bufio/reader.odin b/core/bufio/reader.odin index dc4e02c02..e5307f105 100644 --- a/core/bufio/reader.odin +++ b/core/bufio/reader.odin @@ -118,9 +118,7 @@ reader_peek :: proc(b: ^Reader, n: int) -> (data: []byte, err: io.Error) { b.last_rune_size = -1 for b.w-b.r < n && b.w-b.r < len(b.buf) && b.err == nil { - if fill_err := _reader_read_new_chunk(b); fill_err != nil { - return nil, fill_err - } + _reader_read_new_chunk(b) or_return } if n > len(b.buf) { @@ -156,9 +154,7 @@ reader_discard :: proc(b: ^Reader, n: int) -> (discarded: int, err: io.Error) { for { skip := reader_buffered(b) if skip == 0 { - if fill_err := _reader_read_new_chunk(b); fill_err != nil { - return 0, fill_err - } + _reader_read_new_chunk(b) or_return skip = reader_buffered(b) } skip = min(skip, remaining) @@ -223,20 +219,18 @@ reader_read :: proc(b: ^Reader, p: []byte) -> (n: int, err: io.Error) { // reader_read_byte reads and returns a single byte // If no byte is available, it return an error -reader_read_byte :: proc(b: ^Reader) -> (byte, io.Error) { +reader_read_byte :: proc(b: ^Reader) -> (c: byte, err: io.Error) { b.last_rune_size = -1 for b.r == b.w { if b.err != nil { return 0, _reader_consume_err(b) } - if err := _reader_read_new_chunk(b); err != nil { - return 0, err - } + _reader_read_new_chunk(b) or_return } - c := b.buf[b.r] + c = b.buf[b.r] b.r += 1 b.last_byte = int(c) - return c, nil + return } // reader_unread_byte unreads the last byte. Only the most recently read byte can be unread @@ -264,15 +258,12 @@ reader_read_rune :: proc(b: ^Reader) -> (r: rune, size: int, err: io.Error) { !utf8.full_rune(b.buf[b.r:b.w]) && b.err == nil && b.w-b.w < len(b.buf) { - if err = _reader_read_new_chunk(b); err != nil { - return - } + _reader_read_new_chunk(b) or_return } b.last_rune_size = -1 if b.r == b.w { - err = _reader_consume_err(b) - return + return 0, 0, _reader_consume_err(b) } r, size = rune(b.buf[b.r]), 1 if r >= utf8.RUNE_SELF { @@ -305,27 +296,20 @@ reader_write_to :: proc(b: ^Reader, w: io.Writer) -> (n: i64, err: io.Error) { return i64(n), err } - n, err = write_buf(b, w) - if err != nil { - return - } + n = write_buf(b, w) or_return m: i64 if b.w-b.r < len(b.buf) { - if err = _reader_read_new_chunk(b); err != nil { - return - } + _reader_read_new_chunk(b) or_return } for b.r < b.w { m, err = write_buf(b, w) - n += m + n += m // this needs to be done before returning if err != nil { return } - if err = _reader_read_new_chunk(b); err != nil { - return - } + _reader_read_new_chunk(b) or_return } if b.err == .EOF { @@ -403,9 +387,7 @@ reader_read_slice :: proc(b: ^Reader, delim: byte) -> (line: []byte, err: io.Err s = b.w - b.r - if err = _reader_read_new_chunk(b); err != nil { - break - } + _reader_read_new_chunk(b) or_break } if i := len(line)-1; i >= 0 { |