&& (entry->d_namlen == 1 || (entry->d_namlen == 2 && entry->d_name[1] == '.')))
&& (entry->d_name[1] == '\0' || (entry->d_name[1] == '.' && entry->d_name[2] == '\0')))
DEFUN (ftw_dir, (dirs, level, descriptors, dir, len, func),       DIR **dirs AND int level AND int descriptors AND       char *dir AND size_t len AND       int EXFUN((*func), (CONST char *file, struct stat *status,			   int flag))){  int got;  struct dirent *entry;  got = 0;  errno = 0;  while ((entry = readdir (dirs[level])) != NULL)    {      struct stat s;      int flag, retval, newlev;      ++got;      if (entry->d_name[0] == '.'	  && (entry->d_namlen == 1 ||	      (entry->d_namlen == 2 && entry->d_name[1] == '.')))	{	  errno = 0;	  continue;	}      if (entry->d_namlen + len + 1 > PATH_MAX)	{#ifdef ENAMETOOLONG	  errno = ENAMETOOLONG;#else	  errno = ENOMEM;#endif	  return -1;	}      dir[len] = '/';      memcpy ((PTR) (dir + len + 1), (PTR) entry->d_name,	      entry->d_namlen + 1);      if (stat (dir, &s) < 0)	{	  if (errno != EACCES && errno != ENOENT)	    return -1;	  flag = FTW_NS;	}      else if (S_ISDIR (s.st_mode))	{	  newlev = (level + 1) % descriptors;	  if (dirs[newlev] != NULL)	    closedir (dirs[newlev]);	  dirs[newlev] = opendir (dir);	  if (dirs[newlev] != NULL)	    flag = FTW_D;	  else	    {	      if (errno != EACCES)		return -1;	      flag = FTW_DNR;	    }	}      else	flag = FTW_F;      retval = (*func) (dir, &s, flag);      if (flag == FTW_D)	{	  if (retval == 0)	    retval = ftw_dir (dirs, newlev, descriptors, dir,			      entry->d_namlen + len + 1, func);	  if (dirs[newlev] != NULL)	    {	      int save;	      save = errno;	      closedir (dirs[newlev]);	      errno = save;	      dirs[newlev] = NULL;	    }	}      if (retval != 0)	return retval;      if (dirs[level] == NULL)	{	  int skip;	  dir[len] = '\0';	  dirs[level] = opendir (dir);	  if (dirs[level] == NULL)	    return -1;	  skip = got;	  while (skip-- != 0)	    {	      errno = 0;	      if (readdir (dirs[level]) == NULL)		return errno == 0 ? 0 : -1;	    }	}      errno = 0;    }  return errno == 0 ? 0 : -1;}