rem: errors = 0;
context: main (int argc, char **argv){  const char *error_message;	/* Return value from re_compile_pattern. */  int optc, errors;  int have_read_stdin = 0;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  errors = 0;  separator = "\n";  sentinel_length = 1;  separator_ends_record = 1;  while ((optc = getopt_long (argc, argv, "brs:", longopts, NULL)) != -1)    {      switch (optc)	{	case 0:	  break;	case 'b':	  separator_ends_record = 0;	  break;	case 'r':	  sentinel_length = 0;	  break;	case 's':	  separator = optarg;	  if (*separator == 0)	    error (EXIT_FAILURE, 0, _("separator cannot be empty"));	  break;	case_GETOPT_HELP_CHAR;	case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);	default:	  usage (EXIT_FAILURE);	}    }  if (sentinel_length == 0)    {      compiled_separator.allocated = 100;      compiled_separator.buffer = (unsigned char *)	xmalloc (compiled_separator.allocated);      compiled_separator.fastmap = xmalloc (256);      compiled_separator.translate = 0;      error_message = re_compile_pattern (separator, strlen (separator),					  &compiled_separator);      if (error_message)	error (EXIT_FAILURE, 0, "%s", error_message);    }  else    match_length = sentinel_length = strlen (separator);  read_size = INITIAL_READSIZE;  /* A precaution that will probably never be needed. */  while (sentinel_length * 2 >= read_size)    read_size *= 2;  G_buffer_size = read_size * 2 + sentinel_length + 2;  G_buffer = xmalloc (G_buffer_size);  if (sentinel_length)    {      strcpy (G_buffer, separator);      G_buffer += sentinel_length;    }  else    {      ++G_buffer;    }  if (optind == argc)    {      have_read_stdin = 1;      /* We need binary I/O, since `tac' relies	 on `lseek' and byte counts.  */      SET_BINARY2 (STDIN_FILENO, STDOUT_FILENO);      errors = tac_stdin ();    }  else    {      for (; optind < argc; ++optind)	{	  if (STREQ (argv[optind], "-"))	    {	      have_read_stdin = 1;	      SET_BINARY2 (STDIN_FILENO, STDOUT_FILENO);	      errors |= tac_stdin ();	    }	  else	    {	      /* Binary output will leave the lines' ends (NL or		 CR/LF) intact when the output is a disk file.		 Writing a file with CR/LF pairs at end of lines in		 text mode has no visible effect on console output,		 since two CRs in a row are just like one CR.  */	      SET_BINARY (STDOUT_FILENO);	      errors |= tac_file (argv[optind]);	    }	}    }  /* Flush the output buffer. */  output ((char *) NULL, (char *) NULL);  if (have_read_stdin && close (STDIN_FILENO) < 0)    error (EXIT_FAILURE, errno, "-");  exit (errors == 0 ? EXIT_SUCCESS : EXIT_FAILURE);}