Forgot to commit the file. There's probably more of them arround.
This commit is contained in:
@@ -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);
|
||||||
|
Reference in New Issue
Block a user