Blame usage.c

Packit 6f02de
/*
Packit 6f02de
 * usage.c - usage functions for lsof
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * Copyright 1998 Purdue Research Foundation, West Lafayette, Indiana
Packit 6f02de
 * 47907.  All rights reserved.
Packit 6f02de
 *
Packit 6f02de
 * Written by Victor A. Abell
Packit 6f02de
 *
Packit 6f02de
 * This software is not subject to any license of the American Telephone
Packit 6f02de
 * and Telegraph Company or the Regents of the University of California.
Packit 6f02de
 *
Packit 6f02de
 * Permission is granted to anyone to use this software for any purpose on
Packit 6f02de
 * any computer system, and to alter it and redistribute it freely, subject
Packit 6f02de
 * to the following restrictions:
Packit 6f02de
 *
Packit 6f02de
 * 1. Neither the authors nor Purdue University are responsible for any
Packit 6f02de
 *    consequences of the use of this software.
Packit 6f02de
 *
Packit 6f02de
 * 2. The origin of this software must not be misrepresented, either by
Packit 6f02de
 *    explicit claim or by omission.  Credit to the authors and Purdue
Packit 6f02de
 *    University must appear in documentation and sources.
Packit 6f02de
 *
Packit 6f02de
 * 3. Altered versions must be plainly marked as such, and must not be
Packit 6f02de
 *    misrepresented as being the original software.
Packit 6f02de
 *
Packit 6f02de
 * 4. This notice may not be removed or altered.
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
#ifndef lint
Packit 6f02de
static char copyright[] =
Packit 6f02de
"@(#) Copyright 1998 Purdue Research Foundation.\nAll rights reserved.\n";
Packit 6f02de
static char *rcsid = "$Id: usage.c,v 1.33 2018/02/14 14:20:14 abe Exp $";
Packit 6f02de
#endif
Packit 6f02de
Packit 6f02de
Packit 6f02de
#include "lsof.h"
Packit 6f02de
#include "version.h"
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * Local function prototypes
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
_PROTOTYPE(static char *isnullstr,(char *s));
Packit 6f02de
_PROTOTYPE(static int print_in_col,(int col, char *cp));
Packit 6f02de
_PROTOTYPE(static void report_HASDCACHE,(int type, char *ttl, char *det));
Packit 6f02de
_PROTOTYPE(static void report_HASKERNIDCK,(char *pfx, char *verb));
Packit 6f02de
_PROTOTYPE(static void report_SECURITY,(char *pfx, char *punct));
Packit 6f02de
_PROTOTYPE(static void report_WARNDEVACCESS,(char *pfx, char *verb,
Packit 6f02de
					     char *punct));
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * isnullstr() - is it a null string?
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static char *
Packit 6f02de
isnullstr(s)
Packit 6f02de
	char *s;			/* string pointer */
