aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorElie De Brauwer <eliedebrauwer@gmail.com>2012-12-08 20:10:05 +0100
committerElie De Brauwer <eliedebrauwer@gmail.com>2012-12-08 20:10:05 +0100
commit7c6209d6c336df74984e62aa88679c06641ae309 (patch)
treeb4bcc499ecfc4fe43ec6685803020f42c332e9c9 /lib
parentd394a1fb216b3a4653848f6625f8f731d7d34ac7 (diff)
downloadtoybox-7c6209d6c336df74984e62aa88679c06641ae309.tar.gz
Adding -s (single shot) and -o (omit pids) options to pidof
Diffstat (limited to 'lib')
-rw-r--r--lib/lib.c7
-rw-r--r--lib/lib.h2
2 files changed, 5 insertions, 4 deletions
diff --git a/lib/lib.c b/lib/lib.c
index f452bf3c..148a7652 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -975,7 +975,7 @@ int yesno(char *prompt, int def)
}
// Execute a callback for each PID that matches a process name from a list.
-void for_each_pid_with_name_in(char **names, void (*callback)(pid_t pid))
+void for_each_pid_with_name_in(char **names, int (*callback)(pid_t pid))
{
DIR *dp;
struct dirent *entry;
@@ -998,9 +998,10 @@ void for_each_pid_with_name_in(char **names, void (*callback)(pid_t pid))
if (n<1) continue;
for (curname = names; *curname; curname++)
- if (!strcmp(basename(cmd), *curname)) callback(atol(entry->d_name));
+ if (!strcmp(basename(cmd), *curname))
+ if (!callback(atol(entry->d_name))) goto done;
}
-
+done:
closedir(dp);
}
diff --git a/lib/lib.h b/lib/lib.h
index 1c0350e0..7cc4d5ca 100644
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -144,7 +144,7 @@ void replace_tempfile(int fdin, int fdout, char **tempname);
void crc_init(unsigned int *crc_table, int little_endian);
void terminal_size(unsigned *x, unsigned *y);
int yesno(char *prompt, int def);
-void for_each_pid_with_name_in(char **names, void (*callback)(pid_t pid));
+void for_each_pid_with_name_in(char **names, int (*callback)(pid_t pid));
unsigned long xstrtoul(const char *nptr, char **endptr, int base);
// getmountlist.c