2019-02-05 02:44:07 +02:00
|
|
|
[Main::] Main.
|
|
|
|
|
|
|
|
The top level, which decides what is to be done and then carries
|
|
|
|
this plan out.
|
|
|
|
|
|
|
|
@h Main routine.
|
|
|
|
|
|
|
|
@e SILENCE_CLSW
|
2019-02-27 12:22:00 +02:00
|
|
|
@e VERBOSE_CLSW
|
2019-02-05 02:44:07 +02:00
|
|
|
@e PROBLEMS_CLSW
|
|
|
|
|
|
|
|
=
|
2019-02-27 12:22:00 +02:00
|
|
|
pathname *path_to_inpolicy = NULL; /* where we are installed */
|
2019-03-11 01:45:32 +02:00
|
|
|
pathname *path_to_inpolicy_workspace = NULL; /* the materials pathname */
|
2019-02-27 12:22:00 +02:00
|
|
|
int return_happy = TRUE, silence_mode = FALSE, verbose_mode = FALSE;
|
2019-02-05 02:44:07 +02:00
|
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
|
|
Foundation::start();
|
|
|
|
|
|
|
|
CommandLine::declare_heading(
|
|
|
|
L"[[Purpose]]\n\n"
|
|
|
|
L"usage: inpolicy [options]\n");
|
|
|
|
|
|
|
|
CommandLine::declare_switch(PROBLEMS_CLSW, L"check-problems", 1,
|
|
|
|
L"check problem test case coverage");
|
|
|
|
|
2019-02-27 12:22:00 +02:00
|
|
|
CommandLine::declare_boolean_switch(SILENCE_CLSW, L"silence", 1,
|
2020-02-27 02:35:17 +02:00
|
|
|
L"print nothing unless there's something wrong", FALSE);
|
2019-02-27 12:22:00 +02:00
|
|
|
CommandLine::declare_boolean_switch(VERBOSE_CLSW, L"verbose", 1,
|
2020-02-27 02:35:17 +02:00
|
|
|
L"explain what inpolicy is doing", FALSE);
|
2019-02-27 12:22:00 +02:00
|
|
|
|
2019-02-05 02:44:07 +02:00
|
|
|
CommandLine::read(argc, argv, NULL, &Main::respond, &Main::disallow);
|
|
|
|
|
2019-02-27 12:22:00 +02:00
|
|
|
path_to_inpolicy = Pathnames::installation_path("INPOLICY_PATH", I"inpolicy");
|
2019-03-11 01:45:32 +02:00
|
|
|
path_to_inpolicy_workspace = Pathnames::subfolder(path_to_inpolicy, I"Workspace");
|
2019-02-27 12:22:00 +02:00
|
|
|
if (verbose_mode) PRINT("Installation path is %p\n", path_to_inpolicy);
|
|
|
|
|
2019-02-05 02:44:07 +02:00
|
|
|
Foundation::end();
|
|
|
|
if (return_happy) return 0; else return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
void Main::disallow(int id, text_stream *arg, void *state) {
|
|
|
|
Errors::fatal("no arguments are allowed at the command line");
|
|
|
|
}
|
|
|
|
|
|
|
|
@
|
|
|
|
|
|
|
|
@d RUNTEST(Routine)
|
2019-02-27 12:22:00 +02:00
|
|
|
path_to_inpolicy = Pathnames::installation_path("INPOLICY_PATH", I"inpolicy");
|
2019-03-11 01:45:32 +02:00
|
|
|
path_to_inpolicy_workspace = Pathnames::subfolder(path_to_inpolicy, I"Workspace");
|
2019-02-05 02:44:07 +02:00
|
|
|
if (silence_mode) {
|
|
|
|
if (Routine(NULL) == FALSE) { return_happy = FALSE; Routine(STDERR); }
|
|
|
|
} else {
|
|
|
|
if (Routine(STDOUT) == FALSE) return_happy = FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
=
|
|
|
|
void Main::respond(int id, int val, text_stream *arg, void *state) {
|
|
|
|
switch (id) {
|
|
|
|
case PROBLEMS_CLSW: RUNTEST(Coverage::check); break;
|
|
|
|
case SILENCE_CLSW: silence_mode = val; break;
|
2019-02-27 12:22:00 +02:00
|
|
|
case VERBOSE_CLSW: verbose_mode = val; break;
|
2019-02-05 02:44:07 +02:00
|
|
|
}
|
|
|
|
}
|