1 /* 2 * CDDL HEADER START 3 * 4 * This file and its contents are supplied under the terms of the 5 * Common Development and Distribution License ("CDDL"), version 1.0. 6 * You may only use this file in accordance with the terms of version 7 * 1.0 of the CDDL. 8 * 9 * A full copy of the text of the CDDL should have accompanied this 10 * source. A copy of the CDDL is also available via the Internet at 11 * http://www.illumos.org/license/CDDL. 12 * 13 * CDDL HEADER END 14 */ 15 16 /* 17 * Copyright (c) 2020 by Delphix. All rights reserved. 18 * Copyright (c) 2020 by Datto Inc. All rights reserved. 19 */ 20 #include <sys/types.h> 21 #include <sys/stat.h> 22 #include <fcntl.h> 23 #include <ctype.h> 24 #include <stdio.h> 25 #include <stdlib.h> 26 #include <strings.h> 27 #include <unistd.h> 28 #include <libintl.h> 29 #include <stddef.h> 30 #include <libzfs.h> 31 #include "zstream.h" 32 33 void 34 zstream_usage(void) 35 { 36 (void) fprintf(stderr, 37 "usage: zstream command args ...\n" 38 "Available commands are:\n" 39 "\n" 40 "\tzstream dump [-vCd] FILE\n" 41 "\t... | zstream dump [-vCd]\n" 42 "\n" 43 "\tzstream token resume_token\n" 44 "\n" 45 "\tzstream redup [-v] FILE | ...\n"); 46 exit(1); 47 } 48 49 int 50 main(int argc, char *argv[]) 51 { 52 char *basename = strrchr(argv[0], '/'); 53 basename = basename ? (basename + 1) : argv[0]; 54 if (argc >= 1 && strcmp(basename, "zstreamdump") == 0) 55 return (zstream_do_dump(argc, argv)); 56 57 if (argc < 2) 58 zstream_usage(); 59 60 char *subcommand = argv[1]; 61 62 if (strcmp(subcommand, "dump") == 0) { 63 return (zstream_do_dump(argc - 1, argv + 1)); 64 } else if (strcmp(subcommand, "token") == 0) { 65 return (zstream_do_token(argc - 1, argv + 1)); 66 } else if (strcmp(subcommand, "redup") == 0) { 67 return (zstream_do_redup(argc - 1, argv + 1)); 68 } else { 69 zstream_usage(); 70 } 71 } 72