@@ -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);
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(-)