Move names_to_pid from pending to lib.
authorRob Landley <rob@landley.net>
Thu, 19 Dec 2013 15:32:30 +0000 (09:32 -0600)
committerRob Landley <rob@landley.net>
Thu, 19 Dec 2013 15:32:30 +0000 (09:32 -0600)
lib/lib.c
lib/lib.h
lib/pending.c
lib/pending.h

index 16c36b0..6a9a0bd 100644 (file)
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -710,3 +710,28 @@ void mode_to_string(mode_t mode, char *buf)
   else c = '-';
   *buf = c;
 }
+
+// Execute a callback for each PID that matches a process name from a list.
+void names_to_pid(char **names, int (*callback)(pid_t pid, char *name))
+{
+  DIR *dp;
+  struct dirent *entry;
+
+  if (!(dp = opendir("/proc"))) perror_exit("opendir");
+
+  while ((entry = readdir(dp))) {
+    unsigned u;
+    char *cmd, **curname;
+
+    if (!(u = atoi(entry->d_name))) continue;
+    sprintf(libbuf, "/proc/%u/cmdline", u);
+    if (!(cmd = readfile(libbuf, libbuf, sizeof(libbuf)))) continue;
+
+    for (curname = names; *curname; curname++)
+      if (**curname == '/' ? !strcmp(cmd, *curname)
+          : !strcmp(basename(cmd), basename(*curname)))
+        if (callback(u, *curname)) break;
+    if (*curname) break;
+  }
+  closedir(dp);
+}
index 6edfa0f..3d32649 100644 (file)
--- a/lib/lib.h
+++ b/lib/lib.h
@@ -177,5 +177,6 @@ char *num_to_sig(int sig);
 
 mode_t string_to_mode(char *mode_str, mode_t base);
 void mode_to_string(mode_t mode, char *buf);
+void names_to_pid(char **names, int (*callback)(pid_t pid, char *name));
 
 #include "lib/pending.h"
index df3207e..741c5cc 100644 (file)
@@ -5,31 +5,6 @@
 
 #include "toys.h"
 
-// Execute a callback for each PID that matches a process name from a list.
-void names_to_pid(char **names, int (*callback)(pid_t pid, char *name))
-{
-  DIR *dp;
-  struct dirent *entry;
-
-  if (!(dp = opendir("/proc"))) perror_exit("opendir");
-
-  while ((entry = readdir(dp))) {
-    unsigned u;
-    char *cmd, **curname;
-
-    if (!(u = atoi(entry->d_name))) continue;
-    sprintf(libbuf, "/proc/%u/cmdline", u);
-    if (!(cmd = readfile(libbuf, libbuf, sizeof(libbuf)))) continue;
-
-    for (curname = names; *curname; curname++)
-      if (**curname == '/' ? !strcmp(cmd, *curname)
-          : !strcmp(basename(cmd), basename(*curname)))
-        if (callback(u, *curname)) break;
-    if (*curname) break;
-  }
-  closedir(dp);
-}
-
 void daemonize(void)
 {
   int fd = open("/dev/null", O_RDWR);
index 4388571..67605c0 100644 (file)
@@ -8,11 +8,6 @@
 typedef float FLOAT;
 //#endif
 
-// libc generally has this, but the headers are screwed up
-ssize_t getline(char **lineptr, size_t *n, FILE *stream);
-
-void names_to_pid(char **names, int (*callback)(pid_t pid, char *name));
-
 // password.c
 #define MAX_SALT_LEN  20 //3 for id, 16 for key, 1 for '\0'
 #define SYS_FIRST_ID  100