From: Michael Chang <mch...@suse.com>

The option can be used to suppress output if we only want to test the
return value of the command.

Also, mention this option in the documentation.

Signed-off-by: Michael Chang <mch...@suse.com>
Signed-off-by: Maxim Suhanov <dfirb...@gmail.com>
Reviewed-by: Daniel Kiper <daniel.ki...@oracle.com>
---
 docs/grub.texi              |  4 +++-
 grub-core/commands/search.c |  7 ++++++-
 grub-core/disk/diskfilter.c | 25 +++++++++++++++++++------
 3 files changed, 28 insertions(+), 8 deletions(-)

diff --git a/docs/grub.texi b/docs/grub.texi
index cc4acb27e..34b3484dc 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -6743,12 +6743,14 @@ Alias for @code{hashsum --hash crc32 arg @dots{}}. See 
command @command{hashsum}
 @node cryptocheck
 @subsection cryptocheck
 
-@deffn Command cryptocheck device
+@deffn Command cryptocheck [ @option{--quiet} ] device
 Check if a given diskfilter device is backed by encrypted devices
 (@pxref{cryptomount} for additional information).
 
 The command examines all backing devices, physical volumes, of a specified
 logical volume, like LVM2, and fails when at least one of them is unencrypted.
+
+The option @option{--quiet} can be given to suppress the output.
 @end deffn
 
 @node cryptomount
diff --git a/grub-core/commands/search.c b/grub-core/commands/search.c
index 185c1e70f..49b679e80 100644
--- a/grub-core/commands/search.c
+++ b/grub-core/commands/search.c
@@ -67,6 +67,9 @@ is_unencrypted_disk (grub_disk_t disk)
 
   if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID)
     {
+      char opt[] = "--quiet";
+      char *args[2];
+
       cmd = grub_command_find ("cryptocheck");
       if (cmd == NULL) /* No diskfilter module loaded for some reason. */
         return true;
@@ -77,7 +80,9 @@ is_unencrypted_disk (grub_disk_t disk)
         return true;
 
       grub_snprintf (disk_str, disk_str_len, "(%s)", disk->name);
-      res = cmd->func (cmd, 1, &disk_str);
+      args[0] = opt;
+      args[1] = disk_str;
+      res = cmd->func (cmd, 2, args);
       grub_free (disk_str);
       return (res != GRUB_ERR_NONE) ? true : false; /* GRUB_ERR_NONE for 
encrypted. */
     }
diff --git a/grub-core/disk/diskfilter.c b/grub-core/disk/diskfilter.c
index 9eda22e3f..3a26de60c 100644
--- a/grub-core/disk/diskfilter.c
+++ b/grub-core/disk/diskfilter.c
@@ -1414,6 +1414,19 @@ grub_cmd_cryptocheck (grub_command_t cmd __attribute__ 
((unused)),
   int check_pvs_res;
   int namelen;
   int pvs_cnt;
+  int opt_quiet = 0;
+
+  if (argc == 2)
+    {
+      if (grub_strcmp (args[0], "--quiet") == 0)
+       {
+         opt_quiet = 1;
+         argc--;
+         args++;
+       }
+      else
+       return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("unrecognized option: 
%s"), args[0]);
+    }
 
   if (argc != 1)
     return grub_error (GRUB_ERR_BAD_ARGUMENT, N_("disk name expected"));
@@ -1436,11 +1449,11 @@ grub_cmd_cryptocheck (grub_command_t cmd __attribute__ 
((unused)),
 
   check_pvs_res = grub_diskfilter_check_pvs_encrypted (disk, &pvs_cnt);
   grub_disk_close (disk);
-
-  grub_printf("%s is %sencrypted (%d pv%s examined)\n", &args[0][1],
-              (check_pvs_res == GRUB_ERR_NONE) ? "" : "un",
-              pvs_cnt,
-              (pvs_cnt > 1) ? "s" : "");
+  if (!opt_quiet)
+    grub_printf ("%s is %sencrypted (%d pv%s examined)\n", &args[0][1],
+                (check_pvs_res == GRUB_ERR_NONE) ? "" : "un",
+                pvs_cnt,
+                (pvs_cnt > 1) ? "s" : "");
 
   return check_pvs_res;
 }
@@ -1468,7 +1481,7 @@ GRUB_MOD_INIT(diskfilter)
 {
   grub_disk_dev_register (&grub_diskfilter_dev);
   cmd = grub_register_command ("cryptocheck", grub_cmd_cryptocheck,
-                                N_("DEVICE"),
+                                N_("[--quiet] DEVICE"),
                                 N_("Check if a logical volume resides on 
encrypted disks."));
 }
 
-- 
2.11.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to