12 static int splice_flags;
14 static int usage(char *name)
16 fprintf(stderr, "... | %s: [-m] out_file\n", name);
20 static int parse_options(int argc, char *argv[])
24 while ((c = getopt(argc, argv, "m")) != -1) {
27 splice_flags = SPLICE_F_MOVE;
38 int main(int argc, char *argv[])
43 if (fstat(STDIN_FILENO, &sb) < 0)
45 if (!S_ISFIFO(sb.st_mode)) {
46 fprintf(stderr, "stdin must be a pipe\n");
47 return usage(argv[0]);
50 index = parse_options(argc, argv);
51 if (index == -1 || index + 1 > argc)
52 return usage(argv[0]);
54 fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
59 int ret = splice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, splice_flags);
62 return error("splice");