rem: case 0: break;
context: main (int argc, char **argv){  struct stat stat_buf;  size_t num;			/* numeric argument from command line */  enum    {      type_undef, type_bytes, type_byteslines, type_lines, type_digits    } split_type = type_undef;  size_t in_blk_size;		/* optimal block size of input file device */  char *buf;			/* file i/o buffer */  size_t accum = 0;  int c;  int digits_optind = 0;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  /* Parse command line options.  */  infile = "-";  outbase = "x";  while (1)    {      /* This is the argv-index of the option we will read next.  */      int this_optind = optind ? optind : 1;      long int tmp_long;      c = getopt_long (argc, argv, "0123456789C:a:b:l:", longopts, NULL);      if (c == -1)	break;      switch (c)	{	case 0:	  break;	case 'a':	  {	    unsigned long tmp;	    if (xstrtoul (optarg, NULL, 10, &tmp, "") != LONGINT_OK		|| SIZE_MAX < tmp)	      {		error (0, 0, _("%s: invalid suffix length"), optarg);		usage (EXIT_FAILURE);	      }	    suffix_length = tmp;	  }	  break;	case 'b':	  if (split_type != type_undef)	    FAIL_ONLY_ONE_WAY ();	  split_type = type_bytes;	  if (xstrtol (optarg, NULL, 10, &tmp_long, "bkm") != LONGINT_OK	      || tmp_long < 0 || tmp_long > INT_MAX)	    {	      error (0, 0, _("%s: invalid number of bytes"), optarg);	      usage (EXIT_FAILURE);	    }	  accum = /* FIXME: */ (int) tmp_long;	  break;	case 'l':	  if (split_type != type_undef)	    FAIL_ONLY_ONE_WAY ();	  split_type = type_lines;	  if (xstrtol (optarg, NULL, 10, &tmp_long, "") != LONGINT_OK	      || tmp_long < 0 || tmp_long > INT_MAX)	    {	      error (0, 0, _("%s: invalid number of lines"), optarg);	      usage (EXIT_FAILURE);	    }	  accum = /* FIXME */ (int) tmp_long;	  break;	case 'C':	  if (split_type != type_undef)	    FAIL_ONLY_ONE_WAY ();	  split_type = type_byteslines;	  if (xstrtol (optarg, NULL, 10, &tmp_long, "bkm") != LONGINT_OK	      || tmp_long < 0 ||  tmp_long > INT_MAX)	    {	      error (0, 0, _("%s: invalid number of bytes"), optarg);	      usage (EXIT_FAILURE);	    }	  accum = /* FIXME */ (int) tmp_long;	  break;	case '0':	case '1':	case '2':	case '3':	case '4':	case '5':	case '6':	case '7':	case '8':	case '9':	  if (split_type != type_undef && split_type != type_digits)	    FAIL_ONLY_ONE_WAY ();	  if (digits_optind != 0 && digits_optind != this_optind)	    accum = 0;		/* More than one number given; ignore other. */	  digits_optind = this_optind;	  split_type = type_digits;	  accum = accum * 10 + c - '0';	  break;	case_GETOPT_HELP_CHAR;	case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);	default:	  usage (EXIT_FAILURE);	}    }  if (digits_optind && 200112 <= posix2_version ())    {      error (0, 0, _("`-%d' option is obsolete; use `-l %d'"), accum, accum);      usage (EXIT_FAILURE);    }  /* Handle default case.  */  if (split_type == type_undef)    {      split_type = type_lines;      accum = 1000;    }  if (accum < 1)    {      error (0, 0, _("invalid number"));      usage (EXIT_FAILURE);    }  num = accum;  /* Get out the filename arguments.  */  if (optind < argc)    infile = argv[optind++];  if (optind < argc)    outbase = argv[optind++];  if (optind < argc)    {      error (0, 0, _("too many arguments"));      usage (EXIT_FAILURE);    }  /* Open the input file.  */  if (STREQ (infile, "-"))    input_desc = 0;  else    {      input_desc = open (infile, O_RDONLY);      if (input_desc < 0)	error (EXIT_FAILURE, errno, "%s", infile);    }  /* Binary I/O is safer when bytecounts are used.  */  SET_BINARY (input_desc);  /* No output file is open now.  */  output_desc = -1;  /* Get the optimal block size of input device and make a buffer.  */  if (fstat (input_desc, &stat_buf) < 0)    error (EXIT_FAILURE, errno, "%s", infile);  in_blk_size = ST_BLKSIZE (stat_buf);  buf = xmalloc (in_blk_size + 1);  switch (split_type)    {    case type_digits:    case type_lines:      lines_split (num, buf, in_blk_size);      break;    case type_bytes:      bytes_split (num, buf, in_blk_size);      break;    case type_byteslines:      line_bytes_split (num);      break;    default:      abort ();    }  if (close (input_desc) < 0)    error (EXIT_FAILURE, errno, "%s", infile);  if (output_desc >= 0 && close (output_desc) < 0)    error (EXIT_FAILURE, errno, "%s", outfile);  exit (EXIT_SUCCESS);}