* fhandler.h (fhandler_process::pid): New field.

(fhandler_process::fstat): Remove unneeded array.  Set pid element.
(fhandler_process::open): Ditto.
(fhandler_process::fill_filebuf): Handle case where 'p' field is NULL.
This commit is contained in:
Christopher Faylor 2002-06-30 23:02:58 +00:00
parent ccacec81db
commit fdf0b5de28
3 changed files with 26 additions and 7 deletions

View File

@ -1,3 +1,10 @@
2002-06-30 Christopher Faylor <cgf@redhat.com>
* fhandler.h (fhandler_process::pid): New field.
(fhandler_process::fstat): Remove unneeded array. Set pid element.
(fhandler_process::open): Ditto.
(fhandler_process::fill_filebuf): Handle case where 'p' field is NULL.
2002-06-30 Christopher Faylor <cgf@redhat.com>
* fhandler.h (fhandler_process::p): New field.

View File

@ -1107,7 +1107,6 @@ class fhandler_proc: public fhandler_virtual
void fill_filebuf ();
};
class pinfo;
class fhandler_registry: public fhandler_proc
{
public:
@ -1125,9 +1124,10 @@ class fhandler_registry: public fhandler_proc
void fill_filebuf ();
};
struct _pinfo;
class pinfo;
class fhandler_process: public fhandler_proc
{
pid_t pid;
pinfo *p;
public:
fhandler_process ();

View File

@ -100,12 +100,11 @@ fhandler_process::fstat (struct __stat64 *buf, path_conv *pc)
int file_type = exists ();
(void) fhandler_base::fstat (buf, pc);
path += proc_len + 1;
int pid = atoi (path);
winpids pids;
pid = atoi (path);
pinfo p (pid);
if (!p)
{
set_errno(ENOENT);
set_errno (ENOENT);
return -1;
}
@ -154,8 +153,7 @@ fhandler_process::readdir (DIR * dir)
int
fhandler_process::open (path_conv *pc, int flags, mode_t mode)
{
int process_file_no = -1, pid;
winpids pids;
int process_file_no = -1;
int res = fhandler_virtual::open (pc, flags, mode);
if (!res)
@ -249,6 +247,17 @@ out:
void
fhandler_process::fill_filebuf ()
{
pinfo pmaybe;
if (!p)
{
pmaybe.init (pid);
p = &pmaybe;
}
if (!p)
return;
switch (fileid)
{
case PROCESS_UID:
@ -349,6 +358,9 @@ fhandler_process::fill_filebuf ()
break;
}
}
if (p == &pmaybe)
p = NULL;
}
static