...
1#include <fcntl.h> // constants
2#include <unistd.h> // posix
3#include <stdio.h> // fprintf
4
5const int BUF_LEN = 512;
6
7// main is the same as wasi _start: "concatenate and print files."
8int main(int argc, char** argv)
9{
10 unsigned char buf[BUF_LEN];
11 int fd = 0;
12 int len = 0;
13
14 // Start at arg[1] because args[0] is the program name.
15 for (int i = 1; i < argc; i++) {
16 int fd = open(argv[i], O_RDONLY);
17 if (fd < 0) {
18 fprintf(stderr, "error opening %s: %d\n", argv[i], fd);
19 return 1;
20 }
21
22 for (;;) {
23 len = read(fd, &buf[0], BUF_LEN);
24 if (len > 0) {
25 write(STDOUT_FILENO, buf, len);
26 } else if (len == 0) {
27 break;
28 } else {
29 fprintf(stderr, "error reading %s\n", argv[i]);
30 return 1;
31 }
32 }
33 close(fd);
34 }
35
36 return 0;
37}
View as plain text