Packit 6f02de
{
Packit 6f02de
	if (!s)
Packit 6f02de
		return((char *)NULL);
Packit 6f02de
	while (*s) {
Packit 6f02de
		if (*s != ' ')
Packit 6f02de
			return(s);
Packit 6f02de
		s++;
Packit 6f02de
	}
Packit 6f02de
	return((char *)NULL);
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * print_in_col() -- print character string in help column
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static int
Packit 6f02de
print_in_col(col, cp)
Packit 6f02de
	int col;				/* column number */
Packit 6f02de
	char *cp;				/* what to print */
Packit 6f02de
{
Packit 6f02de
	if (cp && *cp) {
Packit 6f02de
	    switch (col) {
Packit 6f02de
	    case 1:
Packit 6f02de
		(void) fprintf(stderr, "  %-23.23s", cp);
Packit 6f02de
		break;
Packit 6f02de
	    case 2:
Packit 6f02de
		(void) fprintf(stderr, "  %-25.25s", cp);
Packit 6f02de
		break;
Packit 6f02de
	    default:
Packit 6f02de
		(void) fprintf(stderr, "  %s\n", cp);
Packit 6f02de
		col = 0;
Packit 6f02de
	    }
Packit 6f02de
	    col++;
Packit 6f02de
	}
Packit 6f02de
	return(col);
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * report_HASDCACHE() -- report device cache file state
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static void
Packit 6f02de
report_HASDCACHE(type, ttl, det)
Packit 6f02de
	int type;				/* type: 0 == read path report
Packit 6f02de
						 *       1 == full report */
Packit 6f02de
	char *ttl;				/* title lines prefix
Packit 6f02de
						 * (NULL if none) */
Packit 6f02de
	char *det;				/* detail lines prefix
Packit 6f02de
						 * (NULL if none) */
Packit 6f02de
{
Packit 6f02de
Packit 6f02de
#if	defined(HASDCACHE)
Packit 6f02de
	char *cp;
Packit 6f02de
	int dx;
Packit 6f02de
Packit 6f02de
# if	defined(WILLDROPGID)
Packit 6f02de
	int saved_Setgid = Setgid;
Packit 6f02de
Packit 6f02de
	Setgid = 0;
Packit 6f02de
# endif	/* defined(WILLDROPGID) */
Packit 6f02de
Packit 6f02de
	if (type) {
Packit 6f02de
Packit 6f02de
	/*
Packit 6f02de
	 * Report full device cache information.
Packit 6f02de
	 */
Packit 6f02de
	    (void) fprintf(stderr, "%sDevice cache file read-only paths:\n",
Packit 6f02de
		ttl ? ttl : "");
Packit 6f02de
	    if ((dx = dcpath(1, 0)) < 0)
Packit 6f02de
		(void) fprintf(stderr, "%snone\n", det ? det : "");
Packit 6f02de
	    else {
Packit 6f02de
		(void) fprintf(stderr, "%sNamed via -D: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    DCpath[0] ? DCpath[0] : "none");
Packit 6f02de
Packit 6f02de
# if	defined(HASENVDC)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sNamed in environment variable %s: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASENVDC, DCpath[1] ? DCpath[1] : "none");
Packit 6f02de
# endif	/* defined(HASENVDC) */
Packit 6f02de
Packit 6f02de
# if	defined(HASSYSDC)
Packit 6f02de
		if (DCpath[2])
Packit 6f02de
		    (void) fprintf(stderr,
Packit 6f02de
			"%sSystem-wide device cache: %s\n",
Packit 6f02de
			det ? det : "",
Packit 6f02de
			DCpath[2]);
Packit 6f02de
# endif	/* defined(HASSYSDC) */
Packit 6f02de
Packit 6f02de
# if	defined(HASPERSDC)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sPersonal path format (HASPERSDC): \"%s\"\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDC);
Packit 6f02de
#  if	defined(HASPERSDCPATH)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sModified personal path environment variable: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDCPATH);
Packit 6f02de
		cp = getenv(HASPERSDCPATH);
Packit 6f02de
		(void) fprintf(stderr, "%s%s value: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDCPATH, cp ? cp : "none");
Packit 6f02de
#  endif	/* defined(HASPERSDCPATH) */
Packit 6f02de
		(void) fprintf(stderr, "%sPersonal path: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    DCpath[3] ? DCpath[3] : "none");
Packit 6f02de
# endif	/* defined(HASPERSDC) */
Packit 6f02de
	    }
Packit 6f02de
	    (void) fprintf(stderr, "%sDevice cache file write paths:\n",
Packit 6f02de
		ttl ? ttl : "");
Packit 6f02de
	    if ((dx = dcpath(2, 0)) < 0)
Packit 6f02de
		(void) fprintf(stderr, "%snone\n", det ? det : "");
Packit 6f02de
	    else {
Packit 6f02de
		(void) fprintf(stderr, "%sNamed via -D: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    DCstate == 2 ? "none"
Packit 6f02de
				 : DCpath[0] ? DCpath[0] : "none");
Packit 6f02de
Packit 6f02de
# if	defined(HASENVDC)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sNamed in environment variable %s: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASENVDC, DCpath[1] ? DCpath[1] : "none");
Packit 6f02de
# endif	/* defined(HASENVDC) */
Packit 6f02de
Packit 6f02de
# if	defined(HASPERSDC)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sPersonal path format (HASPERSDC): \"%s\"\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDC);
Packit 6f02de
#  if	defined(HASPERSDCPATH)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%sModified personal path environment variable: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDCPATH);
Packit 6f02de
		cp = getenv(HASPERSDCPATH);
Packit 6f02de
		(void) fprintf(stderr, "%s%s value: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    HASPERSDCPATH, cp ? cp : "none");
Packit 6f02de
#  endif	/* defined(HASPERSDCPATH) */
Packit 6f02de
		 (void) fprintf(stderr, "%sPersonal path: %s\n",
Packit 6f02de
		    det ? det : "",
Packit 6f02de
		    DCpath[3] ? DCpath[3] : "none");
Packit 6f02de
# endif	/* defined(HASPERSDC) */
Packit 6f02de
	    }
Packit 6f02de
	} else {
Packit 6f02de
Packit 6f02de
	/*
Packit 6f02de
	 * Report device cache read file path.
Packit 6f02de
	 */
Packit 6f02de
Packit 6f02de
# if	defined(HASENVDC) || defined(HASPERSDC) || defined(HASSYSDC)
Packit 6f02de
	    cp = NULL;
Packit 6f02de
#  if	defined(HASENVDC)
Packit 6f02de
	    if ((dx = dcpath(1, 0)) >= 0)
Packit 6f02de
		cp = DCpath[1];
Packit 6f02de
#  endif	/* defined(HASENVDC) */
Packit 6f02de
#  if	defined(HASSYSDC)
Packit 6f02de
	    if (!cp)
Packit 6f02de
		cp = HASSYSDC;
Packit 6f02de
#  endif	/* defined(HASSYSDC) */
Packit 6f02de
#  if	defined(HASPERSDC)
Packit 6f02de
	    if (!cp && dx != -1 && (dx = dcpath(1, 0)) >= 0)
Packit 6f02de
		cp = DCpath[3];
Packit 6f02de
#  endif	/* defined(HASPERSDC) */
Packit 6f02de
	    if (cp)
Packit 6f02de
		(void) fprintf(stderr,
Packit 6f02de
		    "%s%s is the default device cache file read path.\n",
Packit 6f02de
		    ttl ? ttl : "",
Packit 6f02de
		    cp
Packit 6f02de
		);
Packit 6f02de
# endif    /* defined(HASENVDC) || defined(HASPERSDC) || defined(HASSYSDC) */
Packit 6f02de
	}
Packit 6f02de
Packit 6f02de
# if	defined(WILLDROPGID)
Packit 6f02de
	Setgid = saved_Setgid;
Packit 6f02de
# endif	/* defined(WILLDROPGID) */
Packit 6f02de
Packit 6f02de
#endif	/* defined(HASDCACHE) */
Packit 6f02de
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * report_HASKERNIDCK() -- report HASKERNIDCK state
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static void
Packit 6f02de
report_HASKERNIDCK(pfx, verb)
Packit 6f02de
	char *pfx;				/* prefix (NULL if none) */
Packit 6f02de
	char *verb;				/* verb (NULL if none) */
Packit 6f02de
{
Packit 6f02de
	(void) fprintf(stderr, "%sernel ID check %s%s%s.\n",
Packit 6f02de
	    pfx ? pfx : "",
Packit 6f02de
	    verb ? verb : "",
Packit 6f02de
	    verb ? " " : "",
Packit 6f02de
Packit 6f02de
#if	defined(HASKERNIDCK)
Packit 6f02de
		"enabled"
Packit 6f02de
#else	/* !defined(HASKERNIDCK) */
Packit 6f02de
		"disabled"
Packit 6f02de
#endif	/* defined(HASKERNIDCK) */
Packit 6f02de
Packit 6f02de
	    );
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * report_SECURITY() -- report *SECURITY states
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static void
Packit 6f02de
report_SECURITY(pfx, punct)
Packit 6f02de
	char *pfx;				/* prefix (NULL if none) */
Packit 6f02de
	char *punct;				/* short foem punctuation
Packit 6f02de
						 * (NULL if none) */
Packit 6f02de
{
Packit 6f02de
	fprintf(stderr, "%s%s can list all files%s",
Packit 6f02de
	    pfx ? pfx : "",
Packit 6f02de
Packit 6f02de
#if	defined(HASSECURITY)
Packit 6f02de
	    "Only root",
Packit 6f02de
# if	defined(HASNOSOCKSECURITY)
Packit 6f02de
	    ", but anyone can list socket files.\n"
Packit 6f02de
# else	/* !defined(HASNOSOCKSECURITY) */
Packit 6f02de
	    punct ? punct : ""
Packit 6f02de
# endif	/* defined(HASNOSOCKSECURITY) */
Packit 6f02de
#else	/* !defined(HASSECURITY) */
Packit 6f02de
	    "Anyone",
Packit 6f02de
	    punct ? punct : ""
Packit 6f02de
#endif	/* defined(HASSECURITY) */
Packit 6f02de
Packit 6f02de
	);
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * report_WARNDEVACCESS() -- report WEARNDEVACCESS state
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
static void
Packit 6f02de
report_WARNDEVACCESS(pfx, verb, punct)
Packit 6f02de
	char *pfx;				/* prefix (NULL if none) */
Packit 6f02de
	char *verb;				/* verb (NULL if none) */
Packit 6f02de
	char *punct;				/* punctuation */
Packit 6f02de
{
Packit 6f02de
	(void) fprintf(stderr, "%s/dev warnings %s%s%s%s",
Packit 6f02de
	    pfx ? pfx : "",
Packit 6f02de
	    verb ? verb : "",
Packit 6f02de
	    verb ? " " : "",
Packit 6f02de
Packit 6f02de
#if	defined(WARNDEVACCESS)
Packit 6f02de
	    "enabled",
Packit 6f02de
#else	/* !defined(WARNDEVACCESS) */
Packit 6f02de
	    "disabled",
Packit 6f02de
#endif	/* defined(WARNDEVACCESS) */
Packit 6f02de
Packit 6f02de
	    punct);
Packit 6f02de
}
Packit 6f02de
Packit 6f02de
Packit 6f02de
/*
Packit 6f02de
 * usage() - display usage and exit
Packit 6f02de
 */
Packit 6f02de
Packit 6f02de
void
Packit 6f02de
usage(xv, fh, version)
Packit 6f02de
	int xv;				/* exit value */
Packit 6f02de
	int fh;				/* ``-F ?'' status */
Packit 6f02de
	int version;			/* ``-v'' status */
Packit 6f02de
{
Packit 6f02de
	char buf[MAXPATHLEN+1], *cp, *cp1, *cp2;
Packit 6f02de
	int col, i;
Packit 6f02de
Packit 6f02de
	if (Fhelp || xv) {
Packit 6f02de
	    (void) fprintf(stderr, "%s %s\n latest revision: %s\n",
Packit 6f02de
		Pn, LSOF_VERSION, LSOF_REPO_URL);
Packit 6f02de
	    (void) fprintf(stderr, " latest FAQ: %s\n", LSOF_FAQ_URL);
Packit 6f02de
	    (void) fprintf(stderr, " latest (non-formatted) man page: %s\n", LSOF_MAN_URL);
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		" usage: [-?ab%sh%slnNoOP%s%stUvV%s]",
Packit 6f02de
Packit 6f02de
#if	defined(HASNCACHE)
Packit 6f02de
		"C",
Packit 6f02de
#else	/* !defined(HASNCACHE) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASNCACHE) */
Packit 6f02de
Packit 6f02de
#if	defined(HASTASKS)
Packit 6f02de
		"K",
Packit 6f02de
#else	/* !defined(HASTASKS) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASTASKS) */
Packit 6f02de
Packit 6f02de
#if	defined(HASPPID)
Packit 6f02de
		"R",
Packit 6f02de
#else	/* !defined(HASPPID) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASPPID) */
Packit 6f02de
Packit 6f02de
#if	defined(HASTCPUDPSTATE)
Packit 6f02de
		"",
Packit 6f02de
#else	/* !defined(HASTCPUDPSTATE) */
Packit 6f02de
		"s",
Packit 6f02de
#endif	/* defined(HASTCPUDPSTATE) */
Packit 6f02de
Packit 6f02de
#if	defined(HASXOPT)
Packit 6f02de
# if	defined(HASXOPT_ROOT)
Packit 6f02de
		(Myuid == 0) ? "X" : ""
Packit 6f02de
# else	/* !defined(HASXOPT_ROOT) */
Packit 6f02de
		"X"
Packit 6f02de
# endif	/* defined(HASXOPT_ROOT) */
Packit 6f02de
#else	/* !defined(HASXOPT) */
Packit 6f02de
		""
Packit 6f02de
#endif	/* defined(HASXOPT) */
Packit 6f02de
Packit 6f02de
	    );
Packit 6f02de
Packit 6f02de
#if	defined(HAS_AFS) && defined(HASAOPT)
Packit 6f02de
	    (void) fprintf(stderr, " [-A A]");
Packit 6f02de
#endif	/* defined(HAS_AFS) && defined(HASAOPT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, " [+|-c c] [+|-d s] [+%sD D]%s",
Packit 6f02de
#if	defined(HASDCACHE)
Packit 6f02de
		"|-",
Packit 6f02de
#else	/* !defined(HASDCACHE) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASDCACHE) */
Packit 6f02de
Packit 6f02de
#if	defined(HASEPTOPTS)
Packit 6f02de
		" [+|-E]"
Packit 6f02de
#else	/* !defined(HASEPTOPTS) */
Packit 6f02de
		""
Packit 6f02de
#endif	/* defined(HASEPTOPTS) */
Packit 6f02de
Packit 6f02de
		);
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		" %s[+|-f%s%s%s%s%s%s]\n [-F [f]] [-g [s]] [-i [i]]",
Packit 6f02de
Packit 6f02de
#if	defined(HASEOPT)
Packit 6f02de
		"[+|-e s] ",
Packit 6f02de
#else	/* !defined(HASEOPT) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASEOPT) */
Packit 6f02de
Packit 6f02de
#if	defined(HASFSTRUCT)
Packit 6f02de
		"[",
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSCOUNT)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSCOUNT) */
Packit 6f02de
		"c",
Packit 6f02de
# endif	/* defined(HASNOFSCOUNT) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSADDR) */
Packit 6f02de
		"f",
Packit 6f02de
# endif	/* defined(HASNOFSADDR) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSFLAGS)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSFLAGS) */
Packit 6f02de
		"gG",
Packit 6f02de
# endif	/* defined(HASNOFSFLAGS) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSNADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSNADDR) */
Packit 6f02de
		"n",
Packit 6f02de
# endif	/* defined(HASNOFSNADDR) */
Packit 6f02de
Packit 6f02de
		"]"
Packit 6f02de
#else	/* !defined(HASFSTRUCT) */
Packit 6f02de
		"", "", "", "", "", ""
Packit 6f02de
#endif	/* defined(HASFSTRUCT) */
Packit 6f02de
Packit 6f02de
		);
Packit 6f02de
Packit 6f02de
#if	defined(HASKOPT)
Packit 6f02de
	    (void) fprintf(stderr, " [-k k]");
Packit 6f02de
#endif	/* defined(HASKOPT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, " [+|-L [l]]");
Packit 6f02de
Packit 6f02de
#if	defined(HASMOPT) || defined(HASMNTSUP)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
# if	defined(HASMOPT)
Packit 6f02de
#  if	defined(HASMNTSUP)
Packit 6f02de
		" [+|-m [m]]"
Packit 6f02de
#  else	/* !defined(HASMNTSUP) */
Packit 6f02de
		" [-m m]"
Packit 6f02de
#  endif	/* defined(HASMNTSUP) */
Packit 6f02de
# else	/* !defined(HASMOPT) */
Packit 6f02de
		" [+m [m]]"
Packit 6f02de
# endif	/* defined(HASMOPT) */
Packit 6f02de
		);
Packit 6f02de
#endif	/* defined(HASMOPT) || defined(HASMNTSUP) */
Packit 6f02de
Packit 6f02de
#if	!defined(HASNORPC_H)
Packit 6f02de
	    (void) fprintf(stderr, " [+|-M]");
Packit 6f02de
#endif	/* !defined(HASNORPC_H) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		" [-o [o]] [-p s]\n [+|-r [t]]%s [-S [t]] [-T [t]]",
Packit 6f02de
Packit 6f02de
#if	defined(HASTCPUDPSTATE)
Packit 6f02de
		" [-s [p:s]]"
Packit 6f02de
#else	/* !defined(HASTCPUDPSTATE) */
Packit 6f02de
		""
Packit 6f02de
#endif	/* defined(HASTCPUDPSTATE) */
Packit 6f02de
Packit 6f02de
		);
Packit 6f02de
	    (void) fprintf(stderr, " [-u s] [+|-w] [-x [fl]]");
Packit 6f02de
Packit 6f02de
#if	defined(HASZONES)
Packit 6f02de
	    (void) fprintf(stderr, " [-z [z]]");
Packit 6f02de
#else	/* !defined(HASZONES) */
Packit 6f02de
# if	defined(HASSELINUX)
Packit 6f02de
	    if (CntxStatus)
Packit 6f02de
		(void) fprintf(stderr, " [-Z [Z]]");
Packit 6f02de
# endif	/* defined(HASSELINUX) */
Packit 6f02de
#endif	/* defined(HASZONES) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, " [--] [names]\n");
Packit 6f02de
	}
Packit 6f02de
	if (xv && !Fhelp) {
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"Use the ``-h'' option to get more help information.\n");
Packit 6f02de
	    if (!fh)
Packit 6f02de
    		Exit(xv);
Packit 6f02de
	}
Packit 6f02de
	if (Fhelp) {
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"Defaults in parentheses; comma-separated set (s) items;");
Packit 6f02de
	    (void) fprintf(stderr, " dash-separated ranges.\n");
Packit 6f02de
	    col = print_in_col(1, "-?|-h list help");
Packit 6f02de
	    col = print_in_col(col, "-a AND selections (OR)");
Packit 6f02de
	    col = print_in_col(col, "-b avoid kernel blocks");
Packit 6f02de
	    col = print_in_col(col,  "-c c  cmd c ^c /c/[bix]");
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "+c w  COMMAND width (%d)", CMDL);
Packit 6f02de
	    col = print_in_col(col, buf);
Packit 6f02de
Packit 6f02de
#if	defined(HASNCACHE)
Packit 6f02de
	   col = print_in_col(col, "-C no kernel name cache");
Packit 6f02de
#endif	/* defined(HASNCACHE) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, "+d s  dir s files");
Packit 6f02de
	    col = print_in_col(col,  "-d s  select by FD set");
Packit 6f02de
	    col = print_in_col(col,  "+D D  dir D tree *SLOW?*");
Packit 6f02de
Packit 6f02de
#if	defined(HASDCACHE)
Packit 6f02de
	    if (Setuidroot)
Packit 6f02de
		cp = "?|i|r";
Packit 6f02de
Packit 6f02de
# if	!defined(WILLDROPGID)
Packit 6f02de
	    else if (Myuid)
Packit 6f02de
		cp = "?|i|r<path>";
Packit 6f02de
# endif	/* !defined(WILLDROPGID) */
Packit 6f02de
Packit 6f02de
	    else
Packit 6f02de
		cp = "?|i|b|r|u[path]";
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "-D D  %s", cp);
Packit 6f02de
#else	/* !defined(HASDCACHE) */
Packit 6f02de
	    buf[0] = '\0';
Packit 6f02de
#endif	/* defined(HASDCACHE) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, buf);
Packit 6f02de
Packit 6f02de
#if	defined(HASEOPT)
Packit 6f02de
	    col = print_in_col(col, "+|-e s  exempt s *RISKY*");
Packit 6f02de
#endif	/* defined(HASEOPT) */
Packit 6f02de
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "-i select IPv%s files",
Packit 6f02de
Packit 6f02de
#if	defined(HASIPv6)
Packit 6f02de
			  "[46]"
Packit 6f02de
#else	/* !defined(HASIPv6) */
Packit 6f02de
			  "4"
Packit 6f02de
#endif	/* defined(HASIPv6) */
Packit 6f02de
Packit 6f02de
			  );
Packit 6f02de
	    col = print_in_col(col, buf);
Packit 6f02de
Packit 6f02de
#if	defined(HASTASKS)
Packit 6f02de
/* DEBUG	    col = print_in_col(col, "-K list tasKs (threads)");	*/
Packit 6f02de
	    col = print_in_col(col, "-K [i] list|(i)gn tasKs");
Packit 6f02de
#endif	/* defined(HASTASKS) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, "-l list UID numbers");
Packit 6f02de
	    col = print_in_col(col, "-n no host names");
Packit 6f02de
	    col = print_in_col(col, "-N select NFS files");
