aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--misc-utils/kill.c6
-rw-r--r--misc-utils/kill.h2
-rw-r--r--misc-utils/procs.c18
3 files changed, 13 insertions, 13 deletions
diff --git a/misc-utils/kill.c b/misc-utils/kill.c
index bce3348c96..051f56d8ff 100644
--- a/misc-utils/kill.c
+++ b/misc-utils/kill.c
@@ -158,7 +158,7 @@ int main (int argc, char *argv[])
int errors, numsig, pid;
char *ep, *arg;
int do_pid, do_kill, check_all;
- int *pids, *ip;
+ pid_t *pids, *ip;
setlocale(LC_ALL, "");
bindtextdomain(PACKAGE, LOCALEDIR);
@@ -422,12 +422,12 @@ static int usage(int status)
return status;
}
-static int kill_verbose (char *procname, int pid, int sig)
+static int kill_verbose (char *procname, pid_t pid, int sig)
{
int rc;
if (sig < 0) {
- printf ("%d\n", pid);
+ printf ("%ld\n", (long)pid);
return 0;
}
#ifdef HAVE_SIGQUEUE
diff --git a/misc-utils/kill.h b/misc-utils/kill.h
index 27a12a805a..107f8019b3 100644
--- a/misc-utils/kill.h
+++ b/misc-utils/kill.h
@@ -1 +1 @@
-extern int *get_pids (char *process_name, int get_all);
+extern pid_t *get_pids (char *process_name, int get_all);
diff --git a/misc-utils/procs.c b/misc-utils/procs.c
index f3057fe1ef..dff7a7063b 100644
--- a/misc-utils/procs.c
+++ b/misc-utils/procs.c
@@ -28,16 +28,16 @@
extern char *mybasename (char *);
static char *parse_parens (char *buf);
-int *
+pid_t *
get_pids (char *process_name, int get_all) {
DIR *dir;
struct dirent *ent;
int status;
- char *dname, fname[100], *cp, buf[256];
+ char fname[100], *cp, buf[256], *end;
struct stat st;
uid_t uid;
FILE *fp;
- int pid, *pids, num_pids, pids_size;
+ pid_t pid, *pids, num_pids, pids_size;
dir = opendir ("/proc");
if (! dir) {
@@ -49,10 +49,10 @@ get_pids (char *process_name, int get_all) {
num_pids = pids_size = 0;
while ((ent = readdir (dir)) != NULL) {
- dname = ent->d_name;
- if (! isdigit (*dname)) continue;
- pid = atoi (dname);
- sprintf (fname, "/proc/%d/cmdline", pid);
+ pid = strtol(ent->d_name, &end, 10);
+ if (errno || ent->d_name == end || (end && *end))
+ continue;
+ sprintf (fname, "/proc/%ld/cmdline", (long)pid);
/* get the process owner */
status = stat (fname, &st);
if (status != 0) continue;
@@ -65,7 +65,7 @@ get_pids (char *process_name, int get_all) {
/* an empty command line means the process is swapped out */
if (! cp || ! *cp) {
/* get the process name from the statfile */
- sprintf (fname, "/proc/%d/stat", pid);
+ sprintf (fname, "/proc/%ld/stat", (long)pid);
fp = fopen (fname, "r");
if (! fp) continue;
cp = fgets (buf, sizeof (buf), fp);
@@ -78,7 +78,7 @@ get_pids (char *process_name, int get_all) {
if (strcmp (process_name, mybasename (cp))) continue;
while (pids_size < num_pids + 2) {
pids_size += 5;
- pids = (int *) xrealloc (pids, sizeof (int) * pids_size);
+ pids = xrealloc (pids, sizeof(pid_t) * pids_size);
}
if (pids) {
pids[num_pids++] = pid;