svn commit: r314927 - head/usr.sbin/efivar

Warner Losh imp at FreeBSD.org
Thu Mar 9 00:31:37 UTC 2017


Author: imp
Date: Thu Mar  9 00:31:36 2017
New Revision: 314927
URL: https://svnweb.freebsd.org/changeset/base/314927

Log:
  Finish implementing -d/--device/--device-path flag to print variable
  as if it were a device path.
  
  Remove language about a=b syntax on the command line. This will not be
  implemented due to its limited usefulness. UEFI variables are binary
  blobs, on the whole, and a simple work around exists for
  strings. Clarify that the new value of the variable is taken from
  stdin. Update manual with history.
  
  Sponsored by: Netflix

Modified:
  head/usr.sbin/efivar/efivar.8
  head/usr.sbin/efivar/efivar.c

Modified: head/usr.sbin/efivar/efivar.8
==============================================================================
--- head/usr.sbin/efivar/efivar.8	Thu Mar  9 00:31:31 2017	(r314926)
+++ head/usr.sbin/efivar/efivar.8	Thu Mar  9 00:31:36 2017	(r314927)
@@ -1,4 +1,4 @@
-.\" Copyright (c) 2003 Netflix, Inc
+.\" Copyright (c) 2017 Netflix, Inc
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 29, 2016
+.Dd March 4, 2017
 .Dt EFIVAR 8
 .Os
 .Sh NAME
@@ -40,6 +40,7 @@
 .Op Fl -attributes
 .Op Fl -binary
 .Op Fl -delete
+.Op Fl -device-path
 .Op Fl -fromfile Ar file
 .Op Fl -guid
 .Op Fl -hex
@@ -51,7 +52,6 @@
 .Op Fl -print-decimal
 .Op Fl -raw-guid
 .Op Fl -write
-.Ar name Ns Op = Ns Ar value
 .Sh DESCRIPTION
 This program manages
 .Dq Unified Extensible Firmware Interface
@@ -117,6 +117,9 @@ flags.
 No
 .Ar value
 may be specified.
+.It Fl d Fl -device Fl -device-path
+Interpret the variables printed as UEFI device paths and print the
+UEFI standard string representation.
 .It Fl g Fl -guid
 flag is specified, guids are converted to names if they are known (and
 show up in
@@ -138,33 +141,45 @@ flag is also listed, their values will b
 Do not display the variable name.
 .It Fl p Fl -print
 Print the value of the variable.
-.It Fl d Fl -print-decimal
-Treat the value of the variable as a number and print it as a
-decimal.
-This is currently unimplemented.
 .It Fl R Fl -raw-guid
 Do not substitute well known names for GUID numeric values in output.
 .It Fl w Fl -write
-Write (replace) the variable specified with the value specified.
+Write (replace) the variable specified with the value specified from
+standard input.
+No command line option to do this is available since UEFI variables
+are binary structures rather than strings.
+.Xr echo 1
+.Fl n
+can be used to specify simple strings.
 .It Ar name
 Display the
 .Ar name
 environment variable.
-.It Ar name Ns = Ns Ar value
-Set the specified
-.Ar name
-to
-.Ar value .
-This is not yet implemented.
-If the
 .Sh COMPATIBILITY
 The
 .Nm
 program is intended to be compatible (strict superset) with a progam
 of the same name included in the Red Hat libefivar package.
+.Pp
+Except the
+.Fl d
+and
+.Fl -print-decimal
+flags are not implmenented and never will be.
+The
+.Fl d
+flag is a short-hand for
+.Fl -device-path .
 .Sh SEE ALSO
 Appendix A of the UEFI specification has the format for GUIDs.
 All GUIDs
 .Dq Globally Unique Identifiers
 have the format described in RFC 4122.
 .El
+.Pp
+.Xr efivar 8
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 12.0 .

Modified: head/usr.sbin/efivar/efivar.c
==============================================================================
--- head/usr.sbin/efivar/efivar.c	Thu Mar  9 00:31:31 2017	(r314926)
+++ head/usr.sbin/efivar/efivar.c	Thu Mar  9 00:31:36 2017	(r314927)
@@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$");
 
 #include <ctype.h>
 #include <efivar.h>
+#include <efivar-dp.h>
 #include <err.h>
 #include <errno.h>
 #include <getopt.h>
@@ -201,8 +202,13 @@ bindump(uint8_t *data, size_t datalen)
 static void
 devpath_dump(uint8_t *data, size_t datalen)
 {
+	char buffer[1024];
 
-	fprintf(stderr, "junk %p %zu\n", data, datalen);
+	efidp_format_device_path(buffer, sizeof(buffer),
+	    (const_efidp)data, datalen);
+	if (!Nflag)
+		printf(": ");
+	printf("%s\n", buffer);
 }
 
 static void


More information about the svn-src-all mailing list