* fhandler_proc.cc (fhandler_proc::readdir): Set dirent d_type.

* fhandler_process.cc (fhandler_process::readdir): Ditto.
	* fhandler_procnet.cc (fhandler_procnet::readdir): Ditto.
	* fhandler_procsys.cc (fhandler_procsys::readdir): Ditto.
	* fhandler_procsysvipc.cc (fhandler_procsysvipc::readdir): Ditto.
	*  fhandler_virtual.h (virt_ftype_to_dtype): Define new inline function
	to generate dirent d_type from virtual_ftype_t.
This commit is contained in:
Corinna Vinschen
2014-10-09 13:24:37 +00:00
parent 633cf9b5dd
commit 54338f169f
7 changed files with 61 additions and 8 deletions

View File

@ -1,6 +1,6 @@
/* fhandler_procsys.cc: fhandler for native NT namespace.
Copyright 2010, 2011, 2012, 2013 Red Hat, Inc.
Copyright 2010, 2011, 2012, 2013, 2014 Red Hat, Inc.
This file is part of Cygwin.
@ -346,6 +346,7 @@ fhandler_procsys::readdir (DIR *dir, dirent *de)
WCHAR buf[2][NAME_MAX + 1];
} f;
int res = EBADF;
tmp_pathbuf tp;
if (dir->__handle != INVALID_HANDLE_VALUE)
{
@ -357,10 +358,17 @@ fhandler_procsys::readdir (DIR *dir, dirent *de)
res = ENMFILE;
else
{
struct stat st;
char *file = tp.c_get ();
sys_wcstombs (de->d_name, NAME_MAX + 1, f.dbi.ObjectName.Buffer,
f.dbi.ObjectName.Length / sizeof (WCHAR));
de->d_ino = hash_path_name (get_ino (), de->d_name);
de->d_type = 0;
stpcpy (stpcpy (stpcpy (file, get_name ()), "/"), de->d_name);
if (!lstat64 (file, &st))
de->d_type = IFTODT (st.st_mode);
else
de->d_type = DT_UNKNOWN;
res = 0;
}
}