rem: mkdir_and_install = 1;
add: mkdir_and_install = true;
context: main (int argc, char **argv){  int optc;  int errors = 0;  const char *specified_mode = NULL;  int make_backups = 0;  char *backup_suffix_string;  char *version_control_string = NULL;  int mkdir_and_install = 0;  struct cp_options x;  int n_files;  char **file;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  cp_option_init (&x);  owner_name = NULL;  group_name = NULL;  strip_files = 0;  dir_arg = 0;  umask (0);  /* FIXME: consider not calling getenv for SIMPLE_BACKUP_SUFFIX unless     we'll actually use backup_suffix_string.  */  backup_suffix_string = getenv ("SIMPLE_BACKUP_SUFFIX");  while ((optc = getopt_long (argc, argv, "bcsDdg:m:o:pvV:S:", long_options,			      NULL)) != -1)    {      switch (optc)	{	case 0:	  break;	case 'V':  /* FIXME: this is deprecated.  Remove it in 2001.  */	  error (0, 0,		 _("warning: --version-control (-V) is obsolete;  support for\ it\nwill be removed in some future release.  Use --backup=%s instead."		   ), optarg);	  /* Fall through.  */	case 'b':	  make_backups = 1;	  if (optarg)	    version_control_string = optarg;	  break;	case 'c':	  break;	case 's':	  strip_files = 1;	  break;	case 'd':	  dir_arg = 1;	  break;	case 'D':	  mkdir_and_install = 1;	  break;	case 'v':	  x.verbose = 1;	  break;	case 'g':	  group_name = optarg;	  break;	case 'm':	  specified_mode = optarg;	  break;	case 'o':	  owner_name = optarg;	  break;	case 'p':	  x.preserve_timestamps = 1;	  break;	case 'S':	  make_backups = 1;	  backup_suffix_string = optarg;	  break;	case_GETOPT_HELP_CHAR;	case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);	default:	  usage (EXIT_FAILURE);	}    }  /* Check for invalid combinations of arguments. */  if (dir_arg && strip_files)    error (EXIT_FAILURE, 0,	   _("the strip option may not be used when installing a directory"));  if (backup_suffix_string)    simple_backup_suffix = xstrdup (backup_suffix_string);  x.backup_type = (make_backups		   ? xget_version (_("backup type"),				   version_control_string)		   : none);  n_files = argc - optind;  file = argv + optind;  if (n_files == 0 || (n_files == 1 && !dir_arg))    {      error (0, 0, _("too few arguments"));      usage (EXIT_FAILURE);    }  if (specified_mode)    {      struct mode_change *change = mode_compile (specified_mode, 0);      if (change == MODE_INVALID)	error (EXIT_FAILURE, 0, _("invalid mode %s"), quote (specified_mode));      else if (change == MODE_MEMORY_EXHAUSTED)	xalloc_die ();      mode = mode_adjust (0, change);    }  get_ids ();  if (dir_arg)    {      int i;      for (i = 0; i < n_files; i++)	{	  errors |=	    make_path (file[i], mode, mode, owner_id, group_id, 0,		       (x.verbose ? _("creating directory %s") : NULL));	}    }  else    {      /* FIXME: it's a little gross that this initialization is	 required by copy.c::copy. */      hash_init ();      if (n_files == 2)        {          if (mkdir_and_install)	    errors = install_file_to_path (file[0], file[1], &x);	  else if (!isdir (file[1]))	    errors = install_file_in_file (file[0], file[1], &x);	  else	    errors = install_file_in_dir (file[0], file[1], &x);	}      else	{	  int i;	  const char *dest = file[n_files - 1];	  if (!isdir (dest))	    {	      error (0, 0,		     _("installing multiple files, but last argument, %s \is not a directory"),		     quote (dest));	      usage (EXIT_FAILURE);	    }	  dest_info_init (&x);	  for (i = 0; i < n_files - 1; i++)	    {	      errors |= install_file_in_dir (file[i], dest, &x);	    }	}    }  exit (errors);}