Print this page
*** NO COMMENTS ***

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/zfs/zfs_main.c
          +++ new/usr/src/cmd/zfs/zfs_main.c
↓ open down ↓ 244 lines elided ↑ open up ↑
 245  245                  "snapshot>\n"
 246  246                  "\treceive [-vnFu] [-d | -e] <filesystem>\n"));
 247  247          case HELP_RENAME:
 248  248                  return (gettext("\trename [-f] <filesystem|volume|snapshot> "
 249  249                      "<filesystem|volume|snapshot>\n"
 250  250                      "\trename [-f] -p <filesystem|volume> <filesystem|volume>\n"
 251  251                      "\trename -r <snapshot> <snapshot>"));
 252  252          case HELP_ROLLBACK:
 253  253                  return (gettext("\trollback [-rRf] <snapshot>\n"));
 254  254          case HELP_SEND:
 255      -                return (gettext("\tsend [-DnPpRrv] [-[iI] snapshot] "
      255 +                return (gettext("\tsend [-DnPpRrvs] [-[iI] snapshot] "
 256  256                      "<snapshot>\n"));
 257  257          case HELP_SET:
 258  258                  return (gettext("\tset <property=value> "
 259  259                      "<filesystem|volume|snapshot> ...\n"));
 260  260          case HELP_SHARE:
 261  261                  return (gettext("\tshare <-a | filesystem>\n"));
 262  262          case HELP_SNAPSHOT:
 263  263                  return (gettext("\tsnapshot [-r] [-o property=value] ... "
 264  264                      "<filesystem@snapname|volume@snapname> ...\n"));
 265  265          case HELP_UNMOUNT:
↓ open down ↓ 3279 lines elided ↑ open up ↑
3545 3545          char *fromname = NULL;
3546 3546          char *toname = NULL;
3547 3547          char *cp;
3548 3548          zfs_handle_t *zhp;
3549 3549          sendflags_t flags = { 0 };
3550 3550          int c, err;
3551 3551          nvlist_t *dbgnv = NULL;
3552 3552          boolean_t extraverbose = B_FALSE;
3553 3553  
3554 3554          /* check options */
3555      -        while ((c = getopt(argc, argv, ":i:I:RDpvnP")) != -1) {
     3555 +        while ((c = getopt(argc, argv, ":i:I:RDpvnPs")) != -1) {
3556 3556                  switch (c) {
3557 3557                  case 'i':
3558 3558                          if (fromname)
3559 3559                                  usage(B_FALSE);
3560 3560                          fromname = optarg;
3561 3561                          break;
3562 3562                  case 'I':
3563 3563                          if (fromname)
3564 3564                                  usage(B_FALSE);
3565 3565                          fromname = optarg;
↓ open down ↓ 14 lines elided ↑ open up ↑
3580 3580                                  extraverbose = B_TRUE;
3581 3581                          flags.verbose = B_TRUE;
3582 3582                          flags.progress = B_TRUE;
3583 3583                          break;
3584 3584                  case 'D':
3585 3585                          flags.dedup = B_TRUE;
3586 3586                          break;
3587 3587                  case 'n':
3588 3588                          flags.dryrun = B_TRUE;
3589 3589                          break;
     3590 +                case 's':
     3591 +                        flags.sendsize = B_TRUE;
     3592 +                        break;
3590 3593                  case ':':
3591 3594                          (void) fprintf(stderr, gettext("missing argument for "
3592 3595                              "'%c' option\n"), optopt);
3593 3596                          usage(B_FALSE);
3594 3597                          break;
3595 3598                  case '?':
3596 3599                          (void) fprintf(stderr, gettext("invalid option '%c'\n"),
3597 3600                              optopt);
3598 3601                          usage(B_FALSE);
3599 3602                  }
↓ open down ↓ 5 lines elided ↑ open up ↑
3605 3608          /* check number of arguments */
3606 3609          if (argc < 1) {
3607 3610                  (void) fprintf(stderr, gettext("missing snapshot argument\n"));
3608 3611                  usage(B_FALSE);
3609 3612          }
3610 3613          if (argc > 1) {
3611 3614                  (void) fprintf(stderr, gettext("too many arguments\n"));
3612 3615                  usage(B_FALSE);
3613 3616          }
3614 3617  
3615      -        if (!flags.dryrun && isatty(STDOUT_FILENO)) {
     3618 +        if (flags.sendsize) {
     3619 +                (void) close(STDOUT_FILENO);
     3620 +                (void) open("/dev/null", O_WRONLY|O_LARGEFILE);
     3621 +        } else if (!flags.dryrun && isatty(STDOUT_FILENO)) {
3616 3622                  (void) fprintf(stderr,
3617 3623                      gettext("Error: Stream can not be written to a terminal.\n"
3618 3624                      "You must redirect standard output.\n"));
3619 3625                  return (1);
3620 3626          }
3621 3627  
3622 3628          cp = strchr(argv[0], '@');
3623 3629          if (cp == NULL) {
3624 3630                  (void) fprintf(stderr,
3625 3631                      gettext("argument must be a snapshot\n"));
↓ open down ↓ 2994 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX