Forgot to commit the file. There's probably more of them arround.

This commit is contained in:
Drazen Kacar
1999-05-03 00:05:38 +00:00
parent 0408c86065
commit fd2ddf8b50

View File

@@ -24,6 +24,8 @@
#include <glibtop.h> #include <glibtop.h>
#include <glibtop_private.h> #include <glibtop_private.h>
#include <errno.h>
/* Read /proc/<pid>/psinfo. */ /* Read /proc/<pid>/psinfo. */
int int
@@ -41,7 +43,7 @@ glibtop_get_proc_data_psinfo_s (glibtop *server, struct psinfo *psinfo, pid_t pi
if (pread (fd, psinfo, sizeof (struct psinfo), 0) != sizeof (struct psinfo)) { if (pread (fd, psinfo, sizeof (struct psinfo), 0) != sizeof (struct psinfo)) {
close (fd); close (fd);
glibtop_warn_io_r (server, "read (%s)", buffer); glibtop_warn_io_r (server, "pread (%s)", buffer);
return -1; return -1;
} }
@@ -64,7 +66,7 @@ glibtop_get_proc_data_usage_s (glibtop *server, struct prusage *prusage, pid_t p
if (pread (fd, prusage, sizeof (struct prusage), 0) != sizeof (struct prusage)) { if (pread (fd, prusage, sizeof (struct prusage), 0) != sizeof (struct prusage)) {
close (fd); close (fd);
glibtop_warn_io_r (server, "read (%s)", buffer); glibtop_warn_io_r (server, "pread (%s)", buffer);
return -1; return -1;
} }
@@ -78,17 +80,40 @@ glibtop_get_proc_credentials_s(glibtop *server, struct prcred *prcred, pid_t pid
int fd; int fd;
char buffer[BUFSIZ]; char buffer[BUFSIZ];
sprintf(buffer, "/proc/%d/prcred", (int)pid); sprintf(buffer, "/proc/%d/cred", (int)pid);
if((fd = open(buffer, O_RDONLY)) < 0) if((fd = open(buffer, O_RDONLY)) < 0)
{ {
if(errno != EPERM) if(errno != EPERM && errno != EACCES)
glibtop_warn_io_r(server, "open (%s)", buffer); glibtop_warn_io_r(server, "open (%s)", buffer);
return -1; return -1;
} }
if(pread(fd, prcred, sizeof(struct prcred), 0) != sizeof(struct prcred)) if(pread(fd, prcred, sizeof(struct prcred), 0) != sizeof(struct prcred))
{ {
close(fd); close(fd);
glibtop_warn_io_r(server, "read (%s)", buffer); glibtop_warn_io_r(server, "pread (%s)", buffer);
return -1;
}
close(fd);
return 0;
}
int
glibtop_get_proc_status_s(glibtop *server, struct pstatus *pstatus, pid_t pid)
{
int fd;
char buffer[BUFSIZ];
sprintf(buffer, "/proc/%d/status", (int)pid);
if((fd = open(buffer, O_RDONLY)) < 0)
{
if(errno != EPERM && errno != EACCES)
glibtop_warn_io_r(server, "open (%s)", buffer);
return -1;
}
if(pread(fd, pstatus, sizeof(struct pstatus), 0) != sizeof(struct prcred))
{
close(fd);
glibtop_warn_io_r(server, "pread (%s)", buffer);
return -1; return -1;
} }
close(fd); close(fd);