Packit 6f02de
	    col = print_in_col(col, "-o list file offset");
Packit 6f02de
	    col = print_in_col(col, "-O no overhead *RISKY*");
Packit 6f02de
	    col = print_in_col(col, "-P no port names");
Packit 6f02de
Packit 6f02de
#if	defined(HASPPID)
Packit 6f02de
	     col = print_in_col(col, "-R list paRent PID");
Packit 6f02de
#endif	/* defined(HASPPID) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col,  "-s list file size");
Packit 6f02de
	    col = print_in_col(col,  "-t terse listing");
Packit 6f02de
	    col = print_in_col(col,  "-T disable TCP/TPI info");
Packit 6f02de
	    col = print_in_col(col,  "-U select Unix socket");
Packit 6f02de
	    col = print_in_col(col,  "-v list version info");
Packit 6f02de
	    col = print_in_col(col,  "-V verbose search");
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "+|-w  Warnings (%s)",
Packit 6f02de
Packit 6f02de
#if	defined(WARNINGSTATE)
Packit 6f02de
		"-");
Packit 6f02de
#else	/* !defined(WARNINGSTATE) */
Packit 6f02de
		"+");
Packit 6f02de
#endif	/* defined(WARNINGSTATE) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, buf);
Packit 6f02de
Packit 6f02de
#if	defined(HASXOPT)
Packit 6f02de
# if	defined(HASXOPT_ROOT)
Packit 6f02de
	    if (Myuid == 0)
