[Midnightbsd-cvs] src [11079] trunk/contrib/top: update top

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Tue Jun 19 10:14:34 EDT 2018


Revision: 11079
          http://svnweb.midnightbsd.org/src/?rev=11079
Author:   laffer1
Date:     2018-06-19 10:14:33 -0400 (Tue, 19 Jun 2018)
Log Message:
-----------
update top

Modified Paths:
--------------
    trunk/contrib/top/commands.c
    trunk/contrib/top/display.c
    trunk/contrib/top/display.h
    trunk/contrib/top/layout.h
    trunk/contrib/top/machine.h
    trunk/contrib/top/screen.c
    trunk/contrib/top/screen.h
    trunk/contrib/top/sigconv.awk
    trunk/contrib/top/top.c
    trunk/contrib/top/top.h
    trunk/contrib/top/username.c
    trunk/contrib/top/utils.c
    trunk/contrib/top/utils.h
    trunk/contrib/top/version.c

Added Paths:
-----------
    trunk/contrib/top/MIDNIGHTBSD-upgrade
    trunk/contrib/top/commands.h
    trunk/contrib/top/top.local.hs
    trunk/contrib/top/top.xs
    trunk/contrib/top/username.h

Added: trunk/contrib/top/MIDNIGHTBSD-upgrade
===================================================================
--- trunk/contrib/top/MIDNIGHTBSD-upgrade	                        (rev 0)
+++ trunk/contrib/top/MIDNIGHTBSD-upgrade	2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,17 @@
+$MidnightBSD$
+
+The upstream project pages for top(1) are:
+
+	http://www.unixtop.org/
+
+	https://sourceforge.net/projects/unixtop/
+
+contrib/top/machine.h specifies an interface that must be provided by the
+target OS.  That interface is implemented in usr.bin/top/machine.c
+
+To enable building on case-insensitive filesystems, the following files were
+renamed:
+
+	contrib/top/top.X 		-> contrib/top/top.xs
+	contrib/top/top.local.H	-> contrib/top/top.local.hs
+

Modified: trunk/contrib/top/commands.c
===================================================================
--- trunk/contrib/top/commands.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/commands.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  *
- * $FreeBSD: releng/9.2/contrib/top/commands.c 223936 2011-07-11 16:48:52Z jhb $
+ * $FreeBSD: stable/10/contrib/top/commands.c 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*
@@ -19,16 +19,21 @@
  */
 
 #include "os.h"
-#include <ctype.h>
-#include <signal.h>
-#include <errno.h>
+
 #include <sys/time.h>
 #include <sys/resource.h>
 
+#include <ctype.h>
+#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
+
+#include "commands.h"
 #include "sigdesc.h"		/* generated automatically */
 #include "top.h"
 #include "boolean.h"
 #include "utils.h"
+#include "machine.h"
 
 extern int  errno;
 
@@ -39,6 +44,8 @@
 
 int err_compar();
 char *err_string();
+static int str_adderr(char *str, int len, int err);
+static int str_addarg(char *str, int len, char *arg, int first);
 
 /*
  *  show_help() - display the help screen; invoked in response to
@@ -45,6 +52,7 @@
  *		either 'h' or '?'.
  */
 
+void
 show_help()
 
 {
@@ -74,6 +82,7 @@
 H       - toggle the displaying of threads\n\
 i or I  - toggle the displaying of idle processes\n\
 j       - toggle the displaying of jail ID\n\
+J       - display processes for only one jail (+ selects all jails)\n\
 k       - kill processes; send a signal to a list of processes\n\
 m       - toggle the display between 'cpu' and 'io' modes\n\
 n or #  - change number of processes to display\n", stdout);
@@ -80,11 +89,11 @@
 #ifdef ORDER
 	if (displaymode == DISP_CPU)
 		fputs("\
-o       - specify sort order (pri, size, res, cpu, time, threads, jid)\n",
+o       - specify sort order (pri, size, res, cpu, time, threads, jid, pid)\n",
 	    stdout);
 	else
 		fputs("\
-o       - specify sort order (vcsw, ivcsw, read, write, fault, total, jid)\n",
+o       - specify sort order (vcsw, ivcsw, read, write, fault, total, jid, pid)\n",
 	    stdout);
 #endif
 	fputs("\
@@ -122,6 +131,7 @@
     return(*str == '\0' ? NULL : str);
 }
 
+int
 scanint(str, intp)
 
 char *str;
@@ -261,6 +271,7 @@
  *	the string "str".
  */
 
+static int
 str_adderr(str, len, err)
 
 char *str;
@@ -288,6 +299,7 @@
  *	is set (indicating that a comma should NOT be added to the front).
  */
 
+static int
 str_addarg(str, len, arg, first)
 
 char *str;
@@ -320,6 +332,7 @@
  *	for sorting errors.
  */
 
+int
 err_compar(p1, p2)
 
 register struct errs *p1, *p2;
@@ -338,6 +351,7 @@
  *  error_count() - return the number of errors currently logged.
  */
 
+int
 error_count()
 
 {
@@ -348,6 +362,7 @@
  *  show_errors() - display on stdout the current log of errors.
  */
 
+void
 show_errors()
 
 {

Added: trunk/contrib/top/commands.h
===================================================================
--- trunk/contrib/top/commands.h	                        (rev 0)
+++ trunk/contrib/top/commands.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,21 @@
+/*
+ *  Top users/processes display for Unix
+ *  Version 3
+ *
+ *  This program may be freely redistributed,
+ *  but this entire comment MUST remain intact.
+ *
+ *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
+ *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
+ *  Copyright (c) 2016, Randy Westlund
+ *
+ * $FreeBSD: stable/10/contrib/top/commands.h 301836 2016-06-12 05:57:42Z ngie $
+ */
+#ifndef COMMANDS_H
+#define COMMANDS_H
+
+void	show_errors(void);
+int	error_count(void);
+void	show_help(void);
+
+#endif /* COMMANDS_H */


Property changes on: trunk/contrib/top/commands.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/contrib/top/display.c
===================================================================
--- trunk/contrib/top/display.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/display.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  *
- * $FreeBSD: releng/9.2/contrib/top/display.c 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/display.c 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*
@@ -29,9 +29,12 @@
  */
 
 #include "os.h"
+
+#include <sys/time.h>
+
 #include <ctype.h>
 #include <time.h>
-#include <sys/time.h>
+#include <unistd.h>
 
 #include "screen.h"		/* interface to screen package */
 #include "layout.h"		/* defines for screen position layout */
@@ -56,7 +59,6 @@
 
 #define lineindex(l) ((l)*display_width)
 
-char *printable();
 
 /* things initialized by display_init and used thruout */
 
@@ -239,6 +241,7 @@
     return(lines);
 }
 
+void
 i_loadave(mpid, avenrun)
 
 int mpid;
@@ -267,6 +270,7 @@
     lmpid = mpid;
 }
 
+void
 u_loadave(mpid, avenrun)
 
 int mpid;
@@ -306,6 +310,7 @@
     }
 }
 
+void
 i_timeofday(tod)
 
 time_t *tod;
@@ -351,6 +356,7 @@
  *		  lastline is valid
  */
 
+void
 i_procstates(total, brkdn)
 
 int total;
@@ -378,6 +384,7 @@
     memcpy(lprocstates, brkdn, num_procstates * sizeof(int));
 }
 
+void
 u_procstates(total, brkdn)
 
 int total;
@@ -460,9 +467,10 @@
 }
 #endif
 
+void
 i_cpustates(states)
 
-register int *states;
+int *states;
 
 {
     register int i = 0;
@@ -505,9 +513,10 @@
     memcpy(lcpustates, states, num_cpustates * sizeof(int) * num_cpus);
 }
 
+void
 u_cpustates(states)
 
-register int *states;
+int *states;
 
 {
     register int value;
@@ -557,6 +566,7 @@
 }
 }
 
+void
 z_cpustates()
 
 {
@@ -606,6 +616,7 @@
 
 char memory_buffer[MAX_COLS];
 
+void
 i_memory(stats)
 
 int *stats;
@@ -619,6 +630,7 @@
     fputs(memory_buffer, stdout);
 }
 
+void
 u_memory(stats)
 
 int *stats;
@@ -639,6 +651,7 @@
  */
 char arc_buffer[MAX_COLS];
 
+void
 i_arc(stats)
 
 int *stats;
@@ -645,7 +658,7 @@
 
 {
     if (arc_names == NULL)
-	return (0);
+	return;
 
     fputs("\nARC: ", stdout);
     lastline++;
@@ -655,6 +668,7 @@
     fputs(arc_buffer, stdout);
 }
 
+void
 u_arc(stats)
 
 int *stats;
@@ -663,7 +677,7 @@
     static char new[MAX_COLS];
 
     if (arc_names == NULL)
-	return (0);
+	return;
 
     /* format the new line */
     summary_format(new, stats, arc_names);
@@ -680,6 +694,7 @@
 
 char swap_buffer[MAX_COLS];
 
+void
 i_swap(stats)
 
 int *stats;
@@ -693,6 +708,7 @@
     fputs(swap_buffer, stdout);
 }
 
+void
 u_swap(stats)
 
 int *stats;
@@ -724,6 +740,7 @@
 /* Invariant: msglen is always the length of the message currently displayed
    on the screen (even when next_msg doesn't contain that message). */
 
+void
 i_message()
 
 {
@@ -745,6 +762,7 @@
     }
 }
 
+void
 u_message()
 
 {
@@ -786,6 +804,7 @@
  *  Assumptions:  cursor is on the previous line and lastline is consistent
  */
 
+void
 i_header(text)
 
 char *text;
@@ -811,9 +830,10 @@
 }
 
 /*ARGSUSED*/
+void
 u_header(text)
 
-char *text;		/* ignored */
+char *text __unused;		/* ignored */
 
 {
 
@@ -832,6 +852,7 @@
  *  Assumptions:  lastline is consistent
  */
 
+void
 i_process(line, thisline)
 
 int line;
@@ -862,6 +883,7 @@
     memzero(p, display_width - (p - base));
 }
 
+void
 u_process(line, newline)
 
 int line;
@@ -909,9 +931,10 @@
     }
 }
 
+void
 u_endscreen(hi)
 
-register int hi;
+int hi;
 
 {
     register int screen_line = hi + Header_lines;
@@ -969,6 +992,7 @@
     }
 }
 
+void
 display_header(t)
 
 int t;
@@ -985,6 +1009,7 @@
 }
 
 /*VARARGS2*/
+void
 new_message(type, msgfmt, a1, a2, a3)
 
 int type;
@@ -1025,6 +1050,7 @@
     }
 }
 
+void
 clear_message()
 
 {
@@ -1034,6 +1060,7 @@
     }
 }
 
+int
 readline(buffer, size, numeric)
 
 char *buffer;
@@ -1336,6 +1363,7 @@
     return(str);
 }
 
+void
 i_uptime(bt, tod)
 
 struct timeval* bt;

Modified: trunk/contrib/top/display.h
===================================================================
--- trunk/contrib/top/display.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/display.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -5,3 +5,37 @@
 #define  MT_standout  1
 #define  MT_delayed   2
 
+#include "machine.h"
+
+int		 display_updatecpus(struct statics *statics);
+void	 clear_message(void);
+int		 display_resize(void);
+void	 i_header(char *text);
+char	*printable(char *string);
+char	*cpustates_tag(void);
+void	 display_header(int t);
+int		 display_init(struct statics *statics);
+void	 i_arc(int *stats);
+void	 i_cpustates(int *states);
+void	 i_loadave(int mpid, double *avenrun);
+void	 i_memory(int *stats);
+void	 i_message(void);
+void	 i_process(int line, char *thisline);
+void	 i_procstates(int total, int *brkdn);
+void	 i_swap(int *stats);
+void	 i_timeofday(time_t *tod);
+void	 i_uptime(struct timeval *bt, time_t *tod);
+void	 new_message();
+int		 readline(char *buffer, int size, int numeric);
+char	*trim_header(char *text);
+void	 u_arc(int *stats);
+void	 u_cpustates(int *states);
+void	 u_endscreen(int hi);
+void	 u_header(char *text);
+void	 u_loadave(int mpid, double *avenrun);
+void	 u_memory(int *stats);
+void	 u_message(void);
+void	 u_process(int line, char *newline);
+void	 u_procstates(int total, int *brkdn);
+void	 u_swap(int *stats);
+void	 z_cpustates(void);

Modified: trunk/contrib/top/layout.h
===================================================================
--- trunk/contrib/top/layout.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/layout.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -5,7 +5,7 @@
  *  display.  These definitions are used by the routines in "display.c" for
  *  cursor addressing.
  *
- * $FreeBSD: releng/9.2/contrib/top/layout.h 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/layout.h 237656 2012-06-27 18:08:48Z jhb $
  */
 
 extern int  x_lastpid;		/* 10 */

Modified: trunk/contrib/top/machine.h
===================================================================
--- trunk/contrib/top/machine.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/machine.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: releng/9.2/contrib/top/machine.h 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/machine.h 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*
@@ -7,7 +7,11 @@
  *  module.  It is NOT machine dependent and should not need to be changed
  *  for any specific machine.
  */
+#ifndef MACHINE_H
+#define MACHINE_H
 
+#include "top.h"
+
 /*
  * the statics struct is filled in by machine_init
  */
@@ -66,6 +70,7 @@
     int thread;		/* show threads */
     int uid;		/* only this uid (unless uid == -1) */
     int wcpu;		/* show weighted cpu */
+    int jid;		/* only this jid (unless jid == -1) */
     int jail;		/* show jail ID */
     int kidle;		/* show per-CPU idle threads */
     char *command;	/* only this command (unless == NULL) */
@@ -73,8 +78,14 @@
 
 /* routines defined by the machine dependent module */
 
-char *format_header();
-char *format_next_process();
+char	*format_header();
+char	*format_next_process();
+void	 toggle_pcpustats(void);
+void	 get_system_info(struct system_info *si);
+int		 machine_init(struct statics *statics, char do_unames);
+int		 proc_owner(int pid);
 
 /* non-int routines typically used by the machine dependent module */
-char *printable();
+char	*printable();
+
+#endif /* MACHINE_H */

Modified: trunk/contrib/top/screen.c
===================================================================
--- trunk/contrib/top/screen.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/screen.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  *
- * $FreeBSD: releng/9.2/contrib/top/screen.c 210386 2010-07-22 18:52:29Z rpaulo $
+ * $FreeBSD: stable/10/contrib/top/screen.c 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*  This file contains the routines that interface to termcap and stty/gtty.
@@ -50,7 +50,6 @@
 
 extern char *myname;
 
-int putstdout();
 
 int  overstrike;
 int  screen_length;
@@ -236,6 +235,7 @@
 #endif
 }
 
+void
 init_screen()
 
 {
@@ -326,6 +326,7 @@
     }
 }
 
+void
 end_screen()
 
 {
@@ -356,6 +357,7 @@
     }
 }
 
+void
 reinit_screen()
 
 {
@@ -383,6 +385,7 @@
     }
 }
 
+void
 get_screensize()
 
 {
@@ -428,6 +431,7 @@
     lower_left[sizeof(lower_left) - 1] = '\0';
 }
 
+void
 standout(msg)
 
 char *msg;
@@ -445,6 +449,7 @@
     }
 }
 
+void
 clear()
 
 {
@@ -454,6 +459,7 @@
     }
 }
 
+int
 clear_eol(len)
 
 int len;
@@ -478,6 +484,7 @@
     return(-1);
 }
 
+void
 go_home()
 
 {
@@ -489,6 +496,7 @@
 
 /* This has to be defined as a subroutine for tputs (instead of a macro) */
 
+void
 putstdout(ch)
 
 char ch;

Modified: trunk/contrib/top/screen.h
===================================================================
--- trunk/contrib/top/screen.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/screen.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -28,4 +28,14 @@
 extern int  screen_width;
 
 /* a function that puts a single character on stdout */
-int putstdout();
+void	putstdout(char ch);
+int		clear_eol(int len);
+void	standout(char *msg);
+void	clear(void);
+void	go_home(void);
+void	reinit_screen(void);
+void	get_screensize(void);
+void	init_termcap(int interactive);
+void	end_screen(void);
+void	init_screen(void);
+

Modified: trunk/contrib/top/sigconv.awk
===================================================================
--- trunk/contrib/top/sigconv.awk	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/sigconv.awk	2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,4 +1,4 @@
-# $FreeBSD: releng/9.2/contrib/top/sigconv.awk 164784 2006-12-01 07:01:19Z keramida $
+# $FreeBSD: stable/10/contrib/top/sigconv.awk 164784 2006-12-01 07:01:19Z keramida $
 
 BEGIN		{
 		    nsig = 0;

Modified: trunk/contrib/top/top.c
===================================================================
--- trunk/contrib/top/top.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/top.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -13,7 +13,7 @@
  *  Copyright (c) 1994, 1995, William LeFebvre, Argonne National Laboratory
  *  Copyright (c) 1996, William LeFebvre, Group sys Consulting
  *
- * $FreeBSD: releng/9.2/contrib/top/top.c 239750 2012-08-27 19:55:19Z jhb $
+ * $FreeBSD: stable/10/contrib/top/top.c 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*
@@ -34,13 +34,19 @@
  */
 
 #include "os.h"
+
+#include <sys/jail.h>
+#include <sys/time.h>
+
+#include <ctype.h>
 #include <errno.h>
+#include <jail.h>
+#include <setjmp.h>
 #include <signal.h>
-#include <setjmp.h>
-#include <ctype.h>
-#include <sys/time.h>
+#include <unistd.h>
 
 /* includes specific to top */
+#include "commands.h"
 #include "display.h"		/* interface to display package */
 #include "screen.h"		/* interface to screen package */
 #include "top.h"
@@ -48,6 +54,7 @@
 #include "boolean.h"
 #include "machine.h"
 #include "utils.h"
+#include "username.h"
 
 /* Size of the stdio buffer given to stdout */
 #define Buffersize	2048
@@ -112,38 +119,21 @@
 char *username();
 char *itoa7();
 
-/* display routines that need to be predeclared */
-int i_loadave();
-int u_loadave();
-int i_procstates();
-int u_procstates();
-int i_cpustates();
-int u_cpustates();
-int i_memory();
-int u_memory();
-int i_arc();
-int u_arc();
-int i_swap();
-int u_swap();
-int i_message();
-int u_message();
-int i_header();
-int u_header();
-int i_process();
-int u_process();
-
 /* pointers to display routines */
-int (*d_loadave)() = i_loadave;
-int (*d_procstates)() = i_procstates;
-int (*d_cpustates)() = i_cpustates;
-int (*d_memory)() = i_memory;
-int (*d_arc)() = i_arc;
-int (*d_swap)() = i_swap;
-int (*d_message)() = i_message;
-int (*d_header)() = i_header;
-int (*d_process)() = i_process;
+void (*d_loadave)() = i_loadave;
+void (*d_procstates)() = i_procstates;
+void (*d_cpustates)() = i_cpustates;
+void (*d_memory)() = i_memory;
+void (*d_arc)() = i_arc;
+void (*d_swap)() = i_swap;
+void (*d_message)() = i_message;
+void (*d_header)() = i_header;
+void (*d_process)() = i_process;
 
+void reset_display(void);
 
+
+int
 main(argc, argv)
 
 int  argc;
@@ -198,9 +188,9 @@
     fd_set readfds;
 
 #ifdef ORDER
-    static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPo";
+    static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJo";
 #else
-    static char command_chars[] = "\f qh?en#sdkriIutHmSCajzP";
+    static char command_chars[] = "\f qh?en#sdkriIutHmSCajzPJ";
 #endif
 /* these defines enumerate the "strchr"s of the commands in command_chars */
 #define CMD_redraw	0
@@ -228,8 +218,9 @@
 #define	CMD_jidtog	21
 #define CMD_kidletog	22
 #define CMD_pcputog	23
+#define CMD_jail	24
 #ifdef ORDER
-#define CMD_order       24
+#define CMD_order       25
 #endif
 
     /* set the buffer for stdout */
@@ -261,6 +252,7 @@
     ps.uid     = -1;
     ps.thread  = No;
     ps.wcpu    = 1;
+    ps.jid     = -1;
     ps.jail    = No;
     ps.kidle   = Yes;
     ps.command = NULL;
@@ -288,7 +280,7 @@
 	    optind = 1;
 	}
 
-	while ((i = getopt(ac, av, "CSIHPabijnquvzs:d:U:m:o:t")) != EOF)
+	while ((i = getopt(ac, av, "CSIHPabijJ:nquvzs:d:U:m:o:t")) != EOF)
 	{
 	    switch(i)
 	    {
@@ -413,6 +405,15 @@
 		ps.jail = !ps.jail;
 		break;
 
+	      case 'J':			/* display only jail's processes */
+		if ((ps.jid = jail_getid(optarg)) == -1)
+		{
+		    fprintf(stderr, "%s: unknown jail\n", optarg);
+		    exit(1);
+		}
+		ps.jail = 1;
+		break;
+
 	      case 'P':
 		pcpu_stats = !pcpu_stats;
 		break;
@@ -425,7 +426,7 @@
 		fprintf(stderr,
 "Top version %s\n"
 "Usage: %s [-abCHIijnPqStuvz] [-d count] [-m io | cpu] [-o field] [-s time]\n"
-"       [-U username] [number]\n",
+"       [-J jail] [-U username] [number]\n",
 			version_string(), myname);
 		exit(1);
 	    }
@@ -994,7 +995,7 @@
 
 			    case CMD_user:
 				new_message(MT_standout,
-				    "Username to show: ");
+				    "Username to show (+ for all): ");
 				if (readline(tempbuf2, sizeof(tempbuf2), No) > 0)
 				{
 				    if (tempbuf2[0] == '+' &&
@@ -1085,6 +1086,44 @@
 				reset_display();
 				putchar('\r');
 				break;
+
+			    case CMD_jail:
+				new_message(MT_standout,
+				    "Jail to show (+ for all): ");
+				if (readline(tempbuf2, sizeof(tempbuf2), No) > 0)
+				{
+				    if (tempbuf2[0] == '+' &&
+					tempbuf2[1] == '\0')
+				    {
+					ps.jid = -1;
+				    }
+				    else if ((i = jail_getid(tempbuf2)) == -1)
+				    {
+					new_message(MT_standout,
+					    " %s: unknown jail", tempbuf2);
+					no_command = Yes;
+				    }
+				    else
+				    {
+					ps.jid = i;
+				    }
+				    if (ps.jail == 0) {
+					    ps.jail = 1;
+					    new_message(MT_standout |
+						MT_delayed, " Displaying jail "
+						"ID.");
+					    header_text =
+						format_header(uname_field);
+					    reset_display();
+				    }
+				    putchar('\r');
+				}
+				else
+				{
+				    clear_message();
+				}
+				break;
+	    
 			    case CMD_kidletog:
 				ps.kidle = !ps.kidle;
 				new_message(MT_standout | MT_delayed,
@@ -1127,6 +1166,7 @@
  *	screen will get redrawn.
  */
 
+void
 reset_display()
 
 {

Modified: trunk/contrib/top/top.h
===================================================================
--- trunk/contrib/top/top.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/top.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: releng/9.2/contrib/top/top.h 223342 2011-06-20 16:48:00Z delphij $
+ * $FreeBSD: stable/10/contrib/top/top.h 301836 2016-06-12 05:57:42Z ngie $
  */
 /*
  *  Top - a top users display for Berkeley Unix
@@ -7,6 +7,9 @@
  *  General (global) definitions
  */
 
+#ifndef TOP_H
+#define TOP_H
+
 /* Current major version number */
 #define VERSION		3
 
@@ -14,7 +17,7 @@
 extern int Header_lines;	/* 7 */
 
 /* Maximum number of columns allowed for display */
-#define MAX_COLS	128
+#define MAX_COLS	512
 
 /* Log base 2 of 1024 is 10 (2^10 == 1024) */
 #define LOG1024		10
@@ -47,3 +50,5 @@
 extern enum displaymodes displaymode;
 
 extern int pcpu_stats;
+
+#endif /* TOP_H */

Added: trunk/contrib/top/top.local.hs
===================================================================
--- trunk/contrib/top/top.local.hs	                        (rev 0)
+++ trunk/contrib/top/top.local.hs	2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,68 @@
+/*
+ *  Top - a top users display for Berkeley Unix
+ *
+ *  Definitions for things that might vary between installations.
+ */
+
+/*
+ *  The space command forces an immediate update.  Sometimes, on loaded
+ *  systems, this update will take a significant period of time (because all
+ *  the output is buffered).  So, if the short-term load average is above
+ *  "LoadMax", then top will put the cursor home immediately after the space
+ *  is pressed before the next update is attempted.  This serves as a visual
+ *  acknowledgement of the command.  On Suns, "LoadMax" will get multiplied by
+ *  "FSCALE" before being compared to avenrun[0].  Therefore, "LoadMax"
+ *  should always be specified as a floating point number.
+ */
+#ifndef LoadMax
+#define LoadMax  %LoadMax%
+#endif
+
+/*
+ *  "Table_size" defines the size of the hash tables used to map uid to
+ *  username.  The number of users in /etc/passwd CANNOT be greater than
+ *  this number.  If the error message "table overflow: too many users"
+ *  is printed by top, then "Table_size" needs to be increased.  Things will
+ *  work best if the number is a prime number that is about twice the number
+ *  of lines in /etc/passwd.
+ */
+#ifndef Table_size
+#define Table_size	%TableSize%
+#endif
+
+/*
+ *  "Nominal_TOPN" is used as the default TOPN when Default_TOPN is Infinity
+ *  and the output is a dumb terminal.  If we didn't do this, then
+ *  installations who use a default TOPN of Infinity will get every
+ *  process in the system when running top on a dumb terminal (or redirected
+ *  to a file).  Note that Nominal_TOPN is a default:  it can still be
+ *  overridden on the command line, even with the value "infinity".
+ */
+#ifndef Nominal_TOPN
+#define Nominal_TOPN	%NominalTopn%
+#endif
+
+#ifndef Default_TOPN
+#define Default_TOPN	%topn%
+#endif
+
+#ifndef Default_DELAY
+#define Default_DELAY	%delay%
+#endif
+
+/*
+ *  If the local system's getpwnam interface uses random access to retrieve
+ *  a record (i.e.: 4.3 systems, Sun "yellow pages"), then defining
+ *  RANDOM_PW will take advantage of that fact.  If RANDOM_PW is defined,
+ *  then getpwnam is used and the result is cached.  If not, then getpwent
+ *  is used to read and cache the password entries sequentially until the
+ *  desired one is found.
+ *
+ *  We initially set RANDOM_PW to something which is controllable by the
+ *  Configure script.  Then if its value is 0, we undef it.
+ */
+
+#define RANDOM_PW	%random%
+#if RANDOM_PW == 0
+#undef RANDOM_PW
+#endif

Added: trunk/contrib/top/top.xs
===================================================================
--- trunk/contrib/top/top.xs	                        (rev 0)
+++ trunk/contrib/top/top.xs	2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,448 @@
+.\" NOTE:  changes to the manual page for "top" should be made in the
+.\"        file "top.X" and NOT in the file "top.1".
+.\" $FreeBSD: stable/10/contrib/top/top.xs 284484 2015-06-17 02:30:12Z marcel $
+.nr N %topn%
+.nr D %delay%
+.TH TOP 1 Local
+.UC 4
+.SH NAME
+top \- display and update information about the top cpu processes
+.SH SYNOPSIS
+.B top
+[
+.B \-abCHIijnPqStuvz
+] [
+.BI \-d count
+] [
+.BI \-m io | cpu
+] [
+.BI \-o field
+] [
+.BI \-s time
+] [
+.BI \-J jail
+] [
+.BI \-U username
+] [
+.I number
+]
+.SH DESCRIPTION
+.\" This defines appropriate quote strings for nroff and troff
+.ds lq \&"
+.ds rq \&"
+.if t .ds lq ``
+.if t .ds rq ''
+.\" Just in case these number registers aren't set yet...
+.if \nN==0 .nr N 10
+.if \nD==0 .nr D 2
+.I Top
+displays the top
+.if !\nN==-1 \nN
+processes on the system and periodically updates this information.
+.if \nN==-1 \
+\{\
+If standard output is an intelligent terminal (see below) then
+as many processes as will fit on the terminal screen are displayed
+by default.  Otherwise, a good number of them are shown (around 20).
+.\}
+Raw cpu percentage is used to rank the processes.  If
+.I number
+is given, then the top
+.I number
+processes will be displayed instead of the default.
+.PP
+.I Top
+makes a distinction between terminals that support advanced capabilities
+and those that do not.  This
+distinction affects the choice of defaults for certain options.  In the
+remainder of this document, an \*(lqintelligent\*(rq terminal is one that
+supports cursor addressing, clear screen, and clear to end of line.
+Conversely, a \*(lqdumb\*(rq terminal is one that does not support such
+features.  If the output of
+.I top
+is redirected to a file, it acts as if it were being run on a dumb
+terminal.
+.SH OPTIONS
+.TP
+.B \-C
+Toggle CPU display mode.
+By default top displays the weighted CPU percentage in the WCPU column
+(this is the same value that
+.IR ps (1)
+displays as CPU).
+Each time
+.B \-C
+flag is passed it toggles between \*(lqraw cpu\*(rq mode
+and \*(lqweighted cpu\*(rq mode, showing the \*(lqCPU\*(rq or
+the \*(lqWCPU\*(rq column respectively.
+.TP
+.B \-S
+Show system processes in the display.  Normally, system processes such as
+the pager and the swapper are not shown.  This option makes them visible.
+.TP
+.B \-a
+Display command names derived from the argv[] vector, rather than real
+executable name. It's useful when you want to watch applications, that
+puts their status information there. If the real name differs from argv[0],
+it will be displayed in parenthesis.
+.TP
+.B \-b
+Use \*(lqbatch\*(rq mode.  In this mode, all input from the terminal is
+ignored.  Interrupt characters (such as ^C and ^\e) still have an effect.
+This is the default on a dumb terminal, or when the output is not a terminal.
+.TP
+.B \-H
+Display each thread for a multithreaded process individually.
+By default a single summary line is displayed for each process.
+.TP
+.B \-i
+Use \*(lqinteractive\*(rq mode.  In this mode, any input is immediately
+read for processing.  See the section on \*(lqInteractive Mode\*(rq
+for an explanation of
+which keys perform what functions.  After the command is processed, the
+screen will immediately be updated, even if the command was not
+understood.  This mode is the default when standard output is an
+intelligent terminal.
+.TP
+.B \-I
+Do not display idle processes.
+By default, top displays both active and idle processes.
+.TP
+.B \-j
+Display the
+.IR jail (8)
+ID.
+.TP
+.B \-t
+Do not display the
+.I top
+process.
+.TP
+.BI \-m display
+Display either 'cpu' or 'io' statistics.  Default is 'cpu'.
+.TP
+.B \-n
+Use \*(lqnon-interactive\*(rq mode.  This is identical to \*(lqbatch\*(rq
+mode.
+.TP
+.B \-P
+Display per-cpu CPU usage statistics.
+.TP
+.B \-q
+Renice
+.I top
+to -20 so that it will run faster.  This can be used when the system is
+being very sluggish to improve the possibility of discovering the problem.
+This option can only be used by root.
+.TP
+.B \-u
+Do not take the time to map uid numbers to usernames.  Normally,
+.I top
+will read as much of the file \*(lq/etc/passwd\*(rq as is necessary to map
+all the user id numbers it encounters into login names.  This option
+disables all that, while possibly decreasing execution time.  The uid
+numbers are displayed instead of the names.
+.TP
+.B \-v
+Write version number information to stderr then exit immediately.
+No other processing takes place when this option is used.  To see current
+revision information while top is running, use the help command \*(lq?\*(rq.
+.TP
+.B \-z
+Do not display the system idle process.
+.TP
+.BI \-d count
+Show only
+.I count
+displays, then exit.  A display is considered to be one update of the
+screen.  This option allows the user to select the number of displays he
+wants to see before
+.I top
+automatically exits.  For intelligent terminals, no upper limit
+is set.  The default is 1 for dumb terminals.
+.TP
+.BI \-s time
+Set the delay between screen updates to
+.I time
+seconds.  The default delay between updates is \nD seconds.
+.TP
+.BI \-o field
+Sort the process display area on the specified field.  The field name is
+the name of the column as seen in the output, but in lower case.  Likely
+values are \*(lqcpu\*(rq, \*(lqsize\*(rq, \*(lqres\*(rq, and \*(lqtime\*(rq,
+but may vary on different operating systems.  Note that
+not all operating systems support this option.
+.TP
+.BI \-J jail
+Show only those processes owned by
+.IR jail .
+This may be either the
+.B jid
+or
+.B name
+of the jail.
+Use
+.B 0
+to limit to host processes.
+Using this option implies the
+.B \-j
+flag.
+.PP
+.BI \-U username
+Show only those processes owned by
+.IR username .
+This option currently only accepts usernames and will not understand
+uid numbers.
+.PP
+Both
+.I count
+and
+.I number
+fields can be specified as \*(lqinfinite\*(rq, indicating that they can
+stretch as far as possible.  This is accomplished by using any proper
+prefix of the keywords
+\*(lqinfinity\*(rq,
+\*(lqmaximum\*(rq,
+or
+\*(lqall\*(rq.
+The default for
+.I count
+on an intelligent terminal is, in fact,
+.BI infinity .
+.PP
+The environment variable
+.B TOP
+is examined for options before the command line is scanned.  This enables
+a user to set his or her own defaults.  The number of processes to display
+can also be specified in the environment variable
+.BR TOP .
+The options
+.BR \-a ,
+.BR \-C ,
+.BR \-H ,
+.BR \-I ,
+.BR \-j ,
+.BR \-P ,
+.BR \-S ,
+.BR \-t ,
+.BR \-u ,
+and
+.B \-z
+are actually toggles.  A second specification of any of these options
+will negate the first.  Thus a user who has the environment variable
+.B TOP
+set to \*(lq\-I\*(rq may use the command \*(lqtop \-I\*(rq to see idle processes.
+.SH "INTERACTIVE MODE"
+When
+.I top
+is running in \*(lqinteractive mode\*(rq, it reads commands from the
+terminal and acts upon them accordingly.  In this mode, the terminal is
+put in \*(lqCBREAK\*(rq, so that a character will be
+processed as soon as it is typed.  Almost always, a key will be
+pressed when
+.I top
+is between displays; that is, while it is waiting for
+.I time
+seconds to elapse.  If this is the case, the command will be
+processed and the display will be updated immediately thereafter
+(reflecting any changes that the command may have specified).  This
+happens even if the command was incorrect.  If a key is pressed while 
+.I top
+is in the middle of updating the display, it will finish the update and
+then process the command.  Some commands require additional information,
+and the user will be prompted accordingly.  While typing this information
+in, the user's erase and kill keys (as set up by the command
+.IR stty )
+are recognized, and a newline terminates the input.
+.PP
+These commands are currently recognized (^L refers to control-L):
+.TP
+.B ^L
+Redraw the screen.
+.IP "\fBh\fP\ or\ \fB?\fP"
+Display a summary of the commands (help screen).  Version information
+is included in this display.
+.TP
+.B q
+Quit
+.IR top.
+.TP
+.B d
+Change the number of displays to show (prompt for new number).
+Remember that the next display counts as one, so typing
+.B d1
+will make
+.I top
+show one final display and then immediately exit.
+.TP
+.B m
+Toggle the display between 'cpu' and 'io' modes.
+.TP
+.B n or #
+Change the number of processes to display (prompt for new number).
+.TP
+.B s
+Change the number of seconds to delay between displays
+(prompt for new number).
+.TP
+.B S
+Toggle the display of system processes.
+.TP
+.B a
+Toggle the display of process titles.
+.TP
+.B k
+Send a signal (\*(lqkill\*(rq by default) to a list of processes.  This
+acts similarly to the command
+.IR kill (1)).
+.TP
+.B r
+Change the priority (the \*(lqnice\*(rq) of a list of processes.
+This acts similarly to the command
+.IR renice (8)).
+.TP
+.B u
+Display only processes owned by a specific username (prompt for username).
+If the username specified is simply \*(lq+\*(rq, then processes belonging
+to all users will be displayed.
+.TP
+.B o
+Change the order in which the display is sorted.  This command is not
+available on all systems.  The sort key names vary from system to system
+but usually include:  \*(lqcpu\*(rq, \*(lqres\*(rq, \*(lqsize\*(rq,
+\*(lqtime\*(rq.  The default is cpu.
+.TP
+.B e
+Display a list of system errors (if any) generated by the last
+.BR k ill
+or
+.BR r enice
+command.
+.TP
+.B H
+Toggle the display of threads.
+.TP
+.B i
+(or
+.BR I )
+Toggle the display of idle processes.
+.TP
+.B j
+Toggle the display of
+.IR jail (8)
+ID.
+.TP
+.B J
+Display only processes owned by a specific jail (prompt for jail).
+If the jail specified is simply \*(lq+\*(rq, then processes belonging
+to all jails and the host will be displayed.
+This will also enable the display of JID.
+.TP
+.B P
+Toggle the display of per-CPU statistics.
+.TP
+.B t
+Toggle the display of the
+.I top
+process.
+.TP
+.B z
+Toggle the display of the system idle process.
+.SH "THE DISPLAY"
+The actual display varies depending on the specific variant of Unix
+that the machine is running.  This description may not exactly match
+what is seen by top running on this particular machine.  Differences
+are listed at the end of this manual entry.
+.PP
+The top few lines of the display show general information
+about the state of the system, including
+the last process id assigned to a process (on most systems),
+the three load averages,
+the current time,
+the number of existing processes,
+the number of processes in each state
+(sleeping, running, starting, zombies, and stopped),
+and a percentage of time spent in each of the processor states
+(user, nice, system, and idle).
+It also includes information about physical and virtual memory allocation.
+.PP
+The remainder of the screen displays information about individual
+processes.  This display is similar in spirit to
+.IR ps (1)
+but it is not exactly the same.  PID is the process id, 
+JID, when displayed, is the 
+.IR jail (8)
+ID corresponding to the process,
+USERNAME is the name of the process's owner (if
+.B \-u
+is specified, a UID column will be substituted for USERNAME),
+PRI is the current priority of the process,
+NICE is the nice amount (in the range \-20 to 20),
+SIZE is the total size of the process (text, data, and stack),
+RES is the current amount of resident memory (both SIZE and RES are
+given in kilobytes),
+STATE is the current state (one of \*(lqSTART\*(rq, \*(lqRUN\*(rq
+(shown as \*(lqCPUn\*(rq on SMP systems), \*(lqSLEEP\*(rq, \*(lqSTOP\*(rq,
+\*(lqZOMB\*(rq, \*(lqWAIT\*(rq, \*(lqLOCK\*(rq or the event on which the
+process waits),
+C is the processor number on which the process is executing
+(visible only on SMP systems),
+TIME is the number of system and user cpu seconds that the process has used,
+WCPU, when displayed, is the weighted cpu percentage (this is the same
+value that
+.IR ps (1)
+displays as CPU),
+CPU is the raw percentage and is the field that is sorted to determine
+the order of the processes, and
+COMMAND is the name of the command that the process is currently running
+(if the process is swapped out, this column is marked \*(lq<swapped>\*(rq).
+.SH NOTES
+If a process is in the \*(lqSLEEP\*(rq or \*(lqLOCK\*(rq state,
+the state column will report the name of the event or lock on which the
+process is waiting.
+Lock names are prefixed with an asterisk \*(lq*\*(rq while sleep events
+are not.
+.SH AUTHOR
+William LeFebvre, EECS Department, Northwestern University
+.SH ENVIRONMENT
+.DT
+TOP	user-configurable defaults for options.
+.SH FILES
+.DT
+/dev/kmem		kernel memory
+.br
+/dev/mem		physical memory
+.br
+/etc/passwd		used to map uid numbers to user names
+.br
+/boot/kernel/kernel	system image
+.SH BUGS
+Don't shoot me, but the default for
+.B \-I
+has changed once again.  So many people were confused by the fact that
+.I top
+wasn't showing them all the processes that I have decided to make the
+default behavior show idle processes, just like it did in version 2.
+But to appease folks who can't stand that behavior, I have added the
+ability to set \*(lqdefault\*(rq options in the environment variable
+.B TOP
+(see the OPTIONS section).  Those who want the behavior that version
+3.0 had need only set the environment variable
+.B TOP
+to \*(lq\-I\*(rq.
+.PP
+The command name for swapped processes should be tracked down, but this
+would make the program run slower.
+.PP
+As with
+.IR ps (1),
+things can change while
+.I top
+is collecting information for an update.  The picture it gives is only a
+close approximation to reality.
+.SH "SEE ALSO"
+kill(1),
+ps(1),
+stty(1),
+mem(4),
+renice(8)

Modified: trunk/contrib/top/username.c
===================================================================
--- trunk/contrib/top/username.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/username.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  *
- * $FreeBSD: releng/9.2/contrib/top/username.c 200979 2009-12-25 09:02:41Z ed $
+ * $FreeBSD: stable/10/contrib/top/username.c 301836 2016-06-12 05:57:42Z ngie $
  */
 
 /*
@@ -32,11 +32,15 @@
 
 #include <sys/param.h>
 #include <sys/types.h>
+
+#include <pwd.h>
 #include <stdio.h>
-#include <pwd.h>
+#include <stdlib.h>
+#include <string.h>
 
 #include "top.local.h"
 #include "utils.h"
+#include "username.h"
 
 struct hash_el {
     int  uid;
@@ -55,6 +59,8 @@
 /* We depend on that for hash_table and YOUR compiler had BETTER do it! */
 struct hash_el hash_table[Table_size];
 
+
+void
 init_hash()
 
 {
@@ -67,7 +73,7 @@
 
 char *username(uid)
 
-register int uid;
+int uid;
 
 {
     register int hashindex;
@@ -106,8 +112,8 @@
 
 int enter_user(uid, name, wecare)
 
-register int  uid;
-register char *name;
+int  uid;
+char *name;
 int wecare;		/* 1 = enter it always, 0 = nice to have */
 
 {
@@ -142,7 +148,7 @@
 
 int get_user(uid)
 
-register int uid;
+int uid;
 
 {
     struct passwd *pwd;

Added: trunk/contrib/top/username.h
===================================================================
--- trunk/contrib/top/username.h	                        (rev 0)
+++ trunk/contrib/top/username.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -0,0 +1,23 @@
+/*
+ *  Top users/processes display for Unix
+ *  Version 3
+ *
+ *  This program may be freely redistributed,
+ *  but this entire comment MUST remain intact.
+ *
+ *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
+ *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
+ *  Copyright (c) 2016, Randy Westlund
+ *
+ * $FreeBSD: stable/10/contrib/top/username.h 301836 2016-06-12 05:57:42Z ngie $
+ */
+#ifndef USERNAME_H
+#define USERNAME_H
+
+int	 enter_user(int uid, char *name, int wecare);
+int	 get_user(int uid);
+void	 init_hash(void);
+char 	*username(int uid);
+int 	 userid(char *username);
+
+#endif /* USERNAME_H */


Property changes on: trunk/contrib/top/username.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:keywords
## -0,0 +1 ##
+MidnightBSD=%H
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: trunk/contrib/top/utils.c
===================================================================
--- trunk/contrib/top/utils.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/utils.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -8,7 +8,7 @@
  *  Copyright (c) 1984, 1989, William LeFebvre, Rice University
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  *
- * $FreeBSD: releng/9.2/contrib/top/utils.c 206842 2010-04-19 14:34:44Z nwhitehorn $
+ * $FreeBSD: stable/10/contrib/top/utils.c 206842 2010-04-19 14:34:44Z nwhitehorn $
  */
 
 /*

Modified: trunk/contrib/top/utils.h
===================================================================
--- trunk/contrib/top/utils.h	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/utils.h	2018-06-19 14:14:33 UTC (rev 11079)
@@ -22,3 +22,5 @@
 char *format_time();
 char *format_k();
 char *format_k2(unsigned long long);
+int string_index(char *string, char **array);
+

Modified: trunk/contrib/top/version.c
===================================================================
--- trunk/contrib/top/version.c	2018-06-19 14:08:15 UTC (rev 11078)
+++ trunk/contrib/top/version.c	2018-06-19 14:14:33 UTC (rev 11079)
@@ -9,6 +9,9 @@
  *  Copyright (c) 1989, 1990, 1992, William LeFebvre, Northwestern University
  */
 
+#include <stdio.h>
+#include <string.h>
+
 #include "top.h"
 #include "patchlevel.h"
 



More information about the Midnightbsd-cvs mailing list