Cygwin: return correct FH_PROCESSFD for files under /proc/PID/fd subdir
This allows easier handling of fd symlinks. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
36ff506ddc
commit
f72191ac01
|
@ -134,14 +134,22 @@ fhandler_proc::get_proc_fhandler (const char *path)
|
|||
if (entry)
|
||||
return entry->fhandler;
|
||||
|
||||
int pid = atoi (path);
|
||||
char *e;
|
||||
pid_t pid = strtoul (path, &e, 10);
|
||||
if (*e != '/' && *e != '\0')
|
||||
return FH_NADA;
|
||||
pinfo p (pid);
|
||||
/* If p->pid != pid, then pid is actually the Windows PID for an execed
|
||||
Cygwin process, and the pinfo entry is the additional entry created
|
||||
at exec time. We don't want to enable the user to access a process
|
||||
entry by using the Win32 PID, though. */
|
||||
if (p && p->pid == pid)
|
||||
return FH_PROCESS;
|
||||
{
|
||||
/* Check for entry in fd subdir */
|
||||
if (!strncmp (++e, "fd/", 3) && e[3] != '\0')
|
||||
return FH_PROCESSFD;
|
||||
return FH_PROCESS;
|
||||
}
|
||||
|
||||
bool has_subdir = false;
|
||||
while (*path)
|
||||
|
|
|
@ -806,7 +806,7 @@ path_conv::check (const char *src, unsigned opt,
|
|||
fh->fill_filebuf ();
|
||||
symlen = sym.set (fh->get_filebuf ());
|
||||
}
|
||||
else if (file_type == virt_fsdir && dev == FH_PROCESS)
|
||||
else if (file_type == virt_fsdir && dev == FH_PROCESSFD)
|
||||
{
|
||||
/* FIXME: This is YA bad hack to workaround that
|
||||
we're checking for isvirtual_dev at this point.
|
||||
|
|
Loading…
Reference in New Issue