aboutsummaryrefslogtreecommitdiff
path: root/core/write.c
blob: a0be81c263e70269eebd743e4c42b6a5ddcf0a18 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "../lib/io/io.h"
#include "../lib/container/container.h"

#define BUFFER_SIZE 128
char buf[BUFFER_SIZE];

int main(int argc, const char **argv)
{
	if (argc != 2) {
		wstd("write [filename]\n");
		return -1;
	}

	int fd = open(argv[1], OPEN_WRITE_ONLY | OPEN_CREATE, MODE_USER_READ | MODE_USER_WRITE | MODE_OTHER_READ | MODE_GROUP_READ);

	container_t *string = new_container(sizeof(char));
	u64 size;

	while ((size = read(STDIN_FD, buf, BUFFER_SIZE))) {
		container_append(string, buf, size);
	}


	container_push(string, 0);

	write(fd, string->data, string->size);

	close(fd);
	return 0;
}