$NetBSD: patch-af,v 1.5 2013/12/13 09:58:58 jperkin Exp $ Need limits.h for PATH_MAX --- src/pstree.c.orig 2000-12-18 05:59:23.000000000 +0000 +++ src/pstree.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -22,12 +23,12 @@ #include #include "comm.h" +#include "procfs.h" #ifndef MAX_DEPTH #define MAX_DEPTH 100 #endif -#define PROC_BASE "/proc" /* UTF-8 defines by Johan Myreen */ #define UTF_V "\342\224\202\277" /* Vertical line drawing char */ @@ -303,6 +304,7 @@ dump_tree (PROC * current, int level, in const struct passwd *pw; int lvl, i, add, offset, len, swapped, info, count, comm_len, first; const char *tmp, *here; + char tbuf[1024], *pbuf; char comm_tmp[5]; if (!current) @@ -327,7 +329,8 @@ dump_tree (PROC * current, int level, in add = out_int (rep) + 2; out_string ("*["); } - if (current->highlight && (tmp = tgetstr ("md", NULL))) + pbuf = tbuf; + if (current->highlight && (tmp = tgetstr ("md", &pbuf))) tputs (tmp, 1, putchar); if ((swapped = print_args) && current->argc < 0) out_char ('('); @@ -366,7 +369,8 @@ dump_tree (PROC * current, int level, in } if (info || swapped) out_char (')'); - if (current->highlight && (tmp = tgetstr ("me", NULL))) + pbuf = tbuf; + if (current->highlight && (tmp = tgetstr ("me", &pbuf))) tputs (tmp, 1, putchar); if (print_args) { @@ -504,7 +508,7 @@ read_proc (void) while ((de = readdir (dir)) != NULL) if ((pid = atoi (de->d_name)) != 0) { - sprintf (path, "%s/%d/stat", PROC_BASE, pid); + sprintf (path, "%s/%d/%s", PROC_BASE, pid, STATUS_FILE); if ((file = fopen (path, "r")) != NULL) { empty = 0; @@ -513,6 +517,10 @@ read_proc (void) perror (path); exit (1); } +#ifdef BSD_44_PROCFS + if (fscanf(file, "%s %*d %d", comm, &ppid) == 2) + { { { +#else fread(readbuf, BUFSIZ, 1, file) ; if (ferror(file) == 0) { @@ -532,11 +540,12 @@ read_proc (void) (file, "%d (%s) %c %d", &dummy, comm, (char *) &dummy, &ppid) == 4) */ +#endif if (!print_args) add_proc (comm, pid, ppid, st.st_uid, NULL, 0); else { - sprintf (path, "%s/%d/cmdline", PROC_BASE, pid); + sprintf (path, "%s/%d/%s", PROC_BASE, pid, CMDLINE_FILE); if ((fd = open (path, O_RDONLY)) < 0) { perror (path); @@ -641,7 +650,11 @@ main (int argc, char **argv) switch (c) { case 'a': +#if defined(BSD_44_PROCFS) && !defined(BSD_PROCFS_CMDLINE) + print_args = 0; +#else print_args = 1; +#endif break; case 'c': compact = 0;