rem: strcpy (s, file); addext (s, suffix, '~'); }
add: case BACKUP_IS_NEW: simple = (backup_type == numbered_existing_backups); break; } #endif  if (simple) memcpy (s + filelen, simple_backup_suffix, simple_backup_suffix_size); check_extension (s, filelen, '~');
context: find_backup_file_name (const char *file, enum backup_type backup_type){  size_t backup_suffix_size_max;  size_t file_len = strlen (file);  size_t numbered_suffix_size_max = INT_STRLEN_BOUND (int) + 4;  char *s;  const char *suffix = simple_backup_suffix;  /* Allow room for simple or `.~N~' backups.  */  backup_suffix_size_max = strlen (simple_backup_suffix) + 1;  if (HAVE_DIR && backup_suffix_size_max < numbered_suffix_size_max)    backup_suffix_size_max = numbered_suffix_size_max;  s = malloc (file_len + 1	      + backup_suffix_size_max + numbered_suffix_size_max);  if (s)    {#if HAVE_DIR      if (backup_type != simple)	{	  int highest_backup;	  size_t dirlen = dir_len (file);	  memcpy (s, file, dirlen);	  if (dirlen == FILESYSTEM_PREFIX_LEN (file))	    s[dirlen++] = '.';	  s[dirlen] = '\0';	  highest_backup = max_backup_version (base_name (file), s);	  if (! (backup_type == numbered_existing && highest_backup == 0))	    {	      char *numbered_suffix = s + (file_len + backup_suffix_size_max);	      sprintf (numbered_suffix, ".~%d~", highest_backup + 1);	      suffix = numbered_suffix;	    }	}#endif /* HAVE_DIR */      strcpy (s, file);      addext (s, suffix, '~');    }  return s;}