diff mbox series

[1/2] dismod: print the policy version only in interactive mode

Message ID 20230613104439.2985001-1-yamato@redhat.com (mailing list archive)
State Superseded
Delegated to: Petr Lautrbach
Headers show
Series [1/2] dismod: print the policy version only in interactive mode | expand

Commit Message

Masatake YAMATO June 13, 2023, 10:44 a.m. UTC
Instead, a new action, 'v' for printing the policy (and/or
module) version in batch mode is added.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
---
 checkpolicy/test/dismod.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)
diff mbox series

Patch

diff --git a/checkpolicy/test/dismod.c b/checkpolicy/test/dismod.c
index 515fc9a5..fa729ef2 100644
--- a/checkpolicy/test/dismod.c
+++ b/checkpolicy/test/dismod.c
@@ -91,6 +91,7 @@  static struct command {
 	{CMD|NOOPT, 'l', "Link in a module"},
 	{CMD,       'u', "Display the unknown handling setting"},
 	{CMD,       'F', "Display filename_trans rules"},
+	{CMD,       'v', "display the version of policy and/or module"},
 	{HEADER, 0, ""},
 	{CMD|NOOPT, 'f',  "set output file"},
 	{CMD|NOOPT, 'm',  "display menu"},
@@ -899,6 +900,19 @@  static int menu(void)
 	return 0;
 }
 
+static void print_version_info(policydb_t * p, FILE * fp)
+{
+	if (p->policy_type == POLICY_BASE) {
+		fprintf(fp, "Binary base policy file loaded.\n");
+	} else {
+		fprintf(fp, "Binary policy module file loaded.\n");
+		fprintf(fp, "Module name: %s\n", p->name);
+		fprintf(fp, "Module version: %s\n", p->version);
+	}
+
+	fprintf(fp, "Policy version: %d\n\n", p->policyvers);
+}
+
 int main(int argc, char **argv)
 {
 	char *ops = NULL;
@@ -952,17 +966,10 @@  int main(int argc, char **argv)
 		exit(1);
 	}
 
-	if (policydb.policy_type == POLICY_BASE) {
-		printf("Binary base policy file loaded.\n");
-	} else {
-		printf("Binary policy module file loaded.\n");
-		printf("Module name: %s\n", policydb.name);
-		printf("Module version: %s\n", policydb.version);
-	}
-
-	printf("Policy version: %d\n\n", policydb.policyvers);
-	if (!ops)
+	if (!ops) {
+		print_version_info(&policydb, stdout);
 		menu();
+	}
 	for (;;) {
 		if (ops) {
 			puts("");
@@ -1069,6 +1076,9 @@  int main(int argc, char **argv)
 		case 'l':
 			link_module(&policydb, out_fp);
 			break;
+		case 'v':
+			print_version_info(&policydb, out_fp);
+			break;
 		case 'q':
 			policydb_destroy(&policydb);
 			exit(0);