| ... | ... | @@ -7,11 +7,10 @@ import "std.zig"; |
| 7 | 7 | // * update std API |
| 8 | 8 | // * defer |
| 9 | 9 | // * %return |
| 10 | | // * %% operator |
| 10 | // * %% binary operator |
| 11 | // * %% prefix operator |
| 11 | 12 | // * cast err type to string |
| 12 | 13 | |
| 13 | | pub %.Invalid; |
| 14 | | |
| 15 | 14 | pub fn main(args: [][]u8) %void => { |
| 16 | 15 | const exe = args[0]; |
| 17 | 16 | var catted_anything = false; |
| ... | ... | @@ -24,7 +23,7 @@ pub fn main(args: [][]u8) %void => { |
| 24 | 23 | } else { |
| 25 | 24 | var is: InputStream; |
| 26 | 25 | is.open(arg, OpenReadOnly) %% (err) => { |
| 27 | | stderr.print("Unable to open file: {}", ([]u8])(err)); |
| 26 | %%stderr.print("Unable to open file: {}", ([]u8])(err)); |
| 28 | 27 | return err; |
| 29 | 28 | } |
| 30 | 29 | defer is.close(); |
| ... | ... | @@ -39,7 +38,7 @@ pub fn main(args: [][]u8) %void => { |
| 39 | 38 | } |
| 40 | 39 | |
| 41 | 40 | fn usage(exe: []u8) %void => { |
| 42 | | stderr.print("Usage: {} [FILE]...\n", exe); |
| 41 | %%stderr.print("Usage: {} [FILE]...\n", exe); |
| 43 | 42 | return %.Invalid; |
| 44 | 43 | } |
| 45 | 44 | |
| ... | ... | @@ -47,16 +46,18 @@ fn cat_stream(is: InputStream) %void => { |
| 47 | 46 | var buf: [1024 * 4]u8; |
| 48 | 47 | |
| 49 | 48 | while (true) { |
| 50 | | const bytes_read = is.read(buf); |
| 51 | | if (bytes_read < 0) { |
| 52 | | stderr.print("Unable to read from stream: {}", ([]u8)(is.err)); |
| 53 | | return is.err; |
| 49 | const bytes_read = is.read(buf) %% (err) => { |
| 50 | %%stderr.print("Unable to read from stream: {}", ([]u8)(err)); |
| 51 | return err; |
| 52 | } |
| 53 | |
| 54 | if (bytes_read == 0) { |
| 55 | break; |
| 54 | 56 | } |
| 55 | 57 | |
| 56 | | const bytes_written = stdout.write(buf[0...bytes_read]); |
| 57 | | if (bytes_written < bytes_read) { |
| 58 | | stderr.print("Unable to write to stdout: {}", ([]u8)(stdout.err)); |
| 59 | | return stdout.err; |
| 58 | stdout.write(buf[0...bytes_read]) %% (err) => { |
| 59 | %%stderr.print("Unable to write to stdout: {}", ([]u8)(err)); |
| 60 | return err; |
| 60 | 61 | } |
| 61 | 62 | } |
| 62 | 63 | } |