[PATCH] splice-out: Add migrate support (-m option)
authorJens Axboe <axboe@suse.de>
Thu, 20 Apr 2006 12:58:16 +0000 (14:58 +0200)
committerJens Axboe <axboe@suse.de>
Thu, 20 Apr 2006 12:58:16 +0000 (14:58 +0200)
splice-out.c

index f5aa97e2a726ee682581362ac5d32a5c0f13ba59..8210922d327819a34160936a4cd9a23592c589c0 100644 (file)
@@ -8,21 +8,46 @@
 
 #include "splice.h"
 
-int main(int argc, char *argv[])
+static int splice_flags;
+
+static int usage(char *name)
+{
+       fprintf(stderr, "%s: [-m] out_file\n", name);
+       return 1;
+}
+
+static int parse_options(int argc, char *argv[])
 {
-       int fd;
+       int c, index = 1;
 
-       if (argc < 2) {
-               printf("%s: outfile\n", argv[0]);
-               return 1;
+       while ((c = getopt(argc, argv, "m")) != -1) {
+               switch (c) {
+               case 'm':
+                       splice_flags = SPLICE_F_MOVE;
+                       index++;
+                       break;
+               default:
+                       return -1;
+               }
        }
 
+       return index;
+}
+
+int main(int argc, char *argv[])
+{
+       int fd, index;
+
+       index = parse_options(argc, argv);
+       if (index == -1 || index + 1 > argc)
+               return usage(argv[0]);
+
        fd = open(argv[1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
        if (fd < 0)
                return error("open");
 
        do {
-               int ret = splice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, 0);
+               int ret = splice(STDIN_FILENO, NULL, fd, NULL, SPLICE_SIZE, splice_flags);
 
                if (ret < 0)
                        return error("splice");