rem: if (modeind != 0 && modeind != thisind) { static char char_string[2] = {0, 0}; char_string[0] = c; error (EXIT_FAILURE, 0, _("invalid character %s in mode string %s"), quote_n (0, char_string), quote_n (1, argv[thisind])); } modeind = thisind;
add: {   char const *arg = argv[optind - 1]; size_t arg_len = strlen (arg); size_t mode_comma_len = mode_len + !!mode_len; size_t new_mode_len = mode_comma_len + arg_len; if (mode_alloc <= new_mode_len) { mode_alloc = new_mode_len + 1; mode = x2realloc (mode, &mode_alloc); } mode[mode_len] = ','; strcpy (mode + mode_comma_len, arg); mode_len = new_mode_len; } break; case NO_PRESERVE_ROOT: preserve_root = false; break; case PRESERVE_ROOT: preserve_root = true;
context: main (int argc, char **argv){  struct mode_change *changes;  int errors = 0;  int modeind = 0;		/* Index of the mode argument in `argv'. */  int thisind;  int c;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  recurse = force_silent = 0;  while (1)    {      thisind = optind ? optind : 1;      c = getopt_long (argc, argv, "RcfvrwxXstugoa,+-=", long_options, NULL);      if (c == -1)	break;      switch (c)	{	case 0:	  break;	case 'r':	case 'w':	case 'x':	case 'X':	case 's':	case 't':	case 'u':	case 'g':	case 'o':	case 'a':	case ',':	case '+':	case '-':	case '=':	  if (modeind != 0 && modeind != thisind)	    {	      static char char_string[2] = {0, 0};	      char_string[0] = c;	      error (EXIT_FAILURE, 0, _("invalid character %s in mode string %s"),		     quote_n (0, char_string), quote_n (1, argv[thisind]));	    }	  modeind = thisind;	  break;	case REFERENCE_FILE_OPTION:	  reference_file = optarg;	  break;	case 'R':	  recurse = 1;	  break;	case 'c':	  verbosity = V_changes_only;	  break;	case 'f':	  force_silent = 1;	  break;	case 'v':	  verbosity = V_high;	  break;	case_GETOPT_HELP_CHAR;	case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);	default:	  usage (EXIT_FAILURE);	}    }  if (modeind == 0 && reference_file == NULL)    modeind = optind++;  if (optind >= argc)    {      error (0, 0, _("too few arguments"));      usage (EXIT_FAILURE);    }  changes = (reference_file ? mode_create_from_ref (reference_file)	     : mode_compile (argv[modeind], MODE_MASK_ALL));  if (changes == MODE_INVALID)    error (EXIT_FAILURE, 0,	   _("invalid mode string: %s"), quote (argv[modeind]));  else if (changes == MODE_MEMORY_EXHAUSTED)    xalloc_die ();  else if (changes == MODE_BAD_REFERENCE)    error (EXIT_FAILURE, errno, _("failed to get attributes of %s"),	   quote (reference_file));  for (; optind < argc; ++optind)    errors |= change_file_mode (argv[optind], changes, 1);  exit (errors);}