uuprog

view tee.c @ 0:4f628556fa3e

uuprog initial commit
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 25 Aug 2011 08:53:01 +0300
parents
children
line source
1 /*! cc -o tee tee.c */
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <errno.h>
7 void output(FILE **farr, int count, char *data, size_t bytes);
9 int main(int argc, char **argv)
10 {
11 char buf[512];
12 size_t rdbytes;
13 FILE **files;
14 int i, fnum = 0;
16 if(!(files = malloc((argc - 1) * sizeof *files))) {
17 perror("malloc failed");
18 return EXIT_FAILURE;
19 }
21 for(i=1; i<argc; i++) {
22 if(!(files[fnum] = fopen(argv[i], "wb"))) {
23 fprintf(stderr, "failed to write to %s: %s\n", argv[i], strerror(errno));
24 } else {
25 fnum++;
26 }
27 }
29 while((rdbytes = fread(buf, 1, sizeof buf, stdin))) {
30 output(files, fnum, buf, rdbytes);
31 }
33 for(i=0; i<fnum; i++) {
34 fclose(files[i]);
35 }
36 return 0;
37 }
39 void output(FILE **farr, int count, char *data, size_t bytes)
40 {
41 int i;
43 fwrite(data, 1, bytes, stdout);
44 for(i=0; i<count; i++) {
45 fwrite(data, 1, bytes, farr[i]);
46 }
47 }