Packit 6f02de
		(void) snpf(buf, sizeof(buf), "-X %s", HASXOPT);
Packit 6f02de
	    else
Packit 6f02de
		buf[0] = '\0';
Packit 6f02de
# else	/* !defined(HASXOPT_ROOT) */
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "-X %s", HASXOPT);
Packit 6f02de
# endif	/* defined(HASXOPT_ROOT) */
Packit 6f02de
# else	/* !defined(HASXOPT) */
Packit 6f02de
	    buf[0] = '\0';
Packit 6f02de
#endif	/* defined(HASXOPT) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, buf);
Packit 6f02de
Packit 6f02de
#if	defined(HASZONES)
Packit 6f02de
	    col = print_in_col(col, "-z z  zone [z]");
Packit 6f02de
#endif	/* defined(HASZONES) */
Packit 6f02de
Packit 6f02de
#if	defined(HASSELINUX)
Packit 6f02de
	    col = print_in_col(col, "-Z Z  context [Z]");
Packit 6f02de
#endif	/* defined(HASSELINUX) */
Packit 6f02de
Packit 6f02de
	    col = print_in_col(col, "-- end option scan");
Packit 6f02de
	    if (col != 1)
Packit 6f02de
		(void) fprintf(stderr, "\n");
Packit 6f02de
Packit 6f02de
#if	defined(HASEPTOPTS)
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s  %s\n",
Packit 6f02de
		"-E display endpoint info",
Packit 6f02de
		"+E display endpoint info and files"
Packit 6f02de
	    );
Packit 6f02de
#endif	/* defined(HASEPTOPTS) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s",
Packit 6f02de
		"+f|-f  +filesystem or -file names");
Packit 6f02de
Packit 6f02de
#if	defined(HASFSTRUCT)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  +|-f[%s%s%s%s]%s%s%s%s %s%s%s%s%s%s%s\n",
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSCOUNT)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSCOUNT) */
Packit 6f02de
		"c",
Packit 6f02de
# endif	/* defined(HASNOFSCOUNT) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSADDR) */
Packit 6f02de
		"f",
Packit 6f02de
# endif	/* defined(HASNOFSADDR) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSFLAGS)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSFLAGS) */
Packit 6f02de
		"gG",
Packit 6f02de
# endif	/* defined(HASNOFSFLAGS) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSNADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSNADDR) */
Packit 6f02de
		"n",
Packit 6f02de
# endif	/* defined(HASNOFSNADDR) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSCOUNT)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSCOUNT) */
Packit 6f02de
		" Ct",
Packit 6f02de
# endif	/* defined(HASNOFSCOUNT) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSADDR) */
Packit 6f02de
		" Fstr",
