X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=listati%2Fsplicecp.c;h=52449e68a92c165b73c667b29411fd4e8293d0d3;hp=28a6705df7122c82d9f163ff69d2283cf883eb44;hb=8e03e6dab3729b15c924991f2f4a59079d7e53d7;hpb=154622c3382b558d8c0b7984ee76d96d09d44c71 diff --git a/listati/splicecp.c b/listati/splicecp.c index 28a6705..52449e6 100644 --- a/listati/splicecp.c +++ b/listati/splicecp.c @@ -9,26 +9,6 @@ int main(int argc, char *argv[]) int in_fd, out_fd; int nread, nwrite; ... - /* Main body */ - if ((argc - optind) != 2) { /* There must two argument */ - printf("Wrong number of arguments %d\n", argc - optind); - usage(); - } - /* open pipe, input and output file */ - in_fd = open(argv[optind], O_RDONLY); - if (in_fd < 0) { - printf("Input error %s on %s\n", strerror(errno), argv[optind]); - exit(EXIT_FAILURE); - } - out_fd = open(argv[optind+1], O_CREAT|O_RDWR|O_TRUNC, 0644); - if (out_fd < 0) { - printf("Cannot open %s, error %s\n", argv[optind+1], strerror(errno)); - exit(EXIT_FAILURE); - } - if (pipe(pipefd) == -1) { - perror("Cannot create buffer pipe"); - exit(EXIT_FAILURE); - } /* copy loop */ while (1) { nread = splice(in_fd, NULL, pipefd[1], NULL, size, @@ -42,10 +22,9 @@ int main(int argc, char *argv[]) exit(EXIT_FAILURE); } } - do { + while (nread > 0) { nwrite = splice(pipefd[0], NULL, out_fd, NULL, nread, SPLICE_F_MOVE|SPLICE_F_MORE); - if (nwrite == 0) continue; if (nwrite < 0) { if (errno == EINTR) continue; @@ -55,7 +34,7 @@ int main(int argc, char *argv[]) } } nread -= nwrite; - } while (nread); + } } return EXIT_SUCCESS; }