Print this page
OS-3280 need a way to specify the root of a native system in the lx brand
OS-3279 lx brand should allow delegated datasets
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

*** 19,36 **** * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ /* * ptree -- print family tree of processes */ - #pragma ident "%Z%%M% %I% %E% SMI" - #include <assert.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h> --- 19,35 ---- * CDDL HEADER END */ /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. + * Copyright (c) 2014, Joyent, Inc. All rights reserved. */ /* * ptree -- print family tree of processes */ #include <assert.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <fcntl.h>
*** 46,55 **** --- 45,55 ---- #include <libcontract.h> #include <sys/contract.h> #include <sys/ctfs.h> #include <libcontract_priv.h> #include <sys/stat.h> + #include "ptools_common.h" #define FAKEDPID0(p) (p->pid == 0 && p->psargs[0] == '\0') typedef struct ps { int done;
*** 101,114 **** int errflg = 0; struct winsize winsize; char *s; int n; int retc = 0; DIR *dirp; struct dirent *dentp; ! char pname[100]; int pdlen; ps_t *p; if ((command = strrchr(argv[0], '/')) == NULL) --- 101,115 ---- int errflg = 0; struct winsize winsize; char *s; int n; int retc = 0; + char ppath[PATH_MAX]; DIR *dirp; struct dirent *dentp; ! char pname[PATH_MAX]; int pdlen; ps_t *p; if ((command = strrchr(argv[0], '/')) == NULL)
*** 167,186 **** nps = 0; psize = 0; ps = NULL; /* * Search the /proc directory for all processes. */ ! if ((dirp = opendir("/proc")) == NULL) { ! (void) fprintf(stderr, "%s: cannot open /proc directory\n", ! command); return (1); } ! (void) strcpy(pname, "/proc"); pdlen = strlen(pname); pname[pdlen++] = '/'; /* for each active process --- */ while (dentp = readdir(dirp)) { --- 168,189 ---- nps = 0; psize = 0; ps = NULL; + (void) proc_snprintf(ppath, sizeof (ppath), "/proc"); + /* * Search the /proc directory for all processes. */ ! if ((dirp = opendir(ppath)) == NULL) { ! (void) fprintf(stderr, "%s: cannot open %s directory\n", ! command, ppath); return (1); } ! (void) strcpy(pname, ppath); pdlen = strlen(pname); pname[pdlen++] = '/'; /* for each active process --- */ while (dentp = readdir(dirp)) {