if (chdir ("/") < 0)
if (__chdir ("/") < 0)
process_entry (struct ftw_data *data, struct dir_data *dir, const char *name,	       size_t namlen){  struct STAT st;  int result = 0;  int flag;  if (name[0] == '.' && (name[1] == '\0'			 || (name[1] == '.' && name[2] == '\0')))    /* Don't process the "." and ".." entries.  */    return 0;  if (data->dirbufsize < data->ftw.base + namlen + 2)    {      /* Enlarge the buffer.  */      char *newp;      data->dirbufsize *= 2;      newp = realloc (data->dirbuf, data->dirbufsize);      if (newp == NULL)	return -1;      data->dirbuf = newp;    }  *((char *) __mempcpy (data->dirbuf + data->ftw.base, name, namlen)) = '\0';  if (((data->flags & FTW_PHYS)       ? LXSTAT (_STAT_VER, data->dirbuf, &st)       : XSTAT (_STAT_VER, data->dirbuf, &st)) < 0)    {      if (errno != EACCES && errno != ENOENT)	result = -1;      else if (!(data->flags & FTW_PHYS)	       && LXSTAT (_STAT_VER, data->dirbuf, &st) == 0	       && S_ISLNK (st.st_mode))	flag = FTW_SLN;      else	flag = FTW_NS;    }  else    {      if (S_ISDIR (st.st_mode))	flag = FTW_D;      else if (S_ISLNK (st.st_mode))	flag = FTW_SL;      else	flag = FTW_F;    }  if (result == 0      && (flag == FTW_NS	  || !(data->flags & FTW_MOUNT) || st.st_dev == data->dev))    {      if ((data->flags & FTW_PHYS) || flag == FTW_NS	  || (!find_object (data, &st)	      /* Remember the object.  */	      && (result = add_object (data, &st)) == 0))	{	  if (flag == FTW_D)	    {	      result = ftw_dir (data, &st);	      if (result == 0 && (data->flags & FTW_CHDIR))		{		  /* Change back to current directory.  */		  int done = 0;		  if (dir->stream != NULL)		    if (__fchdir (dirfd (dir->stream)) == 0)		      done = 1;		  if (!done)		    {		      if (data->ftw.base == 1)			{			  if (chdir ("/") < 0)			    result = -1;			}		      else			{			  /* Please note that we overwrite a slash.  */			  data->dirbuf[data->ftw.base - 1] = '\0';			  if (chdir (data->dirbuf) < 0)			    result = -1;			  data->dirbuf[data->ftw.base - 1] = '/';			}		    }		}	    }	  else	    result = (*data->func) (data->dirbuf, &st, data->cvt_arr[flag],				    &data->ftw);	}    }  return result;}