summaryrefslogtreecommitdiff
path: root/usr/src/cmd
diff options
context:
space:
mode:
authorDan McDonald <danmcd@joyent.com>2020-09-22 10:39:49 -0400
committerDan McDonald <danmcd@joyent.com>2020-09-22 10:39:49 -0400
commit267e12a7d9bf6e5fcefb9cc00f46bfff0dc5226e (patch)
tree19a3941920d0039c35d53a5cbee189b5ca51995a /usr/src/cmd
parent517abc5c668925e6092495bf332233c3599980d2 (diff)
parente9faba760cdf80d7dfa110fe0830917ab94668c2 (diff)
downloadillumos-joyent-vpc.tar.gz
Merge branch 'master' into vpcvpc
Diffstat (limited to 'usr/src/cmd')
-rw-r--r--usr/src/cmd/bhyve/bhyverun.c5
-rw-r--r--usr/src/cmd/bhyvectl/bhyvectl.c41
-rw-r--r--usr/src/cmd/cron/crontab.c42
-rw-r--r--usr/src/cmd/dtrace/test/cmd/jdtrace/Makefile4
-rw-r--r--usr/src/cmd/dtrace/test/tst/common/java_api/Makefile4
-rw-r--r--usr/src/cmd/grep/grep.c516
-rw-r--r--usr/src/cmd/idmap/idmapd/krb5_lookup.c10
-rw-r--r--usr/src/cmd/idmap/idmapd/mapfile-intf2
-rw-r--r--usr/src/cmd/mdb/intel/amd64/Makefile2
-rw-r--r--usr/src/cmd/mdb/intel/amd64/libsmbios/Makefile27
-rw-r--r--usr/src/cmd/mdb/intel/ia32/Makefile2
-rw-r--r--usr/src/cmd/mdb/intel/ia32/libsmbios/Makefile26
-rw-r--r--usr/src/cmd/mdb/intel/modules/smbios/smbios.c2
-rw-r--r--usr/src/cmd/nsadmin/system6
-rw-r--r--usr/src/cmd/picl/plugins/sun4u/lib/fruaccess/fru_access.c18
-rw-r--r--usr/src/cmd/pools/poold/Makefile25
-rw-r--r--usr/src/cmd/pools/poold/libjkstat/Makefile20
-rw-r--r--usr/src/cmd/pools/poold/libjkstat/i386/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjkstat/jkstat.h96
-rw-r--r--usr/src/cmd/pools/poold/libjkstat/sparc/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjlgrp/Makefile20
-rw-r--r--usr/src/cmd/pools/poold/libjlgrp/i386/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjlgrp/jlgrp.h76
-rw-r--r--usr/src/cmd/pools/poold/libjlgrp/sparc/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjpool/Makefile22
-rw-r--r--usr/src/cmd/pools/poold/libjpool/i386/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjpool/jpool.h840
-rw-r--r--usr/src/cmd/pools/poold/libjpool/sparc/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjsyslog/Makefile19
-rw-r--r--usr/src/cmd/pools/poold/libjsyslog/i386/Makefile30
-rw-r--r--usr/src/cmd/pools/poold/libjsyslog/jsyslog.h39
-rw-r--r--usr/src/cmd/pools/poold/libjsyslog/sparc/Makefile30
-rw-r--r--usr/src/cmd/print/printmgr/com/sun/admin/pm/server/Makefile20
-rw-r--r--usr/src/cmd/print/printmgr/com/sun/admin/pm/server/com_sun_admin_pm_server_DoPrinterNS.h53
-rw-r--r--usr/src/cmd/prtvtoc/Makefile6
-rw-r--r--usr/src/cmd/prtvtoc/prtvtoc.c515
-rw-r--r--usr/src/cmd/ptools/pargs/pargs.c1
-rw-r--r--usr/src/cmd/sed/main.c27
-rw-r--r--usr/src/cmd/smbios/smbios.c22
-rw-r--r--usr/src/cmd/smbsrv/smbd/smbd_krb5lookup.c10
40 files changed, 1923 insertions, 835 deletions
diff --git a/usr/src/cmd/bhyve/bhyverun.c b/usr/src/cmd/bhyve/bhyverun.c
index bb3e0721c8..c4ebef1b31 100644
--- a/usr/src/cmd/bhyve/bhyverun.c
+++ b/usr/src/cmd/bhyve/bhyverun.c
@@ -741,7 +741,12 @@ vmexit_spinup_ap(struct vmctx *ctx, struct vm_exit *vme, int *pvcpu)
return (VMEXIT_CONTINUE);
}
+#ifdef __FreeBSD__
#define DEBUG_EPT_MISCONFIG
+#else
+/* EPT misconfig debugging not possible now that raw VMCS access is gone */
+#endif
+
#ifdef DEBUG_EPT_MISCONFIG
#define VMCS_GUEST_PHYSICAL_ADDRESS 0x00002400
diff --git a/usr/src/cmd/bhyvectl/bhyvectl.c b/usr/src/cmd/bhyvectl/bhyvectl.c
index 22c72cf5df..7f8847b184 100644
--- a/usr/src/cmd/bhyvectl/bhyvectl.c
+++ b/usr/src/cmd/bhyvectl/bhyvectl.c
@@ -400,6 +400,7 @@ dump_vm_run_exitcode(struct vm_exit *vmexit, int vcpu)
#define MSR_AMD7TH_START 0xC0010000
#define MSR_AMD7TH_END 0xC0011FFF
+#ifdef __FreeBSD__
static const char *
msr_name(uint32_t msr)
{
@@ -563,8 +564,24 @@ vm_set_vmcs_field(struct vmctx *ctx, int vcpu, int field, uint64_t val)
return (vm_set_register(ctx, vcpu, VMCS_IDENT(field), val));
}
+#else /* __FreeBSD__ */
+/* VMCS does not allow arbitrary reads/writes */
+static int
+vm_get_vmcs_field(struct vmctx *ctx, int vcpu, int field, uint64_t *ret_val)
+{
+ *ret_val = 0;
+ return (0);
+}
static int
+vm_set_vmcs_field(struct vmctx *ctx, int vcpu, int field, uint64_t val)
+{
+ return (EINVAL);
+}
+#endif /* __FreeBSD__ */
+
+#ifdef __FreeBSD__
+static int
vm_get_vmcb_field(struct vmctx *ctx, int vcpu, int off, int bytes,
uint64_t *ret_val)
{
@@ -579,6 +596,23 @@ vm_set_vmcb_field(struct vmctx *ctx, int vcpu, int off, int bytes,
return (vm_set_register(ctx, vcpu, VMCB_ACCESS(off, bytes), val));
}
+#else /* __FreeBSD__ */
+/* Arbitrary VMCB read/write is not allowed */
+static int
+vm_get_vmcb_field(struct vmctx *ctx, int vcpu, int off, int bytes,
+ uint64_t *ret_val)
+{
+ *ret_val = 0;
+ return (0);
+}
+
+static int
+vm_set_vmcb_field(struct vmctx *ctx, int vcpu, int off, int bytes,
+ uint64_t val)
+{
+ return (EINVAL);
+}
+#endif /* __FreeBSD__ */
enum {
VMNAME = 1000, /* avoid collision with return values from getopt */
@@ -2182,8 +2216,15 @@ main(int argc, char *argv[])
&addr);
}
+#ifdef __FreeBSD__
if (error == 0)
error = dump_msr_bitmap(vcpu, addr, cpu_intel);
+#else
+ /*
+ * Skip dumping the MSR bitmap since raw access to the VMCS is
+ * currently not possible.
+ */
+#endif /* __FreeBSD__ */
}
if (!error && (get_vpid_asid || get_all)) {
diff --git a/usr/src/cmd/cron/crontab.c b/usr/src/cmd/cron/crontab.c
index 2d9eea8755..18716bc8c2 100644
--- a/usr/src/cmd/cron/crontab.c
+++ b/usr/src/cmd/cron/crontab.c
@@ -26,7 +26,7 @@
/* All Rights Reserved */
/*
- * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
+ * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
*/
#include <sys/types.h>
@@ -72,10 +72,9 @@
#define WARNSHELL "warning: commands will be executed using /usr/bin/sh\n"
#define BADUSAGE \
"usage:\n" \
- "\tcrontab [file]\n" \
- "\tcrontab -e [username]\n" \
- "\tcrontab -l [-g] [username]\n" \
- "\tcrontab -r [username]"
+ "\tcrontab [-u username] [file]\n" \
+ "\tcrontab [-u username] { -e | -g | -l | -r }\n" \
+ "\tcrontab { -e | -g | -l | -r } [username]"
#define INVALIDUSER "you are not a valid user (no entry in /etc/passwd)."
#define NOTALLOWED "you are not authorized to use cron. Sorry."
#define NOTROOT \
@@ -137,6 +136,7 @@ main(int argc, char **argv)
int stat_loc;
int ret;
char real_login[UNAMESIZE];
+ char *user = NULL;
int tmpfd = -1;
pam_handle_t *pamh;
int pam_error;
@@ -145,7 +145,7 @@ main(int argc, char **argv)
(void) setlocale(LC_ALL, "");
#if !defined(TEXT_DOMAIN) /* Should be defined by cc -D */
-#define TEXT_DOMAIN "SYS_TEST" /* Use this only if it weren't */
+#define TEXT_DOMAIN "SYS_TEST" /* Use this only if it wasn't */
#endif
(void) textdomain(TEXT_DOMAIN);
@@ -155,7 +155,7 @@ main(int argc, char **argv)
exit(1);
}
- while ((c = getopt(argc, argv, "eglr")) != EOF)
+ while ((c = getopt(argc, argv, "eglru:")) != EOF) {
switch (c) {
case 'e':
eflag++;
@@ -169,10 +169,17 @@ main(int argc, char **argv)
case 'r':
rflag++;
break;
+ case 'u':
+ user = optarg;
+ break;
case '?':
errflg++;
break;
}
+ }
+
+ argc -= optind;
+ argv += optind;
if (eflag + lflag + rflag > 1)
errflg++;
@@ -180,8 +187,13 @@ main(int argc, char **argv)
if (gflag && !lflag)
errflg++;
- argc -= optind;
- argv += optind;
+ if ((eflag || lflag || rflag) && argc > 0) {
+ if (user != NULL)
+ errflg++;
+ else
+ user = *argv;
+ }
+
if (errflg || argc > 1)
crabort(BADUSAGE);
@@ -190,11 +202,12 @@ main(int argc, char **argv)
crabort(INVALIDUSER);
if (strlcpy(real_login, pwp->pw_name, sizeof (real_login))
- >= sizeof (real_login))
+ >= sizeof (real_login)) {
crabort(NAMETOOLONG);
+ }
- if ((eflag || lflag || rflag) && argc == 1) {
- if ((pwp = getpwnam(*argv)) == NULL)
+ if (user != NULL) {
+ if ((pwp = getpwnam(user)) == NULL)
crabort(INVALIDUSER);
if (!cron_admin(real_login)) {
@@ -202,8 +215,9 @@ main(int argc, char **argv)
crabort(NOTROOT);
else
pp = getuser(ruid);
- } else
- pp = *argv++;
+ } else {
+ pp = user;
+ }
} else {
pp = getuser(ruid);
}
diff --git a/usr/src/cmd/dtrace/test/cmd/jdtrace/Makefile b/usr/src/cmd/dtrace/test/cmd/jdtrace/Makefile
index ee93b7a258..a71f59e549 100644
--- a/usr/src/cmd/dtrace/test/cmd/jdtrace/Makefile
+++ b/usr/src/cmd/dtrace/test/cmd/jdtrace/Makefile
@@ -66,8 +66,6 @@ clobber: clean
-$(RM) $(JDTRACE_JAR)
-$(RM) $(PROG)
-lint:
-
install: all $(PROTO_JDTRACE_JAR) $(CMD) $(XLIST)
$(PROG): $(SRCS)
@@ -75,7 +73,7 @@ $(PROG): $(SRCS)
$(POST_PROCESS) ; $(STRIP_STABS)
JFLAGS= -g -cp $(CLASSPATH) -d $(CLASSDIR)
-JFLAGS += -source 1.5 -target 1.6 -Xlint:all,-options,-path
+JFLAGS += -source 7 -target 7 -Xlint:all,-options,-path
COMPILE.java=$(JAVAC) $(JFLAGS)
JAVASRC= JDTrace.java Getopt.java
diff --git a/usr/src/cmd/dtrace/test/tst/common/java_api/Makefile b/usr/src/cmd/dtrace/test/tst/common/java_api/Makefile
index 04e6cca7b4..f8f6131c44 100644
--- a/usr/src/cmd/dtrace/test/tst/common/java_api/Makefile
+++ b/usr/src/cmd/dtrace/test/tst/common/java_api/Makefile
@@ -55,12 +55,10 @@ clobber: clean
all: default
-lint:
-
install: all $(PROTO_TEST_JAR)
JFLAGS= -g -cp $(CLASSPATH) -d $(CLASSDIR)
-JFLAGS += -source 1.5 -target 1.6 -Xlint:all,-options,-rawtypes,-path
+JFLAGS += -source 7 -target 7 -Xlint:all,-deprecation,-options,-rawtypes,-path
COMPILE.java=$(JAVAC) $(JFLAGS)
$(TEST_JAR): $(SRCDIR)/*.java
diff --git a/usr/src/cmd/grep/grep.c b/usr/src/cmd/grep/grep.c
index ac51023678..6becff5a58 100644
--- a/usr/src/cmd/grep/grep.c
+++ b/usr/src/cmd/grep/grep.c
@@ -39,6 +39,7 @@
* Copyright 2018 RackTop Systems.
* Copyright 2018 Nexenta Systems, Inc.
* Copyright 2013 Damian Bogel. All rights reserved.
+ * Copyright 2020 Oxide Computer Company
*/
#include <string.h>
@@ -58,6 +59,7 @@
#include <wctype.h>
#include <ftw.h>
#include <sys/param.h>
+#include <getopt.h>
#define STDIN_FILENAME gettext("(standard input)")
@@ -76,7 +78,6 @@ static int bmgtab[M_CSETSIZE]; /* BMG delta1 table */
typedef struct _PATTERN {
char *pattern; /* original pattern */
- wchar_t *wpattern; /* wide, lowercased pattern */
struct _PATTERN *next;
regex_t re; /* compiled pattern */
} PATTERN;
@@ -94,6 +95,7 @@ static uchar_t iflag; /* Case insensitve matching */
static uchar_t Hflag; /* Precede lines by file name */
static uchar_t hflag; /* Suppress printing of filename */
static uchar_t lflag; /* Print file names of matches */
+static uchar_t Lflag; /* Print file names of non-matches */
static uchar_t nflag; /* Precede lines by line number */
static uchar_t rflag; /* Search directories recursively */
static uchar_t bflag; /* Precede matches by block number */
@@ -106,14 +108,15 @@ static uchar_t Fflag; /* Fgrep or -F flag */
static uchar_t Rflag; /* Like rflag, but follow symlinks */
static uchar_t outfn; /* Put out file name */
static uchar_t conflag; /* show context of matches */
+static uchar_t oflag; /* Print only matching output */
static char *cmdname;
+static char *stdin_label; /* Optional lable for stdin */
-static int use_wchar, use_bmg, mblocale;
+static int use_bmg, mblocale;
-static size_t outbuflen, prntbuflen, conbuflen;
+static size_t prntbuflen, conbuflen;
static unsigned long conalen, conblen, conmatches;
static char *prntbuf, *conbuf;
-static wchar_t *outline;
static void addfile(const char *fn);
static void addpattern(char *s);
@@ -127,6 +130,20 @@ static void process_path(const char *);
static void process_file(const char *, int);
/*
+ * These are values that we use to return from getopt_long. They start at
+ * SHRT_MAX to avoid any possible conflict with the normal options. These are
+ * used for long options that have no short option equivalent.
+ */
+enum grep_opts {
+ OPT_LABEL = SHRT_MAX + 1
+};
+
+static struct option grep_options[] = {
+ { "label", required_argument, NULL, OPT_LABEL },
+ { NULL }
+};
+
+/*
* mainline for grep
*/
int
@@ -166,6 +183,7 @@ main(int argc, char **argv)
} else {
if (*ap == 'f' || *ap == 'F') {
fgrep++;
+ regflags |= REG_NOSPEC;
}
}
@@ -201,7 +219,8 @@ main(int argc, char **argv)
}
}
- while ((c = getopt(argc, argv, "vwchHilnrbse:f:qxEFIRA:B:C:")) != EOF) {
+ while ((c = getopt_long(argc, argv, "+vwchHilLnrbse:f:qxEFIRA:B:C:o",
+ grep_options, NULL)) != EOF) {
unsigned long tval;
switch (c) {
case 'v': /* POSIX: negate matches */
@@ -217,8 +236,17 @@ main(int argc, char **argv)
regflags |= REG_ICASE;
break;
+ /*
+ * The last of -l and -L are honored.
+ */
case 'l': /* POSIX: Write filenames only */
lflag++;
+ Lflag = 0;
+ break;
+
+ case 'L': /* Write non-matching filenames */
+ Lflag++;
+ lflag = 0;
break;
case 'n': /* POSIX: Write line numbers */
@@ -294,6 +322,7 @@ main(int argc, char **argv)
case 'F': /* POSIX: strings, not RE's */
Fflag++;
+ regflags |= REG_NOSPEC;
break;
case 'R': /* Solaris: like rflag, but follow symlinks */
@@ -352,6 +381,14 @@ main(int argc, char **argv)
}
break;
+ case OPT_LABEL:
+ stdin_label = optarg;
+ break;
+
+ case 'o':
+ oflag++;
+ break;
+
default:
usage();
}
@@ -399,18 +436,46 @@ main(int argc, char **argv)
usage();
/*
- * -l overrides -H like in GNU grep
+ * -l or -L overrides -H like in GNU grep. It also overrides -o.
*/
- if (lflag)
+ if (lflag || Lflag) {
Hflag = 0;
+ oflag = 0;
+ }
/*
* -c, -l and -q flags are mutually exclusive
* We have -c override -l like in Solaris.
* -q overrides -l & -c programmatically in grep() function.
+ * -c overrides -o in GNU grep, we honor that.
*/
- if (cflag && lflag)
+ if (cflag) {
lflag = 0;
+ Lflag = 0;
+ oflag = 0;
+ }
+
+ /*
+ * If -o is set then we ignore all context related options, like other
+ * greps.
+ */
+ if (oflag) {
+ conflag = 0;
+ }
+
+ /*
+ * These flags are a semantic mess with no clear answers as to their
+ * behvaior. Based on some experimentation GNU grep will exit zero if a
+ * non-match is present, but never print anything. BSD grep seems to
+ * exit 1 and not print anything, even if there would have been a match.
+ * Also, you probably don't want to ask about what happens with grep -x
+ * -o -v, some implementations seem to just ignore -v.
+ */
+ if (oflag && !nvflag) {
+ (void) fprintf(stderr, gettext("%s: the combination of -v and "
+ "-o is not supported currently\n"), argv[0]);
+ exit(2);
+ }
argv += optind - 1;
argc -= optind - 1;
@@ -443,21 +508,17 @@ main(int argc, char **argv)
}
/*
- * If -x flag is not specified or -i flag is specified
- * with fgrep in a multibyte locale, need to use
- * the wide character APIs. Otherwise, byte-oriented
- * process will be done.
- */
- use_wchar = Fflag && mblocale && (!xflag || iflag);
-
- /*
* Compile Patterns and also decide if BMG can be used
*/
fixpatterns();
+ if (stdin_label == NULL) {
+ stdin_label = STDIN_FILENAME;
+ }
+
/* Process all files: stdin, or rest of arg list */
if (argc < 2) {
- matched = grep(0, STDIN_FILENAME);
+ matched = grep(0, stdin_label);
} else {
if (Hflag || (argc > 2 && hflag == 0))
outfn = 1; /* Print filename on match line */
@@ -695,6 +756,51 @@ addpattern(char *s)
}
/*
+ * Check if a given grep pattern that is being used with egrep or grep can be
+ * considered 'simple'. That is there are no characters that would be treated
+ * differently from fgrep. In this particular case, we're a little bit
+ * conservative and look for characters that are:
+ *
+ * o 7-bit ASCII
+ * o Letters
+ * o Numbers
+ * o Meta-characters not used in BREs/EREs: !, @, #, /, -, _, <, >, =
+ *
+ * This can certianly be made more complex and less restrictive with additional
+ * testing.
+ */
+static boolean_t
+simple_pattern(const char *str)
+{
+ for (; *str != '\0'; str++) {
+ if (!isascii(*str)) {
+ return (B_FALSE);
+ }
+
+ if (isalnum(*str)) {
+ continue;
+ }
+
+ switch (*str) {
+ case '!':
+ case '@':
+ case '#':
+ case '/':
+ case '-':
+ case '_':
+ case '<':
+ case '>':
+ case '=':
+ continue;
+ default:
+ return (B_FALSE);
+ }
+ }
+
+ return (B_TRUE);
+}
+
+/*
* Fix patterns.
* Must do after all arguments read, in case later -i option.
*/
@@ -702,15 +808,38 @@ static void
fixpatterns(void)
{
PATTERN *pp;
- int rv, fix_pattern, npatterns;
+ int rv, fix_pattern;
+
+ /*
+ * Decide if we are able to run the Boyer-Moore-Gosper algorithm.
+ * Use the Boyer-Moore-Gosper algorithm if:
+ * - fgrep or non-BRE/ERE (Fflag || simple_pattern())
+ * - singlebyte locale (!mblocale)
+ * - no ignoring case (!iflag)
+ * - no printing line numbers (!nflag)
+ * - no negating the output (nvflag)
+ * - only one pattern (patterns != NULL && patterns->next ==
+ * NULL)
+ * - non zero length pattern (strlen(patterns->pattern) != 0)
+ * - no context required (conflag == 0)
+ * - no exact matches (!oflag)
+ * - no word matches (!wlag)
+ */
+ use_bmg = !mblocale && !iflag && !nflag && nvflag && !oflag &&
+ (patterns != NULL && patterns->next == NULL) && !wflag &&
+ (strlen(patterns->pattern) != 0) && conflag == 0 &&
+ (Fflag || simple_pattern(patterns->pattern));
+
+ if (use_bmg) {
+ return;
+ }
/*
* Fix the specified pattern if -x is specified.
*/
fix_pattern = !Fflag && xflag;
- for (npatterns = 0, pp = patterns; pp != NULL; pp = pp->next) {
- npatterns++;
+ for (pp = patterns; pp != NULL; pp = pp->next) {
if (fix_pattern) {
char *cp, *cq;
size_t plen, nplen;
@@ -733,61 +862,9 @@ fixpatterns(void)
pp->pattern = cp;
}
- if (Fflag) {
- if (use_wchar) {
- /*
- * Fflag && mblocale && iflag
- * Fflag && mblocale && !xflag
- */
- size_t n;
- n = strlen(pp->pattern) + 1;
- if ((pp->wpattern =
- malloc(sizeof (wchar_t) * n)) == NULL) {
- (void) fprintf(stderr,
- gettext("%s: out of memory\n"),
- cmdname);
- exit(2);
- }
- if (mbstowcs(pp->wpattern, pp->pattern, n) ==
- (size_t)-1) {
- (void) fprintf(stderr,
- gettext("%s: failed to convert "
- "\"%s\" to wide-characters\n"),
- cmdname, pp->pattern);
- exit(2);
- }
- if (iflag) {
- wchar_t *wp;
- for (wp = pp->wpattern; *wp != L'\0';
- wp++) {
- *wp = towlower((wint_t)*wp);
- }
- }
- free(pp->pattern);
- } else {
- /*
- * Fflag && mblocale && !iflag
- * Fflag && !mblocale && iflag
- * Fflag && !mblocale && !iflag
- */
- if (iflag) {
- unsigned char *cp;
- for (cp = (unsigned char *)pp->pattern;
- *cp != '\0'; cp++) {
- *cp = tolower(*cp);
- }
- }
- }
- /*
- * fgrep: No regular expressions.
- */
- continue;
- }
-
/*
- * For non-fgrep, compile the regular expression,
- * give an informative error message, and exit if
- * it didn't compile.
+ * Compile the regular expression, give an informative error
+ * message, and exit if it didn't compile.
*/
if ((rv = regcomp(&pp->re, pp->pattern, regflags)) != 0) {
(void) regerror(rv, &pp->re, errstr, sizeof (errstr));
@@ -798,25 +875,6 @@ fixpatterns(void)
}
free(pp->pattern);
}
-
- /*
- * Decide if we are able to run the Boyer-Moore-Gosper algorithm.
- * Use the Boyer-Moore-Gosper algorithm if:
- * - fgrep (Fflag)
- * - singlebyte locale (!mblocale)
- * - no ignoring case (!iflag)
- * - no printing line numbers (!nflag)
- * - no negating the output (nvflag)
- * - only one pattern (npatterns == 1)
- * - non zero length pattern (strlen(patterns->pattern) != 0)
- * - no context required (conflag == 0)
- *
- * It's guaranteed patterns->pattern is still alive
- * when Fflag && !mblocale.
- */
- use_bmg = Fflag && !mblocale && !iflag && !nflag && nvflag &&
- (npatterns == 1) && (strlen(patterns->pattern) != 0) &&
- conflag == 0;
}
/*
@@ -849,36 +907,6 @@ rfind_nl(const char *ptr, size_t len)
}
/*
- * Duplicate the specified string converting each character
- * into a lower case.
- */
-static char *
-istrdup(const char *s1)
-{
- static size_t ibuflen = 0;
- static char *ibuf = NULL;
- size_t slen;
- char *p;
-
- slen = strlen(s1);
- if (slen >= ibuflen) {
- /* ibuf does not fit to s1 */
- ibuflen = slen + 1;
- ibuf = realloc(ibuf, ibuflen);
- if (ibuf == NULL) {
- (void) fprintf(stderr,
- gettext("%s: out of memory\n"), cmdname);
- exit(2);
- }
- }
- p = ibuf;
- do {
- *p++ = tolower(*s1);
- } while (*s1++ != '\0');
- return (ibuf);
-}
-
-/*
* Do grep on a single file.
* Return true in any lines matched.
*
@@ -909,6 +937,7 @@ grep(int fd, const char *fn)
int conaprnt = 0, conbprnt = 0, lastmatch = 0;
boolean_t nearmatch; /* w/in N+1 of last match */
boolean_t havematch = B_FALSE; /* have a match in context */
+ boolean_t sameline = B_FALSE; /* Are we still on the same line? */
size_t prntlen;
if (patterns == NULL)
@@ -920,16 +949,6 @@ grep(int fd, const char *fn)
bmgcomp(pp->pattern, strlen(pp->pattern));
}
- if (use_wchar && outline == NULL) {
- outbuflen = BUFSIZE + 1;
- outline = malloc(sizeof (wchar_t) * outbuflen);
- if (outline == NULL) {
- (void) fprintf(stderr, gettext("%s: out of memory\n"),
- cmdname);
- exit(2);
- }
- }
-
if (prntbuf == NULL) {
prntbuflen = BUFSIZE;
if ((prntbuf = malloc(prntbuflen + 1)) == NULL) {
@@ -958,6 +977,8 @@ grep(int fd, const char *fn)
long count;
off_t offset = 0;
char separate;
+ char *startmatch = NULL; /* -o, start of match */
+ char *postmatch = NULL; /* -o, character after match */
boolean_t last_ctx = B_FALSE, eof = B_FALSE;
if (data_len == 0) {
@@ -1129,7 +1150,18 @@ L_start_process:
}
goto L_next_line;
}
- lineno++;
+
+ /*
+ * When using -o, we might actually loop around while still on
+ * the same line. In such a case, we need to make sure we don't
+ * increment the line number.
+ */
+ if (!sameline) {
+ lineno++;
+ } else {
+ sameline = B_FALSE;
+ }
+
/*
* Line starts from ptr and ends at ptrend.
* line_len will be the length of the line.
@@ -1141,108 +1173,59 @@ L_start_process:
* From now, the process will be performed based
* on the line from ptr to ptrend.
*/
- if (use_wchar) {
- size_t len;
-
- if (line_len >= outbuflen) {
- outbuflen = line_len + 1;
- outline = realloc(outline,
- sizeof (wchar_t) * outbuflen);
- if (outline == NULL) {
- (void) fprintf(stderr,
- gettext("%s: out of memory\n"),
- cmdname);
- exit(2);
- }
- }
+ for (pp = patterns; pp; pp = pp->next) {
+ int rv;
+ regmatch_t rm;
+ size_t nmatch = 0;
- len = mbstowcs(outline, ptr, line_len);
- if (len == (size_t)-1) {
- (void) fprintf(stderr, gettext(
- "%s: input file \"%s\": line %lld: invalid multibyte character\n"),
- cmdname, fn, lineno);
- /* never match a line with invalid sequence */
- goto L_skip_line;
- }
- outline[len] = L'\0';
+ /*
+ * The current implementation of regexec has a higher
+ * cost when you ask for match information. As a result,
+ * we only ask for a match when we know that we need it
+ * specifically. This is always needed for -o because we
+ * rely on it to tell us what we matched. For fgrep -x
+ * we need it so we can determine whether we matched the
+ * entire line.
+ */
+ if (oflag || (Fflag && xflag))
+ nmatch = 1;
- if (iflag) {
- wchar_t *cp;
- for (cp = outline; *cp != '\0'; cp++) {
- *cp = towlower((wint_t)*cp);
+ rv = regexec(&pp->re, ptr, nmatch, &rm, 0);
+ if (rv == REG_OK) {
+ /*
+ * fgrep in this form cannot insert the
+ * metacharacters to verify whether or not we
+ * were the entire line. As a result, we check
+ * the pattern length against the line length.
+ */
+ if (Fflag && xflag &&
+ line_len != rm.rm_eo - rm.rm_so) {
+ continue;
}
- }
- if (xflag) {
- for (pp = patterns; pp; pp = pp->next) {
- if (outline[0] == pp->wpattern[0] &&
- wcscmp(outline,
- pp->wpattern) == 0) {
- /* matched */
- break;
- }
- }
- } else {
- for (pp = patterns; pp; pp = pp->next) {
- if (wcswcs(outline, pp->wpattern)
- != NULL) {
- /* matched */
- break;
- }
+ /* matched */
+ if (oflag) {
+ startmatch = ptr + rm.rm_so;
+ postmatch = ptr + rm.rm_eo;
}
+ break;
}
- } else if (Fflag) {
- /* fgrep in byte-oriented handling */
- char *fptr;
- if (iflag) {
- fptr = istrdup(ptr);
- } else {
- fptr = ptr;
- }
- if (xflag) {
- /* fgrep -x */
- for (pp = patterns; pp; pp = pp->next) {
- if (fptr[0] == pp->pattern[0] &&
- strcmp(fptr, pp->pattern) == 0) {
- /* matched */
- break;
- }
- }
- } else {
- for (pp = patterns; pp; pp = pp->next) {
- if (strstr(fptr, pp->pattern) != NULL) {
- /* matched */
- break;
- }
- }
- }
- } else {
- /* grep or egrep */
- for (pp = patterns; pp; pp = pp->next) {
- int rv;
-
- rv = regexec(&pp->re, ptr, 0, NULL, 0);
- if (rv == REG_OK) {
- /* matched */
- break;
- }
- switch (rv) {
- case REG_NOMATCH:
- break;
- case REG_ECHAR:
- (void) fprintf(stderr, gettext(
+ switch (rv) {
+ case REG_NOMATCH:
+ break;
+ case REG_ECHAR:
+ (void) fprintf(stderr, gettext(
"%s: input file \"%s\": line %lld: invalid multibyte character\n"),
- cmdname, fn, lineno);
- break;
- default:
- (void) regerror(rv, &pp->re, errstr,
- sizeof (errstr));
- (void) fprintf(stderr, gettext(
+ cmdname, fn, lineno);
+ break;
+ default:
+ (void) regerror(rv, &pp->re, errstr,
+ sizeof (errstr));
+ (void) fprintf(stderr, gettext(
"%s: input file \"%s\": line %lld: %s\n"),
- cmdname, fn, lineno, errstr);
- exit(2);
- }
+ cmdname, fn, lineno, errstr);
+ exit(2);
}
}
@@ -1368,8 +1351,21 @@ L_next_line:
*/
if (!last_ctx && nvflag == (pp != NULL)) {
matches++;
- if (!nextend)
- matchptr = (conflag != 0) ? conptrend : ptrend;
+ if (!nextend) {
+ if (conflag != 0) {
+ matchptr = conptrend;
+ } else if (oflag) {
+ matchptr = postmatch - 1;
+ } else {
+ matchptr = ptrend;
+ }
+ }
+ }
+
+ if (pp != NULL && oflag && postmatch == NULL) {
+ (void) fprintf(stderr, gettext("%s: internal error, "
+ "-o set, but failed to find postmatch\n"), cmdname);
+ abort();
}
/*
@@ -1396,10 +1392,17 @@ L_next_line:
(void) fwrite("--\n", 1, 3, stdout);
} else if (conflag == 0 && nvflag == (pp != NULL)) {
*ptrend = '\n';
+ if (oflag) {
+ prntptr = startmatch;
+ } else {
+ prntptr = ptr;
+ }
prntlen = line_len + 1;
- prntptr = ptr;
linenum = lineno;
blkoffset = line_offset;
+ if (oflag) {
+ blkoffset += startmatch - ptr;
+ }
} else if (eof) {
/* No match and no more data */
goto out;
@@ -1408,10 +1411,13 @@ L_next_line:
goto L_skip_line;
}
- prntptrend = prntptr - 1;
- while ((prntptrend = find_nl(prntptrend + 1,
+ if (oflag) {
+ prntptrend = postmatch - 1;
+ } else {
+ prntptrend = prntptr - 1;
+ }
+ while (oflag || (prntptrend = find_nl(prntptrend + 1,
prntlen)) != NULL) {
-
/*
* GNU grep uses '-' for context lines and ':' for
* matching lines, so replicate that here.
@@ -1446,6 +1452,9 @@ L_next_line:
(void) printf("%s\n", fn);
goto out;
}
+ if (Lflag) {
+ goto out;
+ }
if (!cflag) {
if (Hflag || outfn) {
(void) printf("%s%c", fn, separate);
@@ -1460,10 +1469,23 @@ L_next_line:
}
(void) fwrite(prntptr, 1,
prntptrend - prntptr + 1, stdout);
+
+ if (oflag) {
+ (void) fputc('\n', stdout);
+ }
}
if (ferror(stdout)) {
return (0);
}
+
+ /*
+ * With -o we'll only ever take this loop once. Manually
+ * break out.
+ */
+ if (oflag) {
+ goto L_skip_line;
+ }
+
linenum++;
prntlen -= prntptrend - prntptr + 1;
blkoffset += prntptrend - prntptr + 1;
@@ -1504,9 +1526,15 @@ L_skip_line:
if (!newlinep)
break;
+ if (oflag && postmatch != NULL) {
+ line_len = postmatch - 1 - ptr;
+ ptr = postmatch;
+ sameline = B_TRUE;
+ } else {
+ ptr = ptrend + 1;
+ }
data_len -= line_len + 1;
line_offset += line_len + 1;
- ptr = ptrend + 1;
}
out:
@@ -1518,6 +1546,20 @@ out:
(void) printf("%lld\n", matches);
}
}
+
+ /*
+ * -L tells us to print the filename only when it doesn't match. So we
+ * run through the normal operationa and then invert it.
+ */
+ if (Lflag) {
+ if (matches == 0) {
+ (void) printf("%s\n", fn);
+ matches = 1;
+ } else {
+ matches = 0;
+ }
+ }
+
return (matches != 0);
}
@@ -1530,9 +1572,9 @@ usage(void)
(void) fprintf(stderr, gettext("usage: %5s"), cmdname);
if (!egrep && !fgrep)
(void) fprintf(stderr, gettext(" [-E|-F]"));
- (void) fprintf(stderr, gettext(" [-bchHilnqrRsvx] [-A num] [-B num] "
- "[-C num|-num]\n [-e pattern_list]... "
- "[-f pattern_file]... [pattern_list] [file]...\n"));
+ (void) fprintf(stderr, gettext(" [-bchHilLnoqrRsvx] [-A num] [-B num] "
+ "[-C num|-num]\n [--label=name] [-e pattern_list]... "
+ "[-f pattern_file]...\n [pattern_list] [file]...\n"));
exit(2);
/* NOTREACHED */
}
diff --git a/usr/src/cmd/idmap/idmapd/krb5_lookup.c b/usr/src/cmd/idmap/idmapd/krb5_lookup.c
index a45fc5d8f3..bdd0d56759 100644
--- a/usr/src/cmd/idmap/idmapd/krb5_lookup.c
+++ b/usr/src/cmd/idmap/idmapd/krb5_lookup.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2020 Nexenta by DDN, Inc. All rights reserved.
*/
#include <stdio.h>
@@ -27,6 +27,8 @@
#include <synch.h>
#include <thread.h>
+#include <ads/dsgetdc.h>
+
#include "idmapd.h"
#include "libadutils.h"
#include "locate_plugin.h"
@@ -102,6 +104,12 @@ _krb5_override_service_locator(
goto out;
}
+ if ((ds->flags & DS_KDC_FLAG) == 0) {
+ idmapdlog(LOG_WARNING, "Domain Controller is not a KDC: "
+ "Kerberos auth may be slow");
+ goto out;
+ }
+
switch (family) {
case AF_UNSPEC:
break; /* OK */
diff --git a/usr/src/cmd/idmap/idmapd/mapfile-intf b/usr/src/cmd/idmap/idmapd/mapfile-intf
index 1ab5c033d7..d2f8c7cb04 100644
--- a/usr/src/cmd/idmap/idmapd/mapfile-intf
+++ b/usr/src/cmd/idmap/idmapd/mapfile-intf
@@ -21,6 +21,7 @@
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
+# Copyright 2019 Nexenta by DDN, Inc. All rights reserved.
#
#
@@ -43,4 +44,5 @@ $mapfile_version 2
SYMBOL_SCOPE {
global:
app_krb5_user_uid;
+ _krb5_override_service_locator;
};
diff --git a/usr/src/cmd/mdb/intel/amd64/Makefile b/usr/src/cmd/mdb/intel/amd64/Makefile
index 6ddc6b59d5..39d3574f15 100644
--- a/usr/src/cmd/mdb/intel/amd64/Makefile
+++ b/usr/src/cmd/mdb/intel/amd64/Makefile
@@ -27,7 +27,7 @@
include ../../Makefile.common
MODULES = $(COMMON_MODULES_PROC) $(COMMON_MODULES_KVM)
-MODULES += disk_label uhci
+MODULES += disk_label uhci libsmbios
SUBDIRS = mdb mdb_ks kmdb libstandctf libstand .WAIT $(MODULES)
diff --git a/usr/src/cmd/mdb/intel/amd64/libsmbios/Makefile b/usr/src/cmd/mdb/intel/amd64/libsmbios/Makefile
new file mode 100644
index 0000000000..a04ca7df17
--- /dev/null
+++ b/usr/src/cmd/mdb/intel/amd64/libsmbios/Makefile
@@ -0,0 +1,27 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2020 Oxide Computer Company
+#
+
+MODULE = libsmbios.so
+MDBTGT = proc
+
+MODSRCS = smbios.c
+
+include ../../../../Makefile.cmd
+include ../../../../Makefile.cmd.64
+include ../../Makefile.amd64
+include ../../../Makefile.module
+
+MODSRCS_DIR = ../../modules/smbios
+LDLIBS += -lsmbios
diff --git a/usr/src/cmd/mdb/intel/ia32/Makefile b/usr/src/cmd/mdb/intel/ia32/Makefile
index cb544a52d2..9d8f9efe87 100644
--- a/usr/src/cmd/mdb/intel/ia32/Makefile
+++ b/usr/src/cmd/mdb/intel/ia32/Makefile
@@ -28,7 +28,7 @@
include ../../Makefile.common
MODULES = $(COMMON_MODULES_PROC) $(COMMON_MODULES_PROC_32BIT)
-MODULES += disk_label
+MODULES += disk_label libsmbios
SUBDIRS = mdb .WAIT $(MODULES)
diff --git a/usr/src/cmd/mdb/intel/ia32/libsmbios/Makefile b/usr/src/cmd/mdb/intel/ia32/libsmbios/Makefile
new file mode 100644
index 0000000000..14491786c2
--- /dev/null
+++ b/usr/src/cmd/mdb/intel/ia32/libsmbios/Makefile
@@ -0,0 +1,26 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source. A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2020 Oxide Computer Company
+#
+
+MODULE = libsmbios.so
+MDBTGT = proc
+
+MODSRCS = smbios.c
+
+include ../../../../Makefile.cmd
+include ../../Makefile.ia32
+include ../../../Makefile.module
+
+MODSRCS_DIR = ../../modules/smbios
+LDLIBS += -lsmbios
diff --git a/usr/src/cmd/mdb/intel/modules/smbios/smbios.c b/usr/src/cmd/mdb/intel/modules/smbios/smbios.c
index 429a5fba0e..1b692d45b1 100644
--- a/usr/src/cmd/mdb/intel/modules/smbios/smbios.c
+++ b/usr/src/cmd/mdb/intel/modules/smbios/smbios.c
@@ -28,7 +28,7 @@
* _KERNEL. Therefore we have to manually declare an extern delaration for
* strerror().
*/
-extern const char *strerror(int);
+extern char *strerror(int);
/*
* Take an existing smbios_hdl_t from a dump and slurp out its memory so we can
diff --git a/usr/src/cmd/nsadmin/system b/usr/src/cmd/nsadmin/system
index 6216e0789b..8ab13b7d3f 100644
--- a/usr/src/cmd/nsadmin/system
+++ b/usr/src/cmd/nsadmin/system
@@ -138,12 +138,6 @@ set dump_plat_mincpu=0
set dump_bzip2_level=1
*
-* See OS-1361 for dealing with the timer woes.
-*
-set pcplusmp:apic_timer_preferred_mode=0
-set apix:apic_timer_preferred_mode=0
-
-*
* Want additional crash dump metrics
*
set dump_metrics_on=1
diff --git a/usr/src/cmd/picl/plugins/sun4u/lib/fruaccess/fru_access.c b/usr/src/cmd/picl/plugins/sun4u/lib/fruaccess/fru_access.c
index 1bb24230cd..82f7262de7 100644
--- a/usr/src/cmd/picl/plugins/sun4u/lib/fruaccess/fru_access.c
+++ b/usr/src/cmd/picl/plugins/sun4u/lib/fruaccess/fru_access.c
@@ -639,9 +639,9 @@ get_container_info(const char *def_file, const char *cont_desc_str,
token = tokenizer(buf, "#", &field, &matched);
/* find the names */
token = tokenizer(buf, ":", &field, &matched);
- if (token != 0x00) {
+ if (token != NULL) {
token = tokenizer(token, "|", &item, &matched);
- while (token != 0x00) {
+ while (token != NULL) {
if (strcmp(token, cont_desc_str) == 0) {
foundIt = 1;
goto found;
@@ -649,7 +649,7 @@ get_container_info(const char *def_file, const char *cont_desc_str,
token = tokenizer(item, "|", &item, &matched);
}
/* check the last remaining item */
- if ((item != 0x00) &&
+ if ((item != NULL) &&
(strcmp(item, cont_desc_str) == 0)) {
foundIt = 1;
goto found;
@@ -660,16 +660,16 @@ get_container_info(const char *def_file, const char *cont_desc_str,
found :
if (foundIt == 1) {
token = tokenizer(field, ":", &field, &matched);
- if (token == 0x00) {
+ if (token == NULL) {
(void) fclose(file);
return (-1);
}
cont_info->header_ver = (headerrev_t)atoi(token);
token = tokenizer(field, ":\n", &field, &matched);
- while (token != 0x00) {
+ while (token != NULL) {
token = tokenizer(token, ",", &item, &matched);
- if (token == 0x00) {
+ if (token == NULL) {
(void) fclose(file);
return (-1);
}
@@ -696,7 +696,7 @@ found :
}
token = tokenizer(item, ",", &item, &matched);
- if (token == 0x00) {
+ if (token == NULL) {
(void) fclose(file);
return (-1);
}
@@ -708,12 +708,12 @@ found :
* data interpreter
*/
token = tokenizer(item, ",", &item, &matched);
- if (token == 0x00) {
+ if (token == NULL) {
(void) fclose(file);
return (-1);
}
}
- if (item == '\0') {
+ if (*item == '\0') {
(void) fclose(file);
return (-1);
}
diff --git a/usr/src/cmd/pools/poold/Makefile b/usr/src/cmd/pools/poold/Makefile
index 757f882219..9dfb547196 100644
--- a/usr/src/cmd/pools/poold/Makefile
+++ b/usr/src/cmd/pools/poold/Makefile
@@ -23,6 +23,8 @@
# Use is subject to license terms.
#
# Copyright (c) 2018, Joyent, Inc.
+# Copyright 2020 Peter Tribble
+#
PROG = poold
OBJS = poold.o
@@ -32,7 +34,7 @@ MANIFEST= poold.xml
SVCMETHOD= svc-poold
include $(SRC)/cmd/Makefile.cmd
-$(BLD_JAVA_8)include $(SRC)/cmd/Makefile.cmd.64
+include $(SRC)/cmd/Makefile.cmd.64
JAVA_SUBDIRS = com/sun/solaris/service/exception \
com/sun/solaris/service/kstat \
@@ -53,18 +55,16 @@ all := TARGET = all
install := TARGET = install
clean := TARGET = clean
clobber := TARGET = clobber
-lint := TARGET = lint
msg := TARGET = msg
$(ROOTMANIFEST):= FILEMODE= 444
JARFILE = JPool.jar
-JAVA_LIB_PATH = $(JAVA_ROOT)/jre/lib/$(MACH)/client
-LIBPOOL_PATH = $(ROOTLIB)
-$(BLD_JAVA_8)JAVA_LIB_PATH = $(JAVA_ROOT)/jre/lib/$(MACH64)/server
-$(BLD_JAVA_8)LIBPOOL_PATH = $(ROOTLIB64)
+JAVA_LIB_PATH = $(JAVA_ROOT)/jre/lib/$(MACH64)/server
+$(BLD_JAVA_11)JAVA_LIB_PATH = $(JAVA_ROOT)/lib/server
+LIBPOOL_PATH = $(ROOTLIB64)
-# JAVA_SUBDIRS and PACKAGEDOCS must be synchronized to ensure
+# JAVA_SUBDIRS and PACKAGEDOCS must be synchronized to ensure
# javadoc documentation is generated for all packages.
PACKAGEDOCS = com.sun.solaris.service.exception \
@@ -83,10 +83,6 @@ LDLIBS += -lpool -L$(JAVA_LIB_PATH) -ljvm
# runpath should point to runtime JAVA_HOME
LDFLAGS += -R$(JAVA_LIB_PATH)
-LINTFLAGS += -erroff=E_NAME_USED_NOT_DEF2
-$(BLD_JAVA_8)LINTFLAGS64 += -erroff=E_NAME_USED_NOT_DEF2
-LINTLIBS += -L$(LIBPOOL_PATH) -lpool
-
# not linted
SMATCH=off
@@ -120,8 +116,6 @@ clobber : $(JAVA_SUBDIRS) $(SUBDIRS) clobber_local
clobber_local: clean_local
$(RM) $(CLOBBERFILES)
-lint: $(SUBDIRS)
-
msg: $(POFILES)
install: $(ROOTCMD) $(JAVA_SUBDIRS) $(JARFILE) \
@@ -147,7 +141,7 @@ $(SUBDIRS): FRC
doc: all
$(JAVADOC) -private -classpath $(JARFILE): -sourcepath . \
- -source 1.4 -d $(DOCDIR) $(PACKAGEDOCS)
+ -source 7 -d $(DOCDIR) $(PACKAGEDOCS)
$(PROG): $(OBJS)
$(LINK.c) -o $(PROG) $(OBJS) $(LDLIBS)
@@ -158,7 +152,4 @@ $(ROOTUSRLIBDRP)/%: %
FRC:
-lint:
- $(LINT.c) $(PROG).c $(LINTLIBS)
-
include $(SRC)/cmd/Makefile.targ
diff --git a/usr/src/cmd/pools/poold/libjkstat/Makefile b/usr/src/cmd/pools/poold/libjkstat/Makefile
index 810de1da26..117d8f73e7 100644
--- a/usr/src/cmd/pools/poold/libjkstat/Makefile
+++ b/usr/src/cmd/pools/poold/libjkstat/Makefile
@@ -22,34 +22,22 @@
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+# Copyright 2020 Peter Tribble
+#
include $(SRC)/lib/Makefile.lib
-SUBDIRS = $(MACH)
-$(BLD_JAVA_8)SUBDIRS = $(MACH64)
+SUBDIRS = $(MACH64)
all := TARGET = all
clean := TARGET = clean
clobber := TARGET = clobber
install := TARGET = install
-lint := TARGET = lint
-
-JNI_CLASSES = \
- com.sun.solaris.service.kstat.Kstat \
- com.sun.solaris.service.kstat.KstatCtl
-
-JNI_GENERATED_HEADERS = \
- jkstat.h
-CLEANFILES += $(JNI_GENERATED_HEADERS)
-
-all install lint: $(JNI_GENERATED_HEADERS) .WAIT $(SUBDIRS)
+all install: $(SUBDIRS)
clean clobber: $(SUBDIRS)
-$(JNI_GENERATED_HEADERS): $(SRC)/cmd/pools/poold/JPool.jar
- $(JAVAH) -classpath $? -o $@ $(JNI_CLASSES)
-
$(SUBDIRS): FRC
@cd $@; pwd; $(MAKE) $(TARGET)
diff --git a/usr/src/cmd/pools/poold/libjkstat/i386/Makefile b/usr/src/cmd/pools/poold/libjkstat/i386/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjkstat/i386/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjkstat/jkstat.h b/usr/src/cmd/pools/poold/libjkstat/jkstat.h
new file mode 100644
index 0000000000..c42acee6a1
--- /dev/null
+++ b/usr/src/cmd/pools/poold/libjkstat/jkstat.h
@@ -0,0 +1,96 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sun_solaris_service_kstat_Kstat */
+
+#ifndef _Included_com_sun_solaris_service_kstat_Kstat
+#define _Included_com_sun_solaris_service_kstat_Kstat
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_kstat_Kstat
+ * Method: getSnapTime
+ * Signature: ()Lcom/sun/solaris/service/pools/HRTime;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_kstat_Kstat_getSnapTime
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_kstat_Kstat
+ * Method: getCreationTime
+ * Signature: ()Lcom/sun/solaris/service/pools/HRTime;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_kstat_Kstat_getCreationTime
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_kstat_Kstat
+ * Method: getValue
+ * Signature: (Ljava/lang/String;)Ljava/lang/Object;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_kstat_Kstat_getValue
+ (JNIEnv *, jobject, jstring);
+
+/*
+ * Class: com_sun_solaris_service_kstat_Kstat
+ * Method: read
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_kstat_Kstat_read
+ (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* Header for class com_sun_solaris_service_kstat_KstatCtl */
+
+#ifndef _Included_com_sun_solaris_service_kstat_KstatCtl
+#define _Included_com_sun_solaris_service_kstat_KstatCtl
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_kstat_KstatCtl
+ * Method: open
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_kstat_KstatCtl_open
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_kstat_KstatCtl
+ * Method: close
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_kstat_KstatCtl_close
+ (JNIEnv *, jobject, jlong);
+
+/*
+ * Class: com_sun_solaris_service_kstat_KstatCtl
+ * Method: lookup
+ * Signature: (Ljava/lang/String;ILjava/lang/String;)Lcom/sun/solaris/service/kstat/Kstat;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_kstat_KstatCtl_lookup
+ (JNIEnv *, jobject, jstring, jint, jstring);
+
+/*
+ * Class: com_sun_solaris_service_kstat_KstatCtl
+ * Method: chainUpdate
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_kstat_KstatCtl_chainUpdate
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_kstat_KstatCtl
+ * Method: init
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_kstat_KstatCtl_init
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/usr/src/cmd/pools/poold/libjkstat/sparc/Makefile b/usr/src/cmd/pools/poold/libjkstat/sparc/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjkstat/sparc/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjlgrp/Makefile b/usr/src/cmd/pools/poold/libjlgrp/Makefile
index e8481498b8..117d8f73e7 100644
--- a/usr/src/cmd/pools/poold/libjlgrp/Makefile
+++ b/usr/src/cmd/pools/poold/libjlgrp/Makefile
@@ -22,34 +22,22 @@
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+# Copyright 2020 Peter Tribble
+#
include $(SRC)/lib/Makefile.lib
-SUBDIRS = $(MACH)
-$(BLD_JAVA_8)SUBDIRS = $(MACH64)
+SUBDIRS = $(MACH64)
all := TARGET = all
clean := TARGET = clean
clobber := TARGET = clobber
install := TARGET = install
-lint := TARGET = lint
-
-JNI_CLASSES = \
- com.sun.solaris.service.locality.LocalityDomain \
- com.sun.solaris.service.locality.LocalityGroup
-
-JNI_GENERATED_HEADERS = \
- jlgrp.h
-CLEANFILES += $(JNI_GENERATED_HEADERS)
-
-all install lint: $(JNI_GENERATED_HEADERS) .WAIT $(SUBDIRS)
+all install: $(SUBDIRS)
clean clobber: $(SUBDIRS)
-$(JNI_GENERATED_HEADERS): $(SRC)/cmd/pools/poold/JPool.jar
- $(JAVAH) -classpath $? -o $@ $(JNI_CLASSES)
-
$(SUBDIRS): FRC
@cd $@; pwd; $(MAKE) $(TARGET)
diff --git a/usr/src/cmd/pools/poold/libjlgrp/i386/Makefile b/usr/src/cmd/pools/poold/libjlgrp/i386/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjlgrp/i386/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjlgrp/jlgrp.h b/usr/src/cmd/pools/poold/libjlgrp/jlgrp.h
new file mode 100644
index 0000000000..a1cdb6846f
--- /dev/null
+++ b/usr/src/cmd/pools/poold/libjlgrp/jlgrp.h
@@ -0,0 +1,76 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sun_solaris_service_locality_LocalityDomain */
+
+#ifndef _Included_com_sun_solaris_service_locality_LocalityDomain
+#define _Included_com_sun_solaris_service_locality_LocalityDomain
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef com_sun_solaris_service_locality_LocalityDomain_LGRP_VIEW_CALLER
+#define com_sun_solaris_service_locality_LocalityDomain_LGRP_VIEW_CALLER 0L
+#undef com_sun_solaris_service_locality_LocalityDomain_LGRP_VIEW_OS
+#define com_sun_solaris_service_locality_LocalityDomain_LGRP_VIEW_OS 1L
+/*
+ * Class: com_sun_solaris_service_locality_LocalityDomain
+ * Method: jl_init
+ * Signature: (I)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_locality_LocalityDomain_jl_1init
+ (JNIEnv *, jobject, jint);
+
+/*
+ * Class: com_sun_solaris_service_locality_LocalityDomain
+ * Method: jl_fini
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_locality_LocalityDomain_jl_1fini
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_locality_LocalityDomain
+ * Method: jl_root
+ * Signature: ()Lcom/sun/solaris/service/locality/LocalityGroup;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_locality_LocalityDomain_jl_1root
+ (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* Header for class com_sun_solaris_service_locality_LocalityGroup */
+
+#ifndef _Included_com_sun_solaris_service_locality_LocalityGroup
+#define _Included_com_sun_solaris_service_locality_LocalityGroup
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_locality_LocalityGroup
+ * Method: jl_children
+ * Signature: ()[J
+ */
+JNIEXPORT jlongArray JNICALL Java_com_sun_solaris_service_locality_LocalityGroup_jl_1children
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_locality_LocalityGroup
+ * Method: jl_cpus
+ * Signature: ()[I
+ */
+JNIEXPORT jintArray JNICALL Java_com_sun_solaris_service_locality_LocalityGroup_jl_1cpus
+ (JNIEnv *, jobject);
+
+/*
+ * Class: com_sun_solaris_service_locality_LocalityGroup
+ * Method: jl_latency
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_locality_LocalityGroup_jl_1latency
+ (JNIEnv *, jobject, jlong, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/usr/src/cmd/pools/poold/libjlgrp/sparc/Makefile b/usr/src/cmd/pools/poold/libjlgrp/sparc/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjlgrp/sparc/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjpool/Makefile b/usr/src/cmd/pools/poold/libjpool/Makefile
index 1a1b192654..117d8f73e7 100644
--- a/usr/src/cmd/pools/poold/libjpool/Makefile
+++ b/usr/src/cmd/pools/poold/libjpool/Makefile
@@ -22,36 +22,22 @@
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+# Copyright 2020 Peter Tribble
+#
include $(SRC)/lib/Makefile.lib
-SUBDIRS = $(MACH)
-$(BLD_JAVA_8)SUBDIRS = $(MACH64)
+SUBDIRS = $(MACH64)
all := TARGET = all
clean := TARGET = clean
clobber := TARGET = clobber
install := TARGET = install
-lint := TARGET = lint
-
-JNI_CLASSES = \
- com.sun.solaris.service.pools.PoolInternal \
- com.sun.solaris.service.pools.Element \
- com.sun.solaris.service.pools.Value \
- com.sun.solaris.service.pools.HRTime
-
-JNI_GENERATED_HEADERS = \
- jpool.h
-CLEANFILES += $(JNI_GENERATED_HEADERS)
-
-all install lint: $(JNI_GENERATED_HEADERS) .WAIT $(SUBDIRS)
+all install: $(SUBDIRS)
clean clobber: $(SUBDIRS)
-$(JNI_GENERATED_HEADERS): $(SRC)/cmd/pools/poold/JPool.jar
- $(JAVAH) -classpath $? -o $@ $(JNI_CLASSES)
-
$(SUBDIRS): FRC
@cd $@; pwd; $(MAKE) $(TARGET)
diff --git a/usr/src/cmd/pools/poold/libjpool/i386/Makefile b/usr/src/cmd/pools/poold/libjpool/i386/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjpool/i386/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjpool/jpool.h b/usr/src/cmd/pools/poold/libjpool/jpool.h
new file mode 100644
index 0000000000..42e3ce4e9d
--- /dev/null
+++ b/usr/src/cmd/pools/poold/libjpool/jpool.h
@@ -0,0 +1,840 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sun_solaris_service_pools_PoolInternal */
+
+#ifndef _Included_com_sun_solaris_service_pools_PoolInternal
+#define _Included_com_sun_solaris_service_pools_PoolInternal
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef com_sun_solaris_service_pools_PoolInternal_POOL_VER_CURRENT
+#define com_sun_solaris_service_pools_PoolInternal_POOL_VER_CURRENT 1L
+#undef com_sun_solaris_service_pools_PoolInternal_POOL_VER_NONE
+#define com_sun_solaris_service_pools_PoolInternal_POOL_VER_NONE 0L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_TRUE
+#define com_sun_solaris_service_pools_PoolInternal_PO_TRUE 1L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_FALSE
+#define com_sun_solaris_service_pools_PoolInternal_PO_FALSE 0L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_SUCCESS
+#define com_sun_solaris_service_pools_PoolInternal_PO_SUCCESS 0L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_FAIL
+#define com_sun_solaris_service_pools_PoolInternal_PO_FAIL -1L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_OK
+#define com_sun_solaris_service_pools_PoolInternal_POE_OK 0L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_BAD_PROP_TYPE
+#define com_sun_solaris_service_pools_PoolInternal_POE_BAD_PROP_TYPE 1L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_INVALID_CONF
+#define com_sun_solaris_service_pools_PoolInternal_POE_INVALID_CONF 2L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_NOTSUP
+#define com_sun_solaris_service_pools_PoolInternal_POE_NOTSUP 3L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_INVALID_SEARCH
+#define com_sun_solaris_service_pools_PoolInternal_POE_INVALID_SEARCH 4L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_BADPARAM
+#define com_sun_solaris_service_pools_PoolInternal_POE_BADPARAM 5L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_PUTPROP
+#define com_sun_solaris_service_pools_PoolInternal_POE_PUTPROP 6L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_DATASTORE
+#define com_sun_solaris_service_pools_PoolInternal_POE_DATASTORE 7L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_SYSTEM
+#define com_sun_solaris_service_pools_PoolInternal_POE_SYSTEM 8L
+#undef com_sun_solaris_service_pools_PoolInternal_POE_ACCESS
+#define com_sun_solaris_service_pools_PoolInternal_POE_ACCESS 9L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_RDONLY
+#define com_sun_solaris_service_pools_PoolInternal_PO_RDONLY 0L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_RDWR
+#define com_sun_solaris_service_pools_PoolInternal_PO_RDWR 1L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_CREAT
+#define com_sun_solaris_service_pools_PoolInternal_PO_CREAT 2L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_DISCO
+#define com_sun_solaris_service_pools_PoolInternal_PO_DISCO 4L
+#undef com_sun_solaris_service_pools_PoolInternal_PO_UPDATE
+#define com_sun_solaris_service_pools_PoolInternal_PO_UPDATE 8L
+#undef com_sun_solaris_service_pools_PoolInternal_POU_SYSTEM
+#define com_sun_solaris_service_pools_PoolInternal_POU_SYSTEM 1L
+#undef com_sun_solaris_service_pools_PoolInternal_POU_POOL
+#define com_sun_solaris_service_pools_PoolInternal_POU_POOL 2L
+#undef com_sun_solaris_service_pools_PoolInternal_POU_PSET
+#define com_sun_solaris_service_pools_PoolInternal_POU_PSET 4L
+#undef com_sun_solaris_service_pools_PoolInternal_POU_CPU
+#define com_sun_solaris_service_pools_PoolInternal_POU_CPU 8L
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: init
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_init
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_version
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1version
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POX_NATIVE
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POX_1NATIVE
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POX_TEXT
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POX_1TEXT
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_INVAL
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1INVAL
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_UINT
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1UINT
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_INT
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1INT
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_DOUBLE
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1DOUBLE
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_BOOL
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1BOOL
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POC_STRING
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POC_1STRING
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POV_NONE
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POV_1NONE
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POV_LOOSE
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POV_1LOOSE
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POV_STRICT
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POV_1STRICT
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POV_RUNTIME
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POV_1RUNTIME
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POF_INVALID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POF_1INVALID
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POF_VALID
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POF_1VALID
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: get_POF_DESTROY
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_get_1POF_1DESTROY
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_error
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1error
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_strerror
+ * Signature: (I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1strerror
+ (JNIEnv *, jclass, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_strerror_sys
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1strerror_1sys
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_type_list
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1type_1list
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_status
+ * Signature: ()I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1status
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_set_status
+ * Signature: (I)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1set_1status
+ (JNIEnv *, jclass, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_alloc
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1alloc
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1free
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_status
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1status
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_close
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1close
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_remove
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1remove
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_open
+ * Signature: (JLjava/lang/String;I)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1open
+ (JNIEnv *, jclass, jlong, jstring, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_rollback
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1rollback
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_commit
+ * Signature: (JI)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1commit
+ (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_export
+ * Signature: (JLjava/lang/String;I)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1export
+ (JNIEnv *, jclass, jlong, jstring, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_validate
+ * Signature: (JI)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1validate
+ (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_update
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1update
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_pool
+ * Signature: (JLjava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1pool
+ (JNIEnv *, jclass, jlong, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_query_pools
+ * Signature: (JLjava/util/List;)Ljava/util/List;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1query_1pools
+ (JNIEnv *, jclass, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_resource
+ * Signature: (JLjava/lang/String;Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1resource
+ (JNIEnv *, jclass, jlong, jstring, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_query_resources
+ * Signature: (JLjava/util/List;)Ljava/util/List;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1query_1resources
+ (JNIEnv *, jclass, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_query_components
+ * Signature: (JLjava/util/List;)Ljava/util/List;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1query_1components
+ (JNIEnv *, jclass, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_location
+ * Signature: (J)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1location
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_info
+ * Signature: (JI)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1info
+ (JNIEnv *, jclass, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_create
+ * Signature: (JLjava/lang/String;Ljava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1create
+ (JNIEnv *, jclass, jlong, jstring, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_destroy
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1destroy
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_transfer
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1transfer
+ (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_xtransfer
+ * Signature: (JJJLjava/util/List;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1xtransfer
+ (JNIEnv *, jclass, jlong, jlong, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_query_resource_components
+ * Signature: (JJLjava/util/List;)Ljava/util/List;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1query_1resource_1components
+ (JNIEnv *, jclass, jlong, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_info
+ * Signature: (JJI)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1info
+ (JNIEnv *, jclass, jlong, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_create
+ * Signature: (JLjava/lang/String;)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1create
+ (JNIEnv *, jclass, jlong, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_destroy
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1destroy
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_associate
+ * Signature: (JJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1associate
+ (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_dissociate
+ * Signature: (JJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1dissociate
+ (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_info
+ * Signature: (JJI)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1info
+ (JNIEnv *, jclass, jlong, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_query_pool_resources
+ * Signature: (JJLjava/util/List;)Ljava/util/List;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1query_1pool_1resources
+ (JNIEnv *, jclass, jlong, jlong, jobject);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_owning_resource
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1owning_1resource
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_component_info
+ * Signature: (JJI)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1component_1info
+ (JNIEnv *, jclass, jlong, jlong, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_property
+ * Signature: (JJLjava/lang/String;J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1property
+ (JNIEnv *, jclass, jlong, jlong, jstring, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_put_property
+ * Signature: (JJLjava/lang/String;J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1put_1property
+ (JNIEnv *, jclass, jlong, jlong, jstring, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_rm_property
+ * Signature: (JJLjava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1rm_1property
+ (JNIEnv *, jclass, jlong, jlong, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_walk_properties
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1walk_1properties
+ (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_conf_to_elem
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1conf_1to_1elem
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_to_elem
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1to_1elem
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_resource_to_elem
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1resource_1to_1elem
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_component_to_elem
+ * Signature: (JJ)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1component_1to_1elem
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_uint64
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1uint64
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_int64
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1int64
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_double
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1double
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_bool
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1bool
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_string
+ * Signature: (JJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1string
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_type
+ * Signature: (J)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1type
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_uint64
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1uint64
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_int64
+ * Signature: (JJ)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1int64
+ (JNIEnv *, jclass, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_double
+ * Signature: (JD)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1double
+ (JNIEnv *, jclass, jlong, jdouble);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_bool
+ * Signature: (JS)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1bool
+ (JNIEnv *, jclass, jlong, jshort);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_string
+ * Signature: (JLjava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1string
+ (JNIEnv *, jclass, jlong, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_get_name
+ * Signature: (J)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1get_1name
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_set_name
+ * Signature: (JLjava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1set_1name
+ (JNIEnv *, jclass, jlong, jstring);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_alloc
+ * Signature: ()J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1alloc
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_value_free
+ * Signature: (J)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1value_1free
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_static_location
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1static_1location
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_dynamic_location
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1dynamic_1location
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_set_binding
+ * Signature: (Ljava/lang/String;II)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1set_1binding
+ (JNIEnv *, jclass, jstring, jint, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_binding
+ * Signature: (I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1binding
+ (JNIEnv *, jclass, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_get_resource_binding
+ * Signature: (Ljava/lang/String;I)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1get_1resource_1binding
+ (JNIEnv *, jclass, jstring, jint);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_walk_pools
+ * Signature: (JJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1walk_1pools
+ (JNIEnv *, jclass, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_walk_resources
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1walk_1resources
+ (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_PoolInternal
+ * Method: pool_walk_components
+ * Signature: (JJJJ)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_PoolInternal_pool_1walk_1components
+ (JNIEnv *, jclass, jlong, jlong, jlong, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* Header for class com_sun_solaris_service_pools_Element */
+
+#ifndef _Included_com_sun_solaris_service_pools_Element
+#define _Included_com_sun_solaris_service_pools_Element
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_pools_Element
+ * Method: walkProps
+ * Signature: (JJLcom/sun/solaris/service/pools/PropertyWalk;Ljava/lang/Object;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_solaris_service_pools_Element_walkProps
+ (JNIEnv *, jobject, jlong, jlong, jobject, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* Header for class com_sun_solaris_service_pools_Value */
+
+#ifndef _Included_com_sun_solaris_service_pools_Value
+#define _Included_com_sun_solaris_service_pools_Value
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_pools_Value
+ * Method: getUnsignedInt64Value
+ * Signature: (J)Lcom/sun/solaris/service/pools/UnsignedInt64;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_Value_getUnsignedInt64Value
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_Value
+ * Method: getLongValue
+ * Signature: (J)J
+ */
+JNIEXPORT jlong JNICALL Java_com_sun_solaris_service_pools_Value_getLongValue
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_Value
+ * Method: getStringValue
+ * Signature: (J)Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_solaris_service_pools_Value_getStringValue
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_Value
+ * Method: getBoolValue
+ * Signature: (J)Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_sun_solaris_service_pools_Value_getBoolValue
+ (JNIEnv *, jclass, jlong);
+
+/*
+ * Class: com_sun_solaris_service_pools_Value
+ * Method: getDoubleValue
+ * Signature: (J)D
+ */
+JNIEXPORT jdouble JNICALL Java_com_sun_solaris_service_pools_Value_getDoubleValue
+ (JNIEnv *, jclass, jlong);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* Header for class com_sun_solaris_service_pools_HRTime */
+
+#ifndef _Included_com_sun_solaris_service_pools_HRTime
+#define _Included_com_sun_solaris_service_pools_HRTime
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_solaris_service_pools_HRTime
+ * Method: timestamp
+ * Signature: ()Lcom/sun/solaris/service/pools/UnsignedInt64;
+ */
+JNIEXPORT jobject JNICALL Java_com_sun_solaris_service_pools_HRTime_timestamp
+ (JNIEnv *, jobject);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/usr/src/cmd/pools/poold/libjpool/sparc/Makefile b/usr/src/cmd/pools/poold/libjpool/sparc/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjpool/sparc/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjsyslog/Makefile b/usr/src/cmd/pools/poold/libjsyslog/Makefile
index e92960f43a..117d8f73e7 100644
--- a/usr/src/cmd/pools/poold/libjsyslog/Makefile
+++ b/usr/src/cmd/pools/poold/libjsyslog/Makefile
@@ -22,33 +22,22 @@
# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
+# Copyright 2020 Peter Tribble
+#
include $(SRC)/lib/Makefile.lib
-SUBDIRS = $(MACH)
-$(BLD_JAVA_8)SUBDIRS = $(MACH64)
+SUBDIRS = $(MACH64)
all := TARGET = all
clean := TARGET = clean
clobber := TARGET = clobber
install := TARGET = install
-lint := TARGET = lint
-
-JNI_CLASSES = \
- com.sun.solaris.service.logging.SyslogHandler
-
-JNI_GENERATED_HEADERS = \
- jsyslog.h
-CLEANFILES += $(JNI_GENERATED_HEADERS)
-
-all install lint: $(JNI_GENERATED_HEADERS) .WAIT $(SUBDIRS)
+all install: $(SUBDIRS)
clean clobber: $(SUBDIRS)
-$(JNI_GENERATED_HEADERS): $(SRC)/cmd/pools/poold/JPool.jar
- $(JAVAH) -classpath $? -o $@ $(JNI_CLASSES)
-
$(SUBDIRS): FRC
@cd $@; pwd; $(MAKE) $(TARGET)
diff --git a/usr/src/cmd/pools/poold/libjsyslog/i386/Makefile b/usr/src/cmd/pools/poold/libjsyslog/i386/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjsyslog/i386/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/pools/poold/libjsyslog/jsyslog.h b/usr/src/cmd/pools/poold/libjsyslog/jsyslog.h
new file mode 100644
index 0000000000..24e631e351
--- /dev/null
+++ b/usr/src/cmd/pools/poold/libjsyslog/jsyslog.h
@@ -0,0 +1,39 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sun_solaris_service_logging_SyslogHandler */
+
+#ifndef _Included_com_sun_solaris_service_logging_SyslogHandler
+#define _Included_com_sun_solaris_service_logging_SyslogHandler
+#ifdef __cplusplus
+extern "C" {
+#endif
+#undef com_sun_solaris_service_logging_SyslogHandler_DEF_LOGOPT
+#define com_sun_solaris_service_logging_SyslogHandler_DEF_LOGOPT 0L
+/*
+ * Class: com_sun_solaris_service_logging_SyslogHandler
+ * Method: syslog
+ * Signature: (ILjava/lang/String;)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_logging_SyslogHandler_syslog
+ (JNIEnv *, jclass, jint, jstring);
+
+/*
+ * Class: com_sun_solaris_service_logging_SyslogHandler
+ * Method: openlog
+ * Signature: (Ljava/lang/String;II)V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_logging_SyslogHandler_openlog
+ (JNIEnv *, jclass, jstring, jint, jint);
+
+/*
+ * Class: com_sun_solaris_service_logging_SyslogHandler
+ * Method: closelog
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_com_sun_solaris_service_logging_SyslogHandler_closelog
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/usr/src/cmd/pools/poold/libjsyslog/sparc/Makefile b/usr/src/cmd/pools/poold/libjsyslog/sparc/Makefile
deleted file mode 100644
index 35ac6d4219..0000000000
--- a/usr/src/cmd/pools/poold/libjsyslog/sparc/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-#
-# CDDL HEADER START
-#
-# The contents of this file are subject to the terms of the
-# Common Development and Distribution License (the "License").
-# You may not use this file except in compliance with the License.
-#
-# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-# or http://www.opensolaris.org/os/licensing.
-# See the License for the specific language governing permissions
-# and limitations under the License.
-#
-# When distributing Covered Code, include this CDDL HEADER in each
-# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-# If applicable, add the following below this CDDL HEADER, with the
-# fields enclosed by brackets "[]" replaced with your own identifying
-# information: Portions Copyright [yyyy] [name of copyright owner]
-#
-# CDDL HEADER END
-#
-#
-# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
-# Use is subject to license terms.
-#
-# ident "%Z%%M% %I% %E% SMI"
-#
-
-include ../Makefile.com
-
-install: all $(ROOTLIBS) $(ROOTLINKS)
diff --git a/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/Makefile b/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/Makefile
index 67be7d0b27..e3ad77dd61 100644
--- a/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/Makefile
+++ b/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/Makefile
@@ -23,6 +23,8 @@
# Use is subject to license terms.
#
# Copyright (c) 2018, Joyent, Inc.
+# Copyright 2020 Peter Tribble
+#
#
# Makefile for Java Print Manager server
@@ -31,8 +33,6 @@
LIBRARY = libpmgr.a
VERS = .1
-JNIHDR_FILES = com_sun_admin_pm_server_DoPrinterNS.h
-
OBJECTS = DoPrinterNS.o NS.o
CLASSFILES = Printer.class \
@@ -59,8 +59,6 @@ CLASSFILES = Printer.class \
pmNSNotConfiguredException.class \
pmMisc.class
-JNICLASSFILES = DoPrinterNS.class
-
include $(SRC)/lib/Makefile.lib
SRCDIR = .
@@ -93,29 +91,19 @@ SMATCH=off
LDLIBS += -lprint -lnsl -lsocket -lc
CLEANFILES= *.class
-CLOBBERFILES= $(JNIHDR_FILES) $(LIBLINKS)
+CLOBBERFILES= $(LIBLINKS)
-all: $(CLASSFILES) $(JNIHDR_FILES) $(DYNLIB)
+all: $(CLASSFILES) $(DYNLIB)
install: all $(ROOTDIRS) $(ROOTLINKS)
#
-# Build jni header file
-# Use $@ instead of the "unreliable" $*
-#
-$(JNIHDR_FILES): $(JNICLASSFILES)
- $(JAVAH) -jni -classpath $(CLASSPATH) \
- `echo $@ | sed 's/.h$$//' | tr _ .`
-
-#
# Build standalone programs for testing
#
NS: NS.c
$(CC) NS.c $(CCGDEBUG) $(ILDOFF) -o NS -DMAIN=1 $(ENVLDLIBS1) $(ENVLIBS2) \
-lprint -lnsl -lsocket
-lint: $(JNIHDR_FILES)
-
cstyle:
cstyle $(SRCS)
diff --git a/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/com_sun_admin_pm_server_DoPrinterNS.h b/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/com_sun_admin_pm_server_DoPrinterNS.h
new file mode 100644
index 0000000000..c841395820
--- /dev/null
+++ b/usr/src/cmd/print/printmgr/com/sun/admin/pm/server/com_sun_admin_pm_server_DoPrinterNS.h
@@ -0,0 +1,53 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sun_admin_pm_server_DoPrinterNS */
+
+#ifndef _Included_com_sun_admin_pm_server_DoPrinterNS
+#define _Included_com_sun_admin_pm_server_DoPrinterNS
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class: com_sun_admin_pm_server_DoPrinterNS
+ * Method: dorexec
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_admin_pm_server_DoPrinterNS_dorexec
+ (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring);
+
+/*
+ * Class: com_sun_admin_pm_server_DoPrinterNS
+ * Method: updateoldyp
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_admin_pm_server_DoPrinterNS_updateoldyp
+ (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring, jstring);
+
+/*
+ * Class: com_sun_admin_pm_server_DoPrinterNS
+ * Method: updateldap
+ * Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ */
+JNIEXPORT jint JNICALL Java_com_sun_admin_pm_server_DoPrinterNS_updateldap
+ (JNIEnv *, jclass, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring, jstring);
+
+/*
+ * Class: com_sun_admin_pm_server_DoPrinterNS
+ * Method: getstderr
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_admin_pm_server_DoPrinterNS_getstderr
+ (JNIEnv *, jclass);
+
+/*
+ * Class: com_sun_admin_pm_server_DoPrinterNS
+ * Method: getstdout
+ * Signature: ()Ljava/lang/String;
+ */
+JNIEXPORT jstring JNICALL Java_com_sun_admin_pm_server_DoPrinterNS_getstdout
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/usr/src/cmd/prtvtoc/Makefile b/usr/src/cmd/prtvtoc/Makefile
index 1a64695fa6..adf9f5396a 100644
--- a/usr/src/cmd/prtvtoc/Makefile
+++ b/usr/src/cmd/prtvtoc/Makefile
@@ -31,11 +31,7 @@ RELUSRSBIN= ../usr/sbin
ROOTSYMLINK= $(ROOTETC)/$(PROG)
LDLIBS += -ladm -lefi
-CERRWARN += -_gcc=-Wno-parentheses
-CERRWARN += $(CNOWARN_UNINIT)
-
-# not linted
-SMATCH=off
+CSTD = $(CSTD_GNU99)
.KEEP_STATE:
diff --git a/usr/src/cmd/prtvtoc/prtvtoc.c b/usr/src/cmd/prtvtoc/prtvtoc.c
index 531fd244e8..16a1a5a4c3 100644
--- a/usr/src/cmd/prtvtoc/prtvtoc.c
+++ b/usr/src/cmd/prtvtoc/prtvtoc.c
@@ -18,12 +18,12 @@
*
* CDDL HEADER END
*/
-/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
-/* All Rights Reserved */
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
+/* All Rights Reserved */
-/* Copyright (c) 1984 AT&T */
-/* All Rights Reserved */
+/* Copyright (c) 1984 AT&T */
+/* All Rights Reserved */
/*
@@ -42,6 +42,7 @@
#include <string.h>
#include <stdio.h>
#include <limits.h>
+#include <err.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -56,10 +57,10 @@
* Assumes V_NUMPAR must be a power of 2.
*
* for V_NUMPAR = 8, we have
- * parttn(x)=(x & 0x07) noparttn(x)=(x & 0x3fff8)
+ * parttn(x)=(x & 0x07) noparttn(x)=(x & 0x3fff8)
*
* for V_NUMPAR = 16, we have
- * parttn(x)=(x & 0x0f) noparttn(x)=(x & 0x3fff0)
+ * parttn(x)=(x & 0x0f) noparttn(x)=(x & 0x3fff0)
*/
#define parttn(x) (x % V_NUMPAR)
#define noparttn(x) (x & (MAXMIN & ~(V_NUMPAR-1)))
@@ -86,8 +87,11 @@ static int readgeom(int, char *, struct dk_geom *);
static int readvtoc(int, char *, struct extvtoc *);
static int readefi(int, char *, struct dk_gpt **);
static void usage(void);
-static int warn(char *, char *);
-static char *safe_strdup(char *);
+static char *safe_strdup(const char *, const char *);
+static void *safe_calloc(const char *, size_t, size_t);
+
+#define SAFE_STRDUP(a) safe_strdup(__func__, (a))
+#define SAFE_CALLOC(a, b) safe_calloc(__func__, (a), (b))
/*
* External variables.
@@ -101,19 +105,15 @@ static short hflag; /* Omit headers */
static short sflag; /* Omit all but the column header */
static char *fstab = VFSTAB; /* Fstab pathname */
static char *mnttab = MNTTAB; /* mnttab pathname */
-static char *progname; /* Last qualifier of arg0 */
int
-main(int ac, char **av)
+main(int argc, char *argv[])
{
- int idx;
+ int status = EXIT_SUCCESS;
+ int c;
- if (progname = strrchr(av[0], '/'))
- ++progname;
- else
- progname = av[0];
- while ((idx = getopt(ac, av, "fhst:m:")) != -1)
- switch (idx) {
+ while ((c = getopt(argc, argv, "fhst:m:")) != -1) {
+ switch (c) {
case 'f':
++fflag;
break;
@@ -132,12 +132,18 @@ main(int ac, char **av)
default:
usage();
}
- if (optind >= ac)
+ }
+
+ if (optind >= argc)
usage();
- idx = 0;
- while (optind < ac)
- idx |= prtvtoc(av[optind++]);
- return (idx == 0 ? 0 : 1);
+
+ for (int i = optind; i < argc; i++) {
+ if (prtvtoc(argv[i]) != 0) {
+ status = EXIT_FAILURE;
+ }
+ }
+
+ return (status);
}
static freemap_t *freemap;
@@ -147,36 +153,38 @@ static freemap_t *freemap;
static freemap_t *
findfree(struct dk_geom *geom, struct extvtoc *vtoc)
{
- struct extpartition *part;
- struct extpartition **list;
- freemap_t *freeidx;
- diskaddr_t fullsize;
- ulong_t cylsize;
- struct extpartition *sorted[V_NUMPAR + 1];
-
- freemap = calloc(sizeof (freemap_t), V_NUMPAR + 1);
- cylsize = (geom->dkg_nsect) * (geom->dkg_nhead);
- fullsize = (diskaddr_t)(geom->dkg_ncyl) * cylsize;
+ struct extpartition *part;
+ struct extpartition **list;
+ freemap_t *freeidx;
+ diskaddr_t fullsize;
+ ulong_t cylsize;
+ struct extpartition *sorted[V_NUMPAR + 1];
+
if (vtoc->v_nparts > V_NUMPAR) {
- (void) warn("putfree()", "Too many partitions on disk!");
- exit(1);
+ errx(EXIT_FAILURE, "putfree(): Too many partitions on disk!");
}
+
+ freemap = SAFE_CALLOC(sizeof (freemap_t), V_NUMPAR + 1);
+ cylsize = (geom->dkg_nsect) * (geom->dkg_nhead);
+ fullsize = (diskaddr_t)(geom->dkg_ncyl) * cylsize;
list = sorted;
- for (part = vtoc->v_part; part < vtoc->v_part + vtoc->v_nparts; ++part)
+ for (part = vtoc->v_part; part < vtoc->v_part + vtoc->v_nparts;
+ ++part) {
if (part->p_size && part->p_tag != V_BACKUP)
*list++ = part;
+ }
*list = 0;
- qsort((char *)sorted, (uint_t)(list - sorted),
- sizeof (*sorted), partcmp);
+ qsort(sorted, list - sorted, sizeof (*sorted), partcmp);
freeidx = freemap;
freeidx->fr_start = 0;
- for (list = sorted; (part = *list) != NULL; ++list)
- if (part->p_start <= freeidx->fr_start)
+ for (list = sorted; (part = *list) != NULL; ++list) {
+ if (part->p_start <= freeidx->fr_start) {
freeidx->fr_start += part->p_size;
- else {
+ } else {
freeidx->fr_size = part->p_start - freeidx->fr_start;
(++freeidx)->fr_start = part->p_start + part->p_size;
}
+ }
if (freeidx->fr_start < fullsize) {
freeidx->fr_size = fullsize - freeidx->fr_start;
++freeidx;
@@ -191,33 +199,33 @@ findfree(struct dk_geom *geom, struct extvtoc *vtoc)
static freemap_t *
findfree64(struct dk_gpt *efi)
{
- struct dk_part *part;
- struct dk_part **list;
- freemap_t *freeidx;
- diskaddr_t fullsize;
- struct dk_part **sorted;
-
- freemap = calloc(sizeof (freemap_t), efi->efi_nparts + 1);
- sorted = calloc(sizeof (struct dk_part), efi->efi_nparts + 1);
+ struct dk_part *part;
+ struct dk_part **list;
+ freemap_t *freeidx;
+ diskaddr_t fullsize;
+ struct dk_part **sorted;
+
+ freemap = SAFE_CALLOC(sizeof (freemap_t), efi->efi_nparts + 1);
+ sorted = SAFE_CALLOC(sizeof (struct dk_part), efi->efi_nparts + 1);
fullsize = efi->efi_last_u_lba;
list = sorted;
- for (part = efi->efi_parts;
- part < efi->efi_parts + efi->efi_nparts;
- ++part)
+ for (part = efi->efi_parts; part < efi->efi_parts + efi->efi_nparts;
+ ++part) {
if (part->p_size && part->p_tag != V_BACKUP)
*list++ = part;
+ }
*list = 0;
- qsort((char *)sorted, (uint_t)(list - sorted),
- sizeof (*sorted), partcmp64);
+ qsort(sorted, list - sorted, sizeof (*sorted), partcmp64);
freeidx = freemap;
freeidx->fr_start = efi->efi_first_u_lba;
- for (list = sorted; (part = *list) != NULL; ++list)
- if (part->p_start == freeidx->fr_start)
+ for (list = sorted; (part = *list) != NULL; ++list) {
+ if (part->p_start == freeidx->fr_start) {
freeidx->fr_start += part->p_size;
- else {
+ } else {
freeidx->fr_size = part->p_start - freeidx->fr_start;
(++freeidx)->fr_start = part->p_start + part->p_size;
}
+ }
if (freeidx->fr_start < fullsize) {
freeidx->fr_size = fullsize - freeidx->fr_start;
++freeidx;
@@ -236,7 +244,6 @@ findfree64(struct dk_gpt *efi)
static char **
getmntpt(major_t slot, minor_t nopartminor)
{
- int idx;
FILE *file;
char devbuf[PATH_MAX], *item;
static char *list[V_NUMPAR];
@@ -244,22 +251,22 @@ getmntpt(major_t slot, minor_t nopartminor)
struct mnttab mtab;
struct vfstab vtab;
- for (idx = 0; idx < V_NUMPAR; ++idx)
+ for (unsigned idx = 0; idx < V_NUMPAR; ++idx)
list[idx] = NULL;
/* read mnttab for partition mountpoints */
if ((file = fopen(mnttab, "r")) == NULL) {
- (void) warn(mnttab, strerror(errno));
+ warn("failed to open %s", mnttab);
} else {
while (getmntent(file, &mtab) == 0) {
item = mtab.mnt_special;
- if ((item == NULL) || (mtab.mnt_mountp == NULL))
+ if (item == NULL || mtab.mnt_mountp == NULL)
continue;
/*
* Is it from /dev?
*/
- if (strncmp(item, "/dev/", strlen("/dev/") != 0))
+ if (strncmp(item, "/dev/", strlen("/dev/")) != 0)
continue;
/*
@@ -268,25 +275,27 @@ getmntpt(major_t slot, minor_t nopartminor)
(void) snprintf(devbuf, sizeof (devbuf), "/dev/r%s",
item + strlen("/dev/"));
- if ((stat(devbuf, &sb) != 0) ||
- ((sb.st_mode & S_IFMT) != S_IFCHR))
+ if (stat(devbuf, &sb) != 0 ||
+ (sb.st_mode & S_IFMT) != S_IFCHR) {
continue;
+ }
/*
* device must match input slot and nopartminor
*/
- if ((major(sb.st_rdev) != slot) ||
- (noparttn(minor(sb.st_rdev)) != nopartminor))
+ if (major(sb.st_rdev) != slot ||
+ noparttn(minor(sb.st_rdev)) != nopartminor) {
continue;
+ }
list[parttn(minor(sb.st_rdev))] =
- safe_strdup(mtab.mnt_mountp);
+ SAFE_STRDUP(mtab.mnt_mountp);
}
(void) fclose(file);
}
if ((file = fopen(fstab, "r")) == NULL) {
- (void) warn(fstab, strerror(errno));
+ warn("failed to open %s", fstab);
return (list);
}
@@ -296,7 +305,7 @@ getmntpt(major_t slot, minor_t nopartminor)
*/
while (getvfsent(file, &vtab) == 0) {
item = vtab.vfs_special;
- if ((item == NULL) || (vtab.vfs_mountp == NULL))
+ if (item == NULL || vtab.vfs_mountp == NULL)
continue;
if (strncmp(item, "/dev/", strlen("/dev/")) != 0)
@@ -308,16 +317,18 @@ getmntpt(major_t slot, minor_t nopartminor)
(void) snprintf(devbuf, sizeof (devbuf), "/dev/r%s",
item + strlen("/dev/"));
- if ((stat(devbuf, &sb) != 0) ||
- ((sb.st_mode & S_IFMT) != S_IFCHR))
+ if (stat(devbuf, &sb) != 0 ||
+ (sb.st_mode & S_IFMT) != S_IFCHR) {
continue;
+ }
/*
* device must match input slot and nopartminor
*/
- if ((major(sb.st_rdev) != slot) ||
- (noparttn(minor(sb.st_rdev)) != nopartminor))
+ if (major(sb.st_rdev) != slot ||
+ noparttn(minor(sb.st_rdev)) != nopartminor) {
continue;
+ }
/*
* use mnttab entry if both tables have entries
@@ -325,7 +336,7 @@ getmntpt(major_t slot, minor_t nopartminor)
if (list[parttn(minor(sb.st_rdev))] != NULL)
continue;
- list[parttn(minor(sb.st_rdev))] = safe_strdup(vtab.vfs_mountp);
+ list[parttn(minor(sb.st_rdev))] = SAFE_STRDUP(vtab.vfs_mountp);
}
(void) fclose(file);
@@ -338,22 +349,31 @@ getmntpt(major_t slot, minor_t nopartminor)
static int
partcmp(const void *one, const void *two)
{
- return ((*(struct partition **)one)->p_start -
- (*(struct partition **)two)->p_start);
+ struct partition *p1 = *(struct partition **)one;
+ struct partition *p2 = *(struct partition **)two;
+
+ if (p1->p_start > p2->p_start) {
+ return (1);
+ } else if (p1->p_start < p2->p_start) {
+ return (-1);
+ } else {
+ return (0);
+ }
}
static int
partcmp64(const void *one, const void *two)
{
- if ((*(struct dk_part **)one)->p_start >
- (*(struct dk_part **)two)->p_start)
- return (1);
- else if ((*(struct dk_part **)one)->p_start <
- (*(struct dk_part **)two)->p_start)
- return (-1);
- else
- return (0);
+ dk_part_t *p1 = *(dk_part_t **)one;
+ dk_part_t *p2 = *(dk_part_t **)two;
+ if (p1->p_start > p2->p_start) {
+ return (1);
+ } else if (p1->p_start < p2->p_start) {
+ return (-1);
+ } else {
+ return (0);
+ }
}
/*
@@ -362,37 +382,46 @@ partcmp64(const void *one, const void *two)
static int
prtvtoc(char *devname)
{
- int fd;
- int idx;
- freemap_t *freemap;
- struct stat sb;
- struct extvtoc vtoc;
- int geo;
- struct dk_geom geom;
- char *name;
- int newvtoc = 0;
- struct dk_gpt *efi;
+ int fd;
+ int idx;
+ freemap_t *freemap;
+ struct stat sb;
+ struct extvtoc vtoc;
+ int geo;
+ struct dk_geom geom;
+ char *name;
+ int newvtoc = 0;
+ struct dk_gpt *efi;
name = getfullrawname(devname);
- if (name == NULL)
- return (warn(devname,
- "internal administrative call (getfullrawname) failed"));
+ if (name == NULL) {
+ warnx("%s: internal administrative call (getfullrawname) "
+ "failed", devname);
+ return (-1);
+ }
if (strcmp(name, "") == 0)
name = devname;
- if ((fd = open(name, O_NONBLOCK|O_RDONLY)) < 0)
- return (warn(name, strerror(errno)));
- if (fstat(fd, &sb) < 0)
- return (warn(name, strerror(errno)));
- if ((sb.st_mode & S_IFMT) != S_IFCHR)
- return (warn(name, "Not a raw device"));
+ if ((fd = open(name, O_NONBLOCK|O_RDONLY)) < 0) {
+ warn("%s: failed to open device", name);
+ return (-1);
+ }
+ if (fstat(fd, &sb) < 0) {
+ warn("%s: failed to stat device", name);
+ return (-1);
+ }
+ if ((sb.st_mode & S_IFMT) != S_IFCHR) {
+ warnx("%s: Not a raw device", name);
+ return (-1);
+ }
geo = (readgeom(fd, name, &geom) == 0);
if (geo) {
if ((idx = readvtoc(fd, name, &vtoc)) == VT_ENOTSUP) {
idx = (readefi(fd, name, &efi) == 0);
newvtoc = 1;
- } else
+ } else {
idx = (idx == 0);
+ }
}
(void) close(fd);
if ((!geo) || (!idx))
@@ -407,14 +436,15 @@ prtvtoc(char *devname)
else
putfree64(efi, freemap);
} else {
- if (!newvtoc)
+ if (!newvtoc) {
puttable(&geom, &vtoc, freemap, devname,
getmntpt(major(sb.st_rdev),
noparttn(minor(sb.st_rdev))));
- else
+ } else {
puttable64(efi, freemap, devname,
getmntpt(major(sb.st_rdev),
noparttn(minor(sb.st_rdev))));
+ }
}
if (newvtoc)
efi_free(efi);
@@ -468,6 +498,51 @@ putfree64(struct dk_gpt *efi, freemap_t *freemap)
(void) printf("\n");
}
+static void
+print_table_header()
+{
+ (void) printf("* First Sector"
+ " Last\n");
+ (void) printf("* Partition Tag Flags Sector Count"
+ " Sector Mount Directory\n");
+}
+
+static void
+print_table_row(uint_t partition, uint_t tag, uint_t flag,
+ u_longlong_t first_sector, u_longlong_t sector_count,
+ u_longlong_t last_sector, const char *mount_dir)
+{
+ (void) printf(" %6u %4u %02x %11llu %11llu %11llu",
+ partition, tag, flag, first_sector, sector_count, last_sector);
+ if (mount_dir != NULL) {
+ (void) printf(" %s", mount_dir);
+ }
+ (void) printf("\n");
+}
+
+static void
+print_freemap(freemap_t *freemap)
+{
+ if (freemap->fr_size == 0) {
+ /*
+ * The freemap is completely empty, so do not print the header.
+ */
+ return;
+ }
+
+ (void) printf("* Unallocated space:\n"
+ "* First Sector Last\n"
+ "* Sector Count Sector\n");
+
+ do {
+ (void) printf("* %11llu %11llu %11llu\n",
+ freemap->fr_start, freemap->fr_size,
+ freemap->fr_size + freemap->fr_start - 1);
+ } while ((++freemap)->fr_size != 0);
+
+ (void) printf("*\n");
+}
+
/*
* puttable(): Print a human-readable VTOC.
*/
@@ -475,54 +550,47 @@ static void
puttable(struct dk_geom *geom, struct extvtoc *vtoc, freemap_t *freemap,
char *name, char **mtab)
{
- ushort_t idx;
- ulong_t cylsize;
+ ushort_t idx;
+ ulong_t cylsize;
cylsize = (geom->dkg_nsect) * (geom->dkg_nhead);
if (!hflag && !sflag) {
(void) printf("* %s", name);
- if (*vtoc->v_volume)
+ if (vtoc->v_volume[0] != '\0')
(void) printf(" (volume \"%.8s\")", vtoc->v_volume);
(void) printf(" partition map\n");
(void) printf("*\n* Dimensions:\n");
- (void) printf("* %7u bytes/sector\n", vtoc->v_sectorsz);
- (void) printf("* %7u sectors/track\n", geom->dkg_nsect);
- (void) printf("* %7u tracks/cylinder\n", geom->dkg_nhead);
- (void) printf("* %7lu sectors/cylinder\n", cylsize);
- (void) printf("* %7u cylinders\n", geom->dkg_pcyl);
- (void) printf("* %7u accessible cylinders\n", geom->dkg_ncyl);
+ (void) printf("* %11u bytes/sector\n", vtoc->v_sectorsz);
+ (void) printf("* %11u sectors/track\n", geom->dkg_nsect);
+ (void) printf("* %11u tracks/cylinder\n", geom->dkg_nhead);
+ (void) printf("* %11lu sectors/cylinder\n", cylsize);
+ (void) printf("* %11u cylinders\n", geom->dkg_pcyl);
+ (void) printf("* %11u accessible cylinders\n", geom->dkg_ncyl);
(void) printf("*\n* Flags:\n");
(void) printf("* 1: unmountable\n");
(void) printf("* 10: read-only\n*\n");
- if (freemap->fr_size) {
- (void) printf("* Unallocated space:\n");
- (void) printf("*\tFirst Sector Last\n");
- (void) printf("*\tSector Count Sector \n");
- do {
- (void) printf("* %9llu %9llu %9llu\n",
- freemap->fr_start, freemap->fr_size,
- freemap->fr_size + freemap->fr_start - 1);
- } while ((++freemap)->fr_size);
- (void) printf("*\n");
- }
+ print_freemap(freemap);
}
- if (!hflag) {
- (void) printf(\
-"* First Sector Last\n"
-"* Partition Tag Flags Sector Count Sector Mount Directory\n");
+
+ if (!hflag) {
+ print_table_header();
}
+
for (idx = 0; idx < vtoc->v_nparts; ++idx) {
- if (vtoc->v_part[idx].p_size == 0)
+ const char *mount_dir = NULL;
+ struct extpartition *p = &vtoc->v_part[idx];
+
+ if (p->p_size == 0)
continue;
- (void) printf(" %2u %5u %02x %9llu %9llu %9llu",
- idx, vtoc->v_part[idx].p_tag, vtoc->v_part[idx].p_flag,
- vtoc->v_part[idx].p_start, vtoc->v_part[idx].p_size,
- vtoc->v_part[idx].p_start + vtoc->v_part[idx].p_size - 1);
- if (mtab && mtab[idx])
- (void) printf(" %s", mtab[idx]);
- (void) printf("\n");
+
+ if (mtab != NULL) {
+ mount_dir = mtab[idx];
+ }
+
+ print_table_row(idx, p->p_tag, p->p_flag, p->p_start,
+ p->p_size, p->p_start + p->p_size - 1, mount_dir);
}
}
@@ -530,55 +598,47 @@ puttable(struct dk_geom *geom, struct extvtoc *vtoc, freemap_t *freemap,
* puttable(): Print a human-readable VTOC.
*/
static void
-puttable64(struct dk_gpt *efi, freemap_t *freemap, char *name,
- char **mtab)
+puttable64(struct dk_gpt *efi, freemap_t *freemap, char *name, char **mtab)
{
- ushort_t idx;
-
if (!hflag && !sflag) {
(void) printf("* %s", name);
- for (idx = 0; idx < efi->efi_nparts; idx++)
- if (efi->efi_parts[idx].p_tag == V_RESERVED &&
- *efi->efi_parts[idx].p_name)
- (void) printf(" (volume \"%.8s\")",
+ for (uint_t idx = 0; idx < efi->efi_nparts; idx++) {
+ if (efi->efi_parts[idx].p_tag == V_RESERVED &&
+ efi->efi_parts[idx].p_name[0] != '\0') {
+ (void) printf(" (volume \"%.8s\")",
efi->efi_parts[idx].p_name);
+ }
+ }
(void) printf(" partition map\n");
(void) printf("*\n* Dimensions:\n");
- (void) printf("* %7u bytes/sector\n", efi->efi_lbasize);
- (void) printf("* %llu sectors\n", efi->efi_last_lba + 1);
- (void) printf("* %llu accessible sectors\n",
+ (void) printf("* %11u bytes/sector\n", efi->efi_lbasize);
+ (void) printf("* %11llu sectors\n", efi->efi_last_lba + 1);
+ (void) printf("* %11llu accessible sectors\n",
efi->efi_last_u_lba - efi->efi_first_u_lba + 1);
(void) printf("*\n* Flags:\n");
(void) printf("* 1: unmountable\n");
(void) printf("* 10: read-only\n*\n");
- if (freemap->fr_size) {
- (void) printf("* Unallocated space:\n");
- (void) printf("*\tFirst Sector Last\n");
- (void) printf("*\tSector Count Sector \n");
- do {
- (void) printf("* %9llu %9llu %9llu\n",
- freemap->fr_start, freemap->fr_size,
- freemap->fr_size + freemap->fr_start - 1);
- } while ((++freemap)->fr_size);
- (void) printf("*\n");
- }
+ print_freemap(freemap);
}
- if (!hflag) {
- (void) printf(\
-"* First Sector Last\n"
-"* Partition Tag Flags Sector Count Sector Mount Directory\n");
+
+ if (!hflag) {
+ print_table_header();
}
- for (idx = 0; idx < efi->efi_nparts; ++idx) {
- if (efi->efi_parts[idx].p_size == 0)
- continue;
- (void) printf(" %2u %5u %02x %9llu %9llu %9llu",
- idx, efi->efi_parts[idx].p_tag, efi->efi_parts[idx].p_flag,
- efi->efi_parts[idx].p_start, efi->efi_parts[idx].p_size,
- efi->efi_parts[idx].p_start + efi->efi_parts[idx].p_size - 1);
- if ((idx < 7) && mtab && mtab[idx])
- (void) printf(" %s", mtab[idx]);
- (void) printf("\n");
+
+ for (uint_t idx = 0; idx < efi->efi_nparts; ++idx) {
+ const char *mount_dir = NULL;
+ dk_part_t *p = &efi->efi_parts[idx];
+
+ if (p->p_size == 0)
+ continue;
+
+ if (idx < 7 && mtab != NULL) {
+ mount_dir = mtab[idx];
+ }
+
+ print_table_row(idx, p->p_tag, p->p_flag, p->p_start,
+ p->p_size, p->p_start + p->p_size - 1, mount_dir);
}
}
@@ -588,16 +648,16 @@ puttable64(struct dk_gpt *efi, freemap_t *freemap, char *name,
static int
readgeom(int fd, char *name, struct dk_geom *geom)
{
- char err_string[128];
-
- if ((ioctl(fd, DKIOCGGEOM, geom) < 0) && (errno != ENOTSUP)) {
- (void) sprintf(err_string,
- "Unable to read Disk geometry errno = 0x%x",
- errno);
- return (warn(name, err_string));
- } else if (errno == ENOTSUP) {
+ if (ioctl(fd, DKIOCGGEOM, geom) < 0) {
+ if (errno != ENOTSUP) {
+ warnx("%s: Unable to read Disk geometry errno = 0x%x",
+ name, errno);
+ return (-1);
+ }
+
(void) memset(geom, 0, sizeof (struct dk_geom));
}
+
return (0);
}
@@ -607,19 +667,23 @@ readgeom(int fd, char *name, struct dk_geom *geom)
static int
readvtoc(int fd, char *name, struct extvtoc *vtoc)
{
- int retval;
+ int retval;
if ((retval = read_extvtoc(fd, vtoc)) >= 0)
return (0);
switch (retval) {
- case (VT_EIO):
- return (warn(name, "Unable to read VTOC"));
- case (VT_EINVAL):
- return (warn(name, "Invalid VTOC"));
- case (VT_ERROR):
- return (warn(name, "Unknown problem reading VTOC"));
+ case VT_EIO:
+ warnx("%s: Unable to read VTOC", name);
+ return (-1);
+ case VT_EINVAL:
+ warnx("%s: Invalid VTOC", name);
+ return (-1);
+ case VT_ERROR:
+ warnx("%s: Unknown problem reading VTOC", name);
+ return (-1);
}
+
return (retval);
}
@@ -635,25 +699,64 @@ readefi(int fd, char *name, struct dk_gpt **efi)
return (0);
switch (retval) {
- case (VT_EIO):
- return (warn(name, "Unable to read VTOC"));
- case (VT_EINVAL):
- return (warn(name, "Invalid VTOC"));
- case (VT_ERROR):
- return (warn(name, "Unknown problem reading VTOC"));
+ case VT_EIO:
+ warnx("%s: Unable to read VTOC", name);
+ return (-1);
+ case VT_EINVAL:
+ warnx("%s: Invalid VTOC", name);
+ return (-1);
+ case VT_ERROR:
+ warnx("%s: Unknown problem reading VTOC", name);
+ return (-1);
}
+
return (retval);
}
+static void
+memory_err(size_t l, int e, const char *fname)
+{
+ const char *reason;
+
+ switch (e) {
+ case EAGAIN:
+ reason = "not enough memory was available, please try again";
+ break;
+ case ENOMEM:
+ reason = "allocation size was too large";
+ break;
+ default:
+ reason = strerror(e);
+ break;
+ }
+
+ errx(EXIT_FAILURE, "%s: failed to allocate %llu bytes of memory: %s",
+ fname, (u_longlong_t)l, reason);
+}
+
+static void *
+safe_calloc(const char *fname, size_t nelem, size_t elsize)
+{
+ void *r;
+
+ if ((r = calloc(nelem, elsize)) == NULL) {
+ memory_err(nelem * elsize, errno, fname);
+ }
+
+ return (r);
+}
+
static char *
-safe_strdup(char *str)
+safe_strdup(const char *fname, const char *str)
{
- char *ret;
- if ((ret = strdup(str)) == NULL) {
- (void) warn("memory allocation", strerror(errno));
- exit(1);
+ size_t l = strlen(str);
+ char *r;
+
+ if ((r = strndup(str, l)) == NULL) {
+ memory_err(l + 1, errno, fname);
}
- return (ret);
+
+ return (r);
}
/*
@@ -663,16 +766,6 @@ static void
usage()
{
(void) fprintf(stderr, "Usage:\t%s [ -fhs ] [ -t fstab ] [ -m mnttab ] "
- "rawdisk ...\n", progname);
+ "rawdisk ...\n", getprogname());
exit(1);
}
-
-/*
- * warn(): Print an error message. Always returns -1.
- */
-static int
-warn(char *what, char *why)
-{
- (void) fprintf(stderr, "%s: %s: %s\n", progname, what, why);
- return (-1);
-}
diff --git a/usr/src/cmd/ptools/pargs/pargs.c b/usr/src/cmd/ptools/pargs/pargs.c
index e67f49e28f..6d82af21ba 100644
--- a/usr/src/cmd/ptools/pargs/pargs.c
+++ b/usr/src/cmd/ptools/pargs/pargs.c
@@ -623,6 +623,7 @@ get_args(pargs_data_t *datap)
if (read_ptr_array(datap, argvoff, datap->pd_argv, argc) <= 0) {
free(datap->pd_argv);
datap->pd_argv = NULL;
+ datap->pd_argc = 0;
return;
}
diff --git a/usr/src/cmd/sed/main.c b/usr/src/cmd/sed/main.c
index 2ada22edbb..b148f7293e 100644
--- a/usr/src/cmd/sed/main.c
+++ b/usr/src/cmd/sed/main.c
@@ -1,4 +1,5 @@
/*
+ * Copyright 2020 OmniOS Community Edition (OmniOSce) Association.
* Copyright (c) 2013 Johann 'Myrkraverk' Oskarsson <johann@myrkraverk.com>
* Copyright (c) 2011 Gary Mills
* Copyright 2010 Nexenta Systems, Inc. All rights reserved.
@@ -498,10 +499,30 @@ lastline(void)
{
int ch;
- if (files->next != NULL && (inplace == NULL || ispan))
- return (0);
- if ((ch = getc(infile)) == EOF)
+ if (feof(infile) != 0 || (ch = getc(infile)) == EOF) {
+ struct s_flist *f;
+
+ /*
+ * Reached the end of the current input file.
+ * If there are no more that contain data, then this is the
+ * last line.
+ */
+ if (inplace != NULL && ispan == 0)
+ return (1);
+
+ for (f = files->next; f != NULL; f = f->next) {
+ struct stat st;
+
+ if (stat(f->fname, &st) == -1) {
+ /* Treat an error here as an empty file */
+ continue;
+ }
+ if (st.st_size > 0)
+ return (0);
+ }
return (1);
+ }
+
(void) ungetc(ch, infile);
return (0);
}
diff --git a/usr/src/cmd/smbios/smbios.c b/usr/src/cmd/smbios/smbios.c
index 9c6d058182..399a85501e 100644
--- a/usr/src/cmd/smbios/smbios.c
+++ b/usr/src/cmd/smbios/smbios.c
@@ -22,6 +22,7 @@
/*
* Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
* Copyright (c) 2018, Joyent, Inc.
+ * Copyright 2020 Oxide Computer Company
* Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -736,7 +737,7 @@ print_slot(smbios_hdl_t *shp, id_t id, FILE *fp)
oprintf(fp, " Slot Peer %u:\n", i);
oprintf(fp, " Segment group: %u\n",
peer[i].smblp_group);
- oprintf(fp, " Bus/Device/Function: %u/%u/%u",
+ oprintf(fp, " Bus/Device/Function: %u/%u/%u\n",
peer[i].smblp_bus, peer[i].smblp_device,
peer[i].smblp_function);
oprintf(fp, " Electrical width: %u\n",
@@ -745,6 +746,25 @@ print_slot(smbios_hdl_t *shp, id_t id, FILE *fp)
smbios_info_slot_peers_free(shp, npeers, peer);
}
+
+ if (s.smbl_info != 0) {
+ if (s.smbl_type >= SMB_SLT_PCIE &&
+ s.smbl_type <= SMB_SLT_PCIEG6P) {
+ oprintf(fp, " PCIe Generation: %d\n", s.smbl_info);
+ } else {
+ oprintf(fp, " Slot Type: 0x%x\n", s.smbl_info);
+ }
+ }
+
+ if (s.smbl_pwidth != 0) {
+ desc_printf(smbios_slot_width_desc(s.smbl_pwidth),
+ fp, " Physical Width: 0x%x", s.smbl_pwidth);
+ }
+
+ if (s.smbl_pitch != 0) {
+ oprintf(fp, " Slot Pitch: %u.%u mm\n", s.smbl_pitch / 100,
+ s.smbl_pitch % 100);
+ }
}
static void
diff --git a/usr/src/cmd/smbsrv/smbd/smbd_krb5lookup.c b/usr/src/cmd/smbsrv/smbd/smbd_krb5lookup.c
index af98b15b1b..83bc6b21d2 100644
--- a/usr/src/cmd/smbsrv/smbd/smbd_krb5lookup.c
+++ b/usr/src/cmd/smbsrv/smbd/smbd_krb5lookup.c
@@ -10,7 +10,7 @@
*/
/*
- * Copyright 2014 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2020 Nexenta by DDN, Inc. All rights reserved.
*/
#include <stdio.h>
@@ -26,6 +26,7 @@
#include <sys/note.h>
#include <smbsrv/libsmbns.h>
+#include <ads/dsgetdc.h>
#include "smbd.h"
#include "locate_plugin.h"
@@ -107,6 +108,13 @@ _krb5_override_service_locator(
dxi.d_dci.dc_addr.a_family == 0)
return (KRB5_REALM_CANT_RESOLVE);
+ if ((dxi.d_dci.dc_flags & DS_KDC_FLAG) == 0) {
+ smbd_report("_krb5_override_service_locator: "
+ "Domain Controller is not a KDC: "
+ "Kerberos auth may be slow");
+ return (rc);
+ }
+
switch (family) {
case AF_UNSPEC:
break; /* OK */