]> git.itanic.dy.fi Git - scan-pagemap/commitdiff
parser: Factor out duplicate code into a separate function
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Thu, 22 Jul 2010 11:34:05 +0000 (14:34 +0300)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Thu, 22 Jul 2010 11:34:05 +0000 (14:34 +0300)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
parse.c

diff --git a/parse.c b/parse.c
index c2dc22d978de8ce6ff8f1f57d9bd7e782ecdbbb3..1916a7cd2c98d2b743beaf97d6bce8532b115367 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -320,44 +320,44 @@ restart:
        return atoi(dirent->d_name);
 }
 
-static int get_next_tid(int pid, DIR **dir)
+static int opendir_check(DIR **dir, const char *path)
 {
        int error;
 
-       if (*dir == NULL) {
-               char path[64];
-
-               snprintf(path, sizeof(path), "/proc/%d/task/", pid);
-               *dir = opendir(path);
-               if (!*dir) {
+       if (!*dir) {
+               *dir = opendir("/proc");
+               if (!dir) {
                        error = errno;
-                       printf("Failed to open %s directory: %s\n",
-                               path,
+                       fprintf(stderr, "Failed to open /proc directory: %s\n",
                                strerror(error));
                        return -1;
                }
        }
 
-       return parse_pid(dir);
+       return 0;
 }
 
-static int get_next_pid(DIR **dir)
+static int get_next_tid(int pid, DIR **dir)
 {
-       int error;
+       if (*dir == NULL) {
+               char path[64];
 
-       if (!*dir) {
-               *dir = opendir("/proc");
-               if (!dir) {
-                       error = errno;
-                       printf("Failed to open /proc directory: %s\n",
-                               strerror(error));
+               snprintf(path, sizeof(path), "/proc/%d/task/", pid);
+               if (opendir_check(dir, path))
                        return -1;
-               }
        }
 
        return parse_pid(dir);
 }
 
+static int get_next_pid(DIR **dir)
+{
+       if (opendir_check(dir, "/proc"))
+               return -1;
+
+       return parse_pid(dir);
+}
+
 static void read_pageframe_with_threads(int pid,
                                        struct pageframe *pageframe,
                                        struct process **process_list,