ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/pack/freebsd/sysutils/psmisc/files/patch-src-pstree.c
Revision: 280
Committed: 2010-05-18T08:39:43-07:00 (15 years, 1 month ago) by douglas
Content type: text/x-diff
File size: 2456 byte(s)
Log Message:
Update psmisc to 22.11, take maintainership, fix argument printing and UTF-8 detection.

File Contents

# Content
1 --- src/pstree.c.orig 2010-04-08 05:20:10.000000000 -0700
2 +++ src/pstree.c 2010-05-18 07:20:57.583839746 -0700
3 @@ -37,6 +37,10 @@
4 #include <term.h>
5 #include <termios.h>
6 #include <langinfo.h>
7 +#ifdef __FreeBSD__
8 +#include <locale.h>
9 +#include <limits.h>
10 +#endif
11 #include <assert.h>
12 #include <sys/types.h>
13 #include <sys/stat.h>
14 @@ -590,7 +594,11 @@
15 struct dirent *de;
16 FILE *file;
17 struct stat st;
18 +#ifdef __FreeBSD__
19 + char *path, comm[COMM_LEN + 1];
20 +#else
21 char *path, *comm;
22 +#endif
23 char *buffer;
24 size_t buffer_size;
25 char readbuf[BUFSIZ + 1];
26 @@ -623,7 +631,11 @@
27 if ((pid = (pid_t) atoi(de->d_name)) != 0) {
28 if (! (path = malloc(strlen(PROC_BASE) + strlen(de->d_name) + 10)))
29 exit(2);
30 +#ifdef __FreeBSD__
31 + sprintf(path, "%s/%d/status", PROC_BASE, pid);
32 +#else
33 sprintf(path, "%s/%d/stat", PROC_BASE, pid);
34 +#endif
35 if ((file = fopen(path, "r")) != NULL) {
36 empty = 0;
37 sprintf(path, "%s/%d", PROC_BASE, pid);
38 @@ -638,6 +650,29 @@
39 perror(path);
40 exit(1);
41 }
42 +#ifdef __FreeBSD__
43 + /* Read comm and ppid */
44 + if (fscanf(file, "%s %*d %d", readbuf, &ppid) == 2) {
45 + tmpptr = readbuf;
46 + size = 0;
47 + /* Unescape comm */
48 + do {
49 + if (*tmpptr == '\\')
50 + {
51 + char tmp = tmpptr[4];
52 + tmpptr[4] = 0;
53 + comm[size++] = strtol(++tmpptr, NULL, 8);
54 + tmpptr += 2;
55 + tmpptr[1] = tmp;
56 + }
57 + else
58 + comm[size++] = *tmpptr;
59 + } while (*++tmpptr);
60 + comm[size] = 0;
61 + /* Balance braces */
62 + {
63 + {
64 +#else
65 size = fread(readbuf, 1, BUFSIZ, file);
66 if (ferror(file) == 0) {
67 readbuf[size] = 0;
68 @@ -692,6 +727,7 @@
69 (void) closedir(taskdir);
70 }
71 free(taskpath);
72 +#endif /*__FreeBSD__*/
73 if (!print_args)
74 #ifdef WITH_SELINUX
75 add_proc(comm, pid, ppid, st.st_uid, NULL, 0, 0, scontext);
76 @@ -860,6 +896,10 @@
77 * command-line options, if given.
78 */
79
80 +#ifdef __FreeBSD__
81 + /* Actually set the locale because nl_langinfo won't do it. */
82 + setlocale(LC_CTYPE, "");
83 +#endif
84 if (isatty(1) && !strcmp(nl_langinfo(CODESET), "UTF-8")) {
85 /* Use UTF-8 symbols if the locale's character set is UTF-8. */
86 sym = &sym_utf;

Properties

Name Value
svn:mime-type text/x-diff