Packit 6f02de
# endif	/* defined(HASNOFSADDR) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSFLAGS)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSFLAGS) */
Packit 6f02de
		" flaGs",
Packit 6f02de
# endif	/* defined(HASNOFSFLAGS) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSNADDR)
Packit 6f02de
		"",
Packit 6f02de
# else	/* !defined(HASNOFSNADDR) */
Packit 6f02de
		" Node",
Packit 6f02de
# endif	/* defined(HASNOFSNADDR) */
Packit 6f02de
Packit 6f02de
		Fsv ? "(" : "",
Packit 6f02de
		(Fsv & FSV_CT) ? "C" : "",
Packit 6f02de
		(Fsv & FSV_FA) ? "F" : "",
Packit 6f02de
		((Fsv & FSV_FG) && FsvFlagX)  ? "g" : "",
Packit 6f02de
		((Fsv & FSV_FG) && !FsvFlagX) ? "G" : "",
Packit 6f02de
		(Fsv & FSV_NI) ? "N" : "",
Packit 6f02de
		Fsv ? ")" : "");
Packit 6f02de
#else	/* !defined(HASFSTRUCT) */
Packit 6f02de
	    putc('\n', stderr);
Packit 6f02de
#endif	/* defined(HASFSTRUCT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s",
Packit 6f02de
		"-F [f] select fields; -F? for help");
Packit 6f02de
Packit 6f02de
#if	defined(HASKOPT)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -k k   kernel symbols (%s)\n",
Packit 6f02de
		Nmlst ? Nmlst
Packit 6f02de
# if	defined(N_UNIX)
Packit 6f02de
		      : N_UNIX
Packit 6f02de
# else	/* !defined(N_UNIX) */
Packit 6f02de
		      : (Nmlst = get_nlist_path(1)) ? Nmlst
Packit 6f02de
						    : "none found"
Packit 6f02de
# endif	/* defined(N_UNIX) */
Packit 6f02de
Packit 6f02de
	    );
Packit 6f02de
#else	/* !defined(HASKOPT) */
Packit 6f02de
	    putc('\n', stderr);
Packit 6f02de
#endif	/* defined(HASKOPT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  +|-L [l] list (+) suppress (-) link counts < l (0 = all; default = 0)\n");
Packit 6f02de
Packit 6f02de
#if	defined(HASMOPT) || defined(HASMNTSUP)
Packit 6f02de
# if	defined(HASMOPT)
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "-m m   kernel memory (%s)", KMEM);
Packit 6f02de
# else	/* !defined(HASMOPT) */
Packit 6f02de
	    buf[0] = '\0';
Packit 6f02de
# endif	/* defined(HASMOPT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s", buf);
Packit 6f02de
Packit 6f02de
# if	defined(HASMNTSUP)
Packit 6f02de
	    (void) fprintf(stderr, "  +m [m] use|create mount supplement\n");
Packit 6f02de
# else	/* !defined(HASMNTSUP) */
Packit 6f02de
	    (void) fprintf(stderr, "\n");
Packit 6f02de
# endif	/* defined(HASMNTSUP) */
Packit 6f02de
#endif	/* defined(HASMOPT) || defined(HASMNTSUP) */
Packit 6f02de
Packit 6f02de
#if	!defined(HASNORPC_H)
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "+|-M   portMap registration (%s)",
Packit 6f02de
Packit 6f02de
# if	defined(HASPMAPENABLED)
Packit 6f02de
		"+"
Packit 6f02de
# else	/* !defined(HASPMAPENABLED) */
Packit 6f02de
		"-"
Packit 6f02de
# endif	/* defined(HASPMAPENABLED) */
Packit 6f02de
Packit 6f02de
	    );
Packit 6f02de
#else	/* defined(HASNORPC_H) */
Packit 6f02de
	    buf[0] = '\0';
Packit 6f02de
#endif	/* !defined(HASNORPC_H) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s", buf);
Packit 6f02de
	    (void) snpf(buf, sizeof(buf), "-o o   o 0t offset digits (%d)",
Packit 6f02de
		OFFDECDIG);
Packit 6f02de
	    (void) fprintf(stderr, "  %s\n", buf);
Packit 6f02de
	    (void) fprintf(stderr, "  %-36.36s",
Packit 6f02de
		"-p s   exclude(^)|select PIDs");
Packit 6f02de
	    (void) fprintf(stderr, "  -S [t] t second stat timeout (%d)\n",
Packit 6f02de
		TMLIMIT);
Packit 6f02de
	    (void) snpf(buf, sizeof(buf),
Packit 6f02de
		"-T %s%ss%s TCP/TPI %s%sSt%s (s) info",
Packit 6f02de
Packit 6f02de
#if	defined(HASSOOPT) || defined(HASSOSTATE) || defined(HASTCPOPT)
Packit 6f02de
		"f",
Packit 6f02de
#else	/* !defined(HASSOOPT) && !defined(HASSOSTATE) && !defined(HASTCPOPT)*/
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASSOOPT) || defined(HASSOSTATE) || defined(HASTCPOPT)*/
Packit 6f02de
Packit 6f02de
#if 	defined(HASTCPTPIQ)
Packit 6f02de
		"q",
Packit 6f02de
#else	/* !defined(HASTCPTPIQ) */
Packit 6f02de
		" ",
Packit 6f02de
#endif	/* defined(HASTCPTPIQ) */
Packit 6f02de
Packit 6f02de
#if 	defined(HASTCPTPIW)
Packit 6f02de
		"w",
Packit 6f02de
#else	/* !defined(HASTCPTPIW) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASTCPTPIW) */
Packit 6f02de
Packit 6f02de
#if	defined(HASSOOPT) || defined(HASSOSTATE) || defined(HASTCPOPT)
Packit 6f02de
		"Fl,",
