#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-#include "compat.h"
#include "utils-legacy.h"
#include "internal.h"
char *str,
char *buf, size_t bufsize)
{
- char status_name[ sizeof("/proc/01234/status") ];
+ char status_name[ sizeof("/proc//status") + sizeof(unsigned int)*3 + 1 ];
int fd;
size_t len;
char * res = 0;
- if (pid<=0 || (uint32_t)(pid)>99999) {
+ if (pid<0 || (uint32_t)(pid)>99999) {
errno = EINVAL;
return 0;
}
- strcpy(status_name, "/proc/");
- len = utilvserver_uint2str(status_name+sizeof("/proc/")-1,
- sizeof(status_name)-sizeof("/proc//status")+1,
- pid, 10);
- strcpy(status_name+sizeof("/proc/")+len-1, "/status");
+ if (pid==0) strcpy(status_name, "/proc/self/status");
+ else {
+ strcpy(status_name, "/proc/");
+ len = utilvserver_fmt_uint(status_name+sizeof("/proc/")-1, pid);
+ strcpy(status_name+sizeof("/proc/")+len-1, "/status");
+ }
fd = open(status_name, O_RDONLY);
if (fd==-1) return 0;