|  | @@ -340,29 +340,51 @@ struct file_id_list
 | 
	
		
			
				|  |  |    struct file_id_list *next;
 | 
	
		
			
				|  |  |    ino_t ino;
 | 
	
		
			
				|  |  |    dev_t dev;
 | 
	
		
			
				|  |  | +  const char *from_file;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static struct file_id_list *file_id_list;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +/* Return the name of the file from which the file names and options
 | 
	
		
			
				|  |  | +   are being read.
 | 
	
		
			
				|  |  | +*/
 | 
	
		
			
				|  |  | +static const char *
 | 
	
		
			
				|  |  | +file_list_name ()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +  struct name_elt *elt;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  for (elt = name_head; elt; elt = elt->next)
 | 
	
		
			
				|  |  | +    if (elt->type == NELT_FILE && elt->v.file.fp)
 | 
	
		
			
				|  |  | +      return elt->v.file.name;
 | 
	
		
			
				|  |  | +  return _("command line");
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  static int
 | 
	
		
			
				|  |  |  add_file_id (const char *filename)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    struct file_id_list *p;
 | 
	
		
			
				|  |  |    struct stat st;
 | 
	
		
			
				|  |  | +  const char *reading_from;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (stat (filename, &st))
 | 
	
		
			
				|  |  |      stat_fatal (filename);
 | 
	
		
			
				|  |  | +  reading_from = file_list_name ();
 | 
	
		
			
				|  |  |    for (p = file_id_list; p; p = p->next)
 | 
	
		
			
				|  |  |      if (p->ino == st.st_ino && p->dev == st.st_dev)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -	ERROR ((0, 0, _("%s: file list already read"),
 | 
	
		
			
				|  |  | -		quotearg_colon (filename)));
 | 
	
		
			
				|  |  | +	int oldc = set_char_quoting (NULL, ':', 1);
 | 
	
		
			
				|  |  | +	ERROR ((0, 0,
 | 
	
		
			
				|  |  | +		_("%s: file list requested from %s already read from %s"),
 | 
	
		
			
				|  |  | +		quotearg_n (0, filename),
 | 
	
		
			
				|  |  | +		reading_from, p->from_file));
 | 
	
		
			
				|  |  | +	set_char_quoting (NULL, ':', oldc);
 | 
	
		
			
				|  |  |  	return 1;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |    p = xmalloc (sizeof *p);
 | 
	
		
			
				|  |  |    p->next = file_id_list;
 | 
	
		
			
				|  |  |    p->ino = st.st_ino;
 | 
	
		
			
				|  |  |    p->dev = st.st_dev;
 | 
	
		
			
				|  |  | +  p->from_file = reading_from;
 | 
	
		
			
				|  |  |    file_id_list = p;
 | 
	
		
			
				|  |  |    return 0;
 | 
	
		
			
				|  |  |  }
 |