Packit 6f02de
#else	/* !defined(HASSOOPT) && !defined(HASSOSTATE) && !defined(HASTCPOPT)*/
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASSOOPT) || defined(HASSOSTATE) || defined(HASTCPOPT)*/
Packit 6f02de
Packit 6f02de
#if 	defined(HASTCPTPIQ)
Packit 6f02de
		"Q,",
Packit 6f02de
#else	/* !defined(HASTCPTPIQ) */
Packit 6f02de
		"",
Packit 6f02de
#endif	/* defined(HASTCPTPIQ) */
Packit 6f02de
Packit 6f02de
#if 	defined(HASTCPTPIW)
Packit 6f02de
		",Win"
Packit 6f02de
#else	/* !defined(HASTCPTPIW) */
Packit 6f02de
		""
Packit 6f02de
#endif	/* defined(HASTCPTPIW) */
Packit 6f02de
Packit 6f02de
	    );
Packit 6f02de
	    (void) fprintf(stderr, "  %s\n", buf);
Packit 6f02de
Packit 6f02de
#if	defined(HAS_AFS) && defined(HASAOPT)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -A A   AFS name list file (%s)\n", AFSAPATHDEF);
Packit 6f02de
#endif	/* defined(HAS_AFS) && defined(HASAOPT) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -g [s] exclude(^)|select and print process group IDs\n");
Packit 6f02de
	    (void) fprintf(stderr, "  -i i   select by IPv%s address:",
Packit 6f02de
Packit 6f02de
#if	defined(HASIPv6)
Packit 6f02de
			  "[46]"
Packit 6f02de
#else	/* !defined(HASIPv6) */
Packit 6f02de
			  "4"
Packit 6f02de
#endif	/* defined(HASIPv6) */
Packit 6f02de
Packit 6f02de
			  );
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		" [%s][proto][@host|addr][:svc_list|port_list]\n",
Packit 6f02de
Packit 6f02de
#if	defined(HASIPv6)
Packit 6f02de
		"46"
Packit 6f02de
#else	/* !defined(HASIPv6) */
Packit 6f02de
		"4"
Packit 6f02de
#endif	/* defined(HASIPv6) */
Packit 6f02de
Packit 6f02de
		);
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  +|-r [%s] repeat every t seconds (%d); %s",
Packit 6f02de
Packit 6f02de
#if	defined(HAS_STRFTIME)
Packit 6f02de
		"t[m<fmt>]",
Packit 6f02de
#else	/* !defined(has_STRFTIME) */
Packit 6f02de
		"t",
Packit 6f02de
#endif	/* defined(HAS_STRFTIME) */
Packit 6f02de
Packit 6f02de
		RPTTM,
Packit 6f02de
		" + until no files, - forever.\n");
Packit 6f02de
Packit 6f02de
#if	defined(HAS_STRFTIME)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"       An optional suffix to t is m<fmt>; m must separate %s",
Packit 6f02de
		"t from <fmt> and\n");
Packit 6f02de
	    (void) fprintf(stderr, "      <fmt> is an strftime(3) format %s",
Packit 6f02de
		"for the marker line.\n");
Packit 6f02de
#endif	/* defined(HAS_STRFTIME) */
Packit 6f02de
Packit 6f02de
#if	defined(HASTCPUDPSTATE)
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -s p:s  exclude(^)|select protocol (p = TCP|UDP) states");
Packit 6f02de
	    (void) fprintf(stderr, " by name(s).\n");
Packit 6f02de
#endif	/* defined(HASTCPUDPSTATE) */
Packit 6f02de
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -u s   exclude(^)|select login|UID set s\n");
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  -x [fl] cross over +d|+D File systems or symbolic Links\n");
Packit 6f02de
	    (void) fprintf(stderr,
Packit 6f02de
		"  names  select named files or files on named file systems\n");
Packit 6f02de
	    (void) report_SECURITY(NULL, "; ");
Packit 6f02de
	    (void) report_WARNDEVACCESS(NULL, NULL, ";");
Packit 6f02de
	    (void) report_HASKERNIDCK(" k", NULL);
Packit 6f02de
	    (void) report_HASDCACHE(0, NULL, NULL);
Packit 6f02de
Packit 6f02de
#if	defined(DIALECT_WARNING)
Packit 6f02de
	    (void) fprintf(stderr, "WARNING: %s\n", DIALECT_WARNING);
Packit 6f02de
#endif	/* defined(DIALECT_WARNING) */
Packit 6f02de
Packit 6f02de
	}
Packit 6f02de
	if (fh) {
Packit 6f02de
	    (void) fprintf(stderr, "%s:\tID    field description\n", Pn);
Packit 6f02de
	    for (i = 0; FieldSel[i].nm; i++) {
Packit 6f02de
Packit 6f02de
#if	!defined(HASPPID)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_PPID)
Packit 6f02de
		    continue;
Packit 6f02de
#endif	/* !defined(HASPPID) */
Packit 6f02de
Packit 6f02de
#if	!defined(HASFSTRUCT)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_FA
Packit 6f02de
		||  FieldSel[i].id == LSOF_FID_CT
Packit 6f02de
		||  FieldSel[i].id == LSOF_FID_FG
Packit 6f02de
		||  FieldSel[i].id == LSOF_FID_NI)
Packit 6f02de
		    continue;
Packit 6f02de
#else	/* defined(HASFSTRUCT) */
Packit 6f02de
# if	defined(HASNOFSADDR)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_FA)
Packit 6f02de
		    continue;
Packit 6f02de
# endif	/* defined(HASNOFSADDR) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSCOUNT)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_CT)
Packit 6f02de
		    continue;
Packit 6f02de
# endif	/* !defined(HASNOFSCOUNT) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSFLAGS)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_FG)
Packit 6f02de
		    continue;
Packit 6f02de
# endif	/* defined(HASNOFSFLAGS) */
Packit 6f02de
Packit 6f02de
# if	defined(HASNOFSNADDR)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_NI)
Packit 6f02de
		    continue;
Packit 6f02de
# endif	/* defined(HASNOFSNADDR) */
Packit 6f02de
#endif	/* !defined(HASFSTRUCT) */
Packit 6f02de
Packit 6f02de
#if	!defined(HASZONES)
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_ZONE)
Packit 6f02de
		    continue;
Packit 6f02de
#endif	/* !defined(HASZONES) */
Packit 6f02de
 
Packit 6f02de
#if	defined(HASSELINUX)
Packit 6f02de
		if ((FieldSel[i].id == LSOF_FID_CNTX) && !CntxStatus)
Packit 6f02de
		    continue;
Packit 6f02de
#else	/* !defined(HASSELINUX) */
Packit 6f02de
		if (FieldSel[i].id == LSOF_FID_CNTX)
Packit 6f02de
		    continue;
Packit 6f02de
#endif	/* !defined(HASSELINUX) */
Packit 6f02de
Packit 6f02de
		(void) fprintf(stderr, "\t %c    %s\n",
Packit 6f02de
		    FieldSel[i].id, FieldSel[i].nm);
Packit 6f02de
	    }
Packit 6f02de
	}
Packit 6f02de
Packit 6f02de
#if	defined(HASDCACHE)
Packit 6f02de
	if (DChelp)
Packit 6f02de
	    report_HASDCACHE(1, NULL, "    ");
Packit 6f02de
#endif	/* defined(HASDCACHE) */
Packit 6f02de
Packit 6f02de
	if (version) {
Packit 6f02de
Packit 6f02de
	/*
Packit 6f02de
	 * Display version information in reponse to ``-v''.
Packit 6f02de
	 */
Packit 6f02de
	    (void) fprintf(stderr, "%s version information:\n", Pn);
Packit 6f02de
	    (void) fprintf(stderr, "    revision: %s\n", LSOF_VERSION);
Packit 6f02de
	    (void) fprintf(stderr, "    latest revision: %s\n", LSOF_REPO_URL);
Packit 6f02de
	    (void) fprintf(stderr, "    latest FAQ: %s\n",
Packit 6f02de
		LSOF_FAQ_URL);
Packit 6f02de
	    (void) fprintf(stderr, "    latest (non-formatted) man page: %s\n",
Packit 6f02de
		LSOF_MAN_URL);
Packit 6f02de
Packit 6f02de
#if	defined(LSOF_CINFO)
Packit 6f02de
	    if ((cp = isnullstr(LSOF_CINFO)))
Packit 6f02de
		(void) fprintf(stderr, "    configuration info: %s\n", cp);
Packit 6f02de
#endif	/* defined(LSOF_CINFO) */
Packit 6f02de
Packit 6f02de
	    if ((cp = isnullstr(LSOF_CCDATE)))
Packit 6f02de
		(void) fprintf(stderr, "    constructed: %s\n", cp);
Packit 6f02de
	    cp = isnullstr(LSOF_HOST);
Packit 6f02de
	    if (!(cp1 = isnullstr(LSOF_LOGNAME)))
Packit 6f02de
		cp1 = isnullstr(LSOF_USER);
Packit 6f02de
	    if (cp || cp1) {
Packit 6f02de
		if (cp && cp1)
Packit 6f02de
		    cp2 = "by and on";
Packit 6f02de
		else if (cp)
Packit 6f02de
		    cp2 = "on";
Packit 6f02de
		else
Packit 6f02de
		    cp2 = "by";
Packit 6f02de
		(void) fprintf(stderr, "    constructed %s: %s%s%s\n",
Packit 6f02de
		    cp2,
Packit 6f02de
		    cp1 ? cp1 : "",
Packit 6f02de
		    (cp && cp1) ? "@" : "",
Packit 6f02de
		    cp  ? cp  : ""
Packit 6f02de
		);
Packit 6f02de
	    }
Packit 6f02de
Packit 6f02de
#if	defined(LSOF_BLDCMT)
Packit 6f02de
	    if ((cp = isnullstr(LSOF_BLDCMT)))
Packit 6f02de
		(void) fprintf(stderr, "    builder's comment: %s\n", cp);
Packit 6f02de
#endif	/* defined(LSOF_BLDCMT) */
Packit 6f02de
Packit 6f02de
	    if ((cp = isnullstr(LSOF_CC)))
Packit 6f02de
		(void) fprintf(stderr, "    compiler: %s\n", cp);
Packit 6f02de
	    if ((cp = isnullstr(LSOF_CCV)))
Packit 6f02de
		(void) fprintf(stderr, "    compiler version: %s\n", cp);
Packit 6f02de
	    if ((cp = isnullstr(LSOF_CCFLAGS)))
Packit 6f02de
		(void) fprintf(stderr, "    compiler flags: %s\n", cp);
Packit 6f02de
	    if ((cp = isnullstr(LSOF_LDFLAGS)))
Packit 6f02de
		(void) fprintf(stderr, "    loader flags: %s\n", cp);
Packit 6f02de
	    if ((cp = isnullstr(LSOF_SYSINFO)))
Packit 6f02de
		(void) fprintf(stderr, "    system info: %s\n", cp);
Packit 6f02de
	    (void) report_SECURITY("    ", ".\n");
Packit 6f02de
	    (void) report_WARNDEVACCESS("    ", "are", ".\n");
Packit 6f02de
	    (void) report_HASKERNIDCK("    K", "is");
Packit 6f02de
Packit 6f02de
#if	defined(DIALECT_WARNING)
Packit 6f02de
	    (void) fprintf(stderr, "    WARNING: %s\n", DIALECT_WARNING);
Packit 6f02de
#endif	/* defined(DIALECT_WARNING) */
Packit 6f02de
Packit 6f02de
	    (void) report_HASDCACHE(1, "    ", "\t");
Packit 6f02de
	}
Packit 6f02de
	Exit(xv);
Packit 6f02de
}