rem: any_changed = 0;
context: tail_forever (struct File_spec *f, int nfiles, double sleep_interval){  int last;  int writer_is_dead = 0;  last = nfiles - 1;  while (1)    {      int i;      int any_changed;      any_changed = 0;      for (i = 0; i < nfiles; i++)	{	  struct stat stats;	  if (f[i].ignore)	    continue;	  if (f[i].fd < 0)	    {	      recheck (&f[i]);	      continue;	    }	  if (fstat (f[i].fd, &stats) < 0)	    {	      f[i].fd = -1;	      f[i].errnum = errno;	      error (0, errno, "%s", pretty_name (&f[i]));	      continue;	    }	  if (stats.st_size == f[i].size)	    {	      f[i].n_consecutive_size_changes = 0;	      if ((max_n_unchanged_stats_between_opens		   <= f[i].n_unchanged_stats++)		  && follow_mode == Follow_name)		{		  recheck (&f[i]);		  f[i].n_unchanged_stats = 0;		}	      continue;	    }	  /* Ensure that a file that's unlinked or moved aside, yet always	     growing will be recognized as having been renamed.  */	  if ((max_n_consecutive_size_changes_between_opens	       <= f[i].n_consecutive_size_changes++)	      && follow_mode == Follow_name)	    {	      f[i].n_consecutive_size_changes = 0;	      recheck (&f[i]);	      continue;	    }	  /* This file has changed size.  Print out what we can, and	     then keep looping.  */	  any_changed = 1;	  /* reset counter */	  f[i].n_unchanged_stats = 0;	  if (stats.st_size < f[i].size)	    {	      error (0, 0, _("%s: file truncated"), pretty_name (&f[i]));	      last = i;	      xlseek (f[i].fd, (off_t) stats.st_size, SEEK_SET,		      pretty_name (&f[i]));	      f[i].size = stats.st_size;	      continue;	    }	  if (i != last)	    {	      if (print_headers)		write_header (pretty_name (&f[i]));	      last = i;	    }	  f[i].size += dump_remainder (pretty_name (&f[i]), f[i].fd,				       COPY_TO_EOF);	}      if (n_live_files (f, nfiles) == 0 && ! reopen_inaccessible_files)	{	  error (0, 0, _("no files remaining"));	  break;	}      /* If none of the files changed size, sleep.  */      if (!any_changed)	{	  if (writer_is_dead)	    break;	  if (xnanosleep (sleep_interval))	    error (EXIT_FAILURE, errno, _("cannot read realtime clock"));	  /* Once the writer is dead, read the files once more to	     avoid a race condition.  */	  writer_is_dead = (pid != 0			    && kill (pid, 0) != 0			    /* Handle the case in which you cannot send a			       signal to the writer, so kill fails and sets			       errno to EPERM.  */			    && errno != EPERM);	}    }}