int LyX::init(int & argc, char * argv[])
{
- try {
- // check for any spurious extra arguments
- // other than documents
- for (int argi = 1; argi < argc ; ++argi) {
- if (argv[argi][0] == '-') {
- lyxerr << to_utf8(
- bformat(_("Wrong command line option `%1$s'. Exiting."),
- from_utf8(os::utf8_argv(argi)))) << endl;
- return EXIT_FAILURE;
- }
- }
-
- // Initialization of LyX (reads lyxrc and more)
- LYXERR(Debug::INIT, "Initializing LyX::init...");
- bool success = init();
- LYXERR(Debug::INIT, "Initializing LyX::init...done");
- if (!success)
- return EXIT_FAILURE;
- // Remaining arguments are assumed to be files to load.
- for (int argi = 1; argi < argc; ++argi)
- pimpl_->files_to_load_.push_back(os::utf8_argv(argi));
-
- if (!use_gui && pimpl_->files_to_load_.empty()) {
- lyxerr << to_utf8(_("Missing filename for this operation.")) << endl;
+ // check for any spurious extra arguments
+ // other than documents
+ for (int argi = 1; argi < argc ; ++argi) {
+ if (argv[argi][0] == '-') {
+ lyxerr << to_utf8(
+ bformat(_("Wrong command line option `%1$s'. Exiting."),
+ from_utf8(os::utf8_argv(argi)))) << endl;
return EXIT_FAILURE;
}
+ }
- if (first_start) {
- pimpl_->files_to_load_.push_back(
- i18nLibFileSearch("examples", "splash.lyx").absFileName());
- }
+ // Initialization of LyX (reads lyxrc and more)
+ LYXERR(Debug::INIT, "Initializing LyX::init...");
+ bool success = init();
+ LYXERR(Debug::INIT, "Initializing LyX::init...done");
+ if (!success)
+ return EXIT_FAILURE;
- return EXIT_SUCCESS;
+ // Remaining arguments are assumed to be files to load.
+ for (int argi = 1; argi < argc; ++argi)
+ pimpl_->files_to_load_.push_back(os::utf8_argv(argi));
- } catch (exception const &e) {
- // This can happen _in_theory_ in replaceEnvironmentPath
- lyxerr << "Caught exception `" << e.what() << "'." << endl;
+ if (!use_gui && pimpl_->files_to_load_.empty()) {
+ lyxerr << to_utf8(_("Missing filename for this operation.")) << endl;
return EXIT_FAILURE;
}
+
+ if (first_start) {
+ pimpl_->files_to_load_.push_back(
+ i18nLibFileSearch("examples", "splash.lyx").absFileName());
+ }
+
+ return EXIT_SUCCESS;
}
// $[A-Za-z_][A-Za-z_0-9]*
static string const envvar = "[$]([A-Za-z_][A-Za-z_0-9]*)";
- static regex const envvar_br_re("(.*)" + envvar_br + "(.*)");
- static regex const envvar_re("(.*)" + envvar + "(.*)");
- string result = path;
- while (1) {
- smatch what;
- if (!regex_match(result, what, envvar_br_re)) {
- if (!regex_match(result, what, envvar_re))
- break;
+ // Coverity thinks that the regex constructor can return an
+ // exception. We know that it is not true since our regex are
+ // hardcoded, but we have to protect against that nevertheless.
+ try {
+ static regex const envvar_br_re("(.*)" + envvar_br + "(.*)");
+ static regex const envvar_re("(.*)" + envvar + "(.*)");
+ string result = path;
+ while (1) {
+ smatch what;
+ if (!regex_match(result, what, envvar_br_re)) {
+ if (!regex_match(result, what, envvar_re))
+ break;
+ }
+ string env_var = getEnv(what.str(2));
+ result = what.str(1) + env_var + what.str(3);
}
- string env_var = getEnv(what.str(2));
- result = what.str(1) + env_var + what.str(3);
+ return result;
+ } catch (exception const & e) {
+ LYXERR0("Something is very wrong: " << e.what());
+ return path;
}
- return result;
}