X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyx_main.C;h=795c4360dbe12e578a4ea823c626461cddeaf839;hb=f360c39690150b6ff9116ff56c39c3a0e0a92fd2;hp=ece5ba4fc88b48f0a6b8f77849a7f163bbae025f;hpb=da7667356810c250a0875649d0b0291c90462c65;p=lyx.git diff --git a/src/lyx_main.C b/src/lyx_main.C index ece5ba4fc8..795c4360db 100644 --- a/src/lyx_main.C +++ b/src/lyx_main.C @@ -18,6 +18,7 @@ #endif #include "version.h" +#include #include "lyx_main.h" #include "lyx_gui.h" #include "LyXView.h" @@ -43,10 +44,6 @@ #include "converter.h" #include "language.h" #include "support/os.h" -// for NO_LATEX -#if 1 -#include "lyxfont.h" -#endif using std::endl; @@ -133,7 +130,8 @@ LyX::LyX(int * argc, char * argv[]) } if (first_start) { - string splash = i18nLibFileSearch("examples", "splash.lyx"); + string const splash = + i18nLibFileSearch("examples", "splash.lyx"); lyxerr[Debug::INIT] << "Opening splash document " << splash << "..." << endl; Buffer * loadb = bufferlist.loadLyXFile(splash); @@ -188,7 +186,52 @@ LyX::~LyX() } -extern "C" void error_handler(int err_sig); +extern "C" { + +static +void error_handler(int err_sig) +{ + switch (err_sig) { + case SIGHUP: + lyxerr << "\nlyx: SIGHUP signal caught" << endl; + break; + case SIGINT: + // no comments + break; + case SIGFPE: + lyxerr << "\nlyx: SIGFPE signal caught" << endl; + break; + case SIGSEGV: + lyxerr << "\nlyx: SIGSEGV signal caught" << endl; + lyxerr << + "Sorry, you have found a bug in LyX." + " If possible, please read 'Known bugs'\n" + "under the Help menu and then send us " + "a full bug report. Thanks!" << endl; + break; + case SIGTERM: + // no comments + break; + } + + // Deinstall the signal handlers + signal(SIGHUP, SIG_DFL); + signal(SIGINT, SIG_DFL); + signal(SIGFPE, SIG_DFL); + signal(SIGSEGV, SIG_DFL); + signal(SIGTERM, SIG_DFL); + + bufferlist.emergencyWriteAll(); + + lyxerr << "Bye." << endl; + if (err_sig!= SIGHUP && + (!GetEnv("LYXDEBUG").empty() || err_sig == SIGSEGV)) + lyx::abort(); + exit(0); +} + +} + void LyX::init(bool gui) { @@ -290,7 +333,7 @@ void LyX::init(bool gui) << searchpath << endl; string const filename = "chkconfig.ltx"; - string temp = FileOpenSearch(searchpath, filename, string()); + string const temp = FileOpenSearch(searchpath, filename, string()); system_lyxdir = OnlyPath(temp); // Reduce "path/../path" stuff out of system directory @@ -366,11 +409,12 @@ void LyX::init(bool gui) // Check that user LyX directory is ok. We don't do that if // running in batch mode. - if (gui) + if (gui) { queryUserLyXDir(explicit_userdir); - else + } else { first_start = false; - + } + // // Shine up lyxrc defaults // @@ -591,7 +635,7 @@ bool LyX::readRcFile(string const & name) { lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; - string lyxrc_path = LibFileSearch(string(), name); + string const lyxrc_path = LibFileSearch(string(), name); if (!lyxrc_path.empty()){ lyxerr[Debug::INIT] << "Found " << name << " in " << lyxrc_path << endl; @@ -602,8 +646,10 @@ bool LyX::readRcFile(string const & name) return false; } return true; - } else + } else { lyxerr[Debug::INIT] << "Could not find " << name << endl; + } + return false; } @@ -624,7 +670,7 @@ void LyX::readUIFile(string const & name) lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; - string ui_path = LibFileSearch("ui", name, "ui"); + string const ui_path = LibFileSearch("ui", name, "ui"); if (ui_path.empty()) { lyxerr[Debug::INIT] << "Could not find " << name << endl; @@ -636,7 +682,7 @@ void LyX::readUIFile(string const & name) << " in " << ui_path << endl; LyXLex lex(uitags, ui_last - 1); lex.setFile(ui_path); - if (!lex.IsOK()) { + if (!lex.isOK()) { lyxerr << "Unable to set LyXLeX for ui file: " << ui_path << endl; } @@ -644,7 +690,7 @@ void LyX::readUIFile(string const & name) if (lyxerr.debugging(Debug::PARSER)) lex.printTable(lyxerr); - while (lex.IsOK()) { + while (lex.isOK()) { switch (lex.lex()) { case ui_menuset: menubackend.read(lex); @@ -655,7 +701,7 @@ void LyX::readUIFile(string const & name) break; default: - if(!strip(lex.GetString()).empty()) + if(!strip(lex.getString()).empty()) lex.printError("LyX::ReadUIFile: " "Unknown menu tag: `$$Token'"); break; @@ -669,7 +715,7 @@ void LyX::readLanguagesFile(string const & name) { lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; - string lang_path = LibFileSearch(string(), name); + string const lang_path = LibFileSearch(string(), name); if (lang_path.empty()) { lyxerr[Debug::INIT] << "Could not find " << name << endl; languages.setDefaults(); @@ -684,7 +730,7 @@ void LyX::readEncodingsFile(string const & name) { lyxerr[Debug::INIT] << "About to read " << name << "..." << endl; - string enc_path = LibFileSearch(string(), name); + string const enc_path = LibFileSearch(string(), name); if (enc_path.empty()) { lyxerr[Debug::INIT] << "Could not find " << name << endl; return; @@ -707,7 +753,6 @@ void setDebuggingLevel(string const & dbgLevel) // Give command line help void commandLineHelp() { - lyxerr << "LyX " LYX_VERSION << " of " LYX_RELEASE << endl; lyxerr << _("Usage: lyx [ command line switches ] [ name.lyx ... ]\n" "Command line switches (case sensitive):\n" @@ -725,9 +770,20 @@ void commandLineHelp() "\t-i [--import] fmt file.xxx\n" " where fmt is the import format of choice\n" " and file.xxx is the file to be imported.\n" + "\t-version summarize version and build info\n" "Check the LyX man page for more details.") << endl; } +// Give command line version information +void commandLineVersionInfo() +{ + lyxerr << "LyX " LYX_VERSION << " of " LYX_RELEASE << endl; + lyxerr << "Built on " << __DATE__ << ", " << __TIME__ << endl; + + lyxerr << version_info << endl; +} + + } // namespace anon @@ -777,6 +833,11 @@ bool LyX::easyParse(int * argc, char * argv[]) commandLineHelp(); exit(0); } + // Check for --version or -version + else if (arg == "--version" || arg == "-version") { + commandLineVersionInfo(); + exit(0); + } // Check for "-nw": No XWindows as for emacs this should // give a LyX that could be used in a terminal window. //else if (arg == "-nw") { @@ -839,44 +900,3 @@ bool LyX::easyParse(int * argc, char * argv[]) } -extern "C" -void error_handler(int err_sig) -{ - switch (err_sig) { - case SIGHUP: - lyxerr << "\nlyx: SIGHUP signal caught" << endl; - break; - case SIGINT: - // no comments - break; - case SIGFPE: - lyxerr << "\nlyx: SIGFPE signal caught" << endl; - break; - case SIGSEGV: - lyxerr << "\nlyx: SIGSEGV signal caught" << endl; - lyxerr << - "Sorry, you have found a bug in LyX." - " If possible, please read 'Known bugs'\n" - "under the Help menu and then send us " - "a full bug report. Thanks!" << endl; - break; - case SIGTERM: - // no comments - break; - } - - // Deinstall the signal handlers - signal(SIGHUP, SIG_DFL); - signal(SIGINT, SIG_DFL); - signal(SIGFPE, SIG_DFL); - signal(SIGSEGV, SIG_DFL); - signal(SIGTERM, SIG_DFL); - - bufferlist.emergencyWriteAll(); - - lyxerr << "Bye." << endl; - if (err_sig!= SIGHUP && - (!GetEnv("LYXDEBUG").empty() || err_sig == SIGSEGV)) - lyx::abort(); - exit(0); -}