rem: if (!date_set && 2 <= argc - optind && !STREQ (argv[optind - 1], "--") && posix2_version () < 200112)
add: if (!date_set && 2 <= argc - optind && posix2_version () < 200112 && posixtime (&newtime[0].tv_sec, argv[optind], PDS_TRAILING_YEAR))
context: main (int argc, char **argv){  int c;  int date_set = 0;  int err = 0;  program_name = argv[0];  setlocale (LC_ALL, "");  bindtextdomain (PACKAGE, LOCALEDIR);  textdomain (PACKAGE);  atexit (close_stdout);  change_times = no_create = use_ref = posix_date = flexible_date = 0;  while ((c = getopt_long (argc, argv, "acd:fmr:t:", longopts, NULL)) != -1)    {      switch (c)	{	case 0:	  break;	case 'a':	  change_times |= CH_ATIME;	  break;	case 'c':	  no_create++;	  break;	case 'd':	  flexible_date++;	  newtime = get_date (optarg, NULL);	  if (newtime == (time_t) -1)	    error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (optarg));	  date_set++;	  break;	case 'f':	  break;	case 'm':	  change_times |= CH_MTIME;	  break;	case 'r':	  use_ref++;	  ref_file = optarg;	  break;	case 't':	  posix_date++;	  if (! posixtime (&newtime, optarg,			   PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS))	    error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (optarg));	  date_set++;	  break;	case TIME_OPTION:	/* --time */	  change_times |= XARGMATCH ("--time", optarg,				     time_args, time_masks);	  break;	case_GETOPT_HELP_CHAR;	case_GETOPT_VERSION_CHAR (PROGRAM_NAME, AUTHORS);	default:	  usage (EXIT_FAILURE);	}    }  if (change_times == 0)    change_times = CH_ATIME | CH_MTIME;  if ((use_ref && (posix_date || flexible_date))      || (posix_date && flexible_date))    {      error (0, 0, _("cannot specify times from more than one source"));      usage (EXIT_FAILURE);    }  if (use_ref)    {      if (stat (ref_file, &ref_stats))	error (EXIT_FAILURE, errno,	       _("failed to get attributes of %s"), quote (ref_file));      date_set++;    }  /* The obsolete `MMDDhhmm[YY]' form is valid IFF there are     two or more non-option arguments.  */  if (!date_set && 2 <= argc - optind && !STREQ (argv[optind - 1], "--")      && posix2_version () < 200112)    {      if (posixtime (&newtime, argv[optind], PDS_TRAILING_YEAR))	{	  if (! getenv ("POSIXLY_CORRECT"))	    {	      struct tm const *tm = localtime (&newtime);	      error (0, 0,		     _("warning: `touch %s' is obsolete; use\ `touch -t %04d%02d%02d%02d%02d.%02d'"),		     argv[optind],		     tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,		     tm->tm_hour, tm->tm_min, tm->tm_sec);	    }	  optind++;	  date_set++;	}    }  if (!date_set)    {      if ((change_times & (CH_ATIME | CH_MTIME)) == (CH_ATIME | CH_MTIME))	amtime_now = 1;      else	time (&newtime);    }  if (optind == argc)    {      error (0, 0, _("file arguments missing"));      usage (EXIT_FAILURE);    }  for (; optind < argc; ++optind)    err += touch (argv[optind]);  exit (err != 0);}