Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Nov 2012 18:59:19 +0000 (UTC)
From:      Alfred Perlstein <alfred@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r242451 - head/sbin/dumpon
Message-ID:  <201211011859.qA1IxJBI057002@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: alfred
Date: Thu Nov  1 18:59:19 2012
New Revision: 242451
URL: http://svn.freebsd.org/changeset/base/242451

Log:
  Add an option to display the current dump device via dumpon -l.
  
  MFC after:	2 weeks

Modified:
  head/sbin/dumpon/dumpon.8
  head/sbin/dumpon/dumpon.c
Directory Properties:
  head/sbin/dumpon/   (props changed)

Modified: head/sbin/dumpon/dumpon.8
==============================================================================
--- head/sbin/dumpon/dumpon.8	Thu Nov  1 18:55:17 2012	(r242450)
+++ head/sbin/dumpon/dumpon.8	Thu Nov  1 18:59:19 2012	(r242451)
@@ -41,6 +41,8 @@
 .Nm
 .Op Fl v
 .Cm off
+.Nm
+.Fl l
 .Sh DESCRIPTION
 The
 .Nm
@@ -72,6 +74,13 @@ total amount of physical memory as repor
 variable.
 .Pp
 The
+.Fl l
+flag causes
+.Nm
+to print the current dump device or _PATH_DEVNULL ("/dev/null") if no device is
+configured.
+.Pp
+The
 .Fl v
 flag causes
 .Nm

Modified: head/sbin/dumpon/dumpon.c
==============================================================================
--- head/sbin/dumpon/dumpon.c	Thu Nov  1 18:55:17 2012	(r242450)
+++ head/sbin/dumpon/dumpon.c	Thu Nov  1 18:59:19 2012	(r242451)
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/sysctl.h>
 
 #include <err.h>
+#include <errno.h>
 #include <fcntl.h>
 #include <paths.h>
 #include <stdint.h>
@@ -60,9 +61,10 @@ static int	verbose;
 static void
 usage(void)
 {
-	fprintf(stderr, "%s\n%s\n",
+	fprintf(stderr, "%s\n%s\n%s\n",
 	    "usage: dumpon [-v] special_file",
-	    "       dumpon [-v] off");
+	    "       dumpon [-v] off",
+	    "       dumpon -l");
 	exit(EX_USAGE);
 }
 
@@ -92,15 +94,45 @@ check_size(int fd, const char *fn)
 	}
 }
 
+static void
+listdumpdev(void)
+{
+	char dumpdev[PATH_MAX];
+	size_t len;
+	const char *sysctlname = "kern.shutdown.dumpdevname";
+
+	len = sizeof(dumpdev);
+	if (sysctlbyname(sysctlname, &dumpdev, &len, NULL, 0) != 0) {
+		if (errno == ENOMEM) {
+			err(EX_OSERR, "Kernel returned too large of a buffer for '%s'\n",
+				sysctlname);
+		} else {
+			err(EX_OSERR, "Sysctl get '%s'\n", sysctlname);
+		}
+	}
+	if (verbose) {
+		printf("kernel dumps on ");
+	}
+	if (strlen(dumpdev) == 0) {
+		printf("%s\n", _PATH_DEVNULL);
+	} else {
+		printf("%s\n", dumpdev);
+	}
+}
+
 int
 main(int argc, char *argv[])
 {
 	int ch;
 	int i, fd;
 	u_int u;
+	int do_listdumpdev = 0;
 
-	while ((ch = getopt(argc, argv, "v")) != -1)
+	while ((ch = getopt(argc, argv, "lv")) != -1)
 		switch((char)ch) {
+		case 'l':
+			do_listdumpdev = 1;
+			break;
 		case 'v':
 			verbose = 1;
 			break;
@@ -111,6 +143,11 @@ main(int argc, char *argv[])
 	argc -= optind;
 	argv += optind;
 
+	if (do_listdumpdev) {
+		listdumpdev();
+		exit(EX_OK);
+	}
+
 	if (argc != 1)
 		usage();
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211011859.qA1IxJBI057002>