]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_main.C
* src/frontends/qt4/QTocDialog.C (updateGui):
[lyx.git] / src / lyx_main.C
index ca36f2c081c1e808128c08db1b7a632e9178e1d7..add424f8b0f2f7f353b269b0a99fb78dcd4553ba 100644 (file)
@@ -332,8 +332,9 @@ int LyX::exec(int & argc, char * argv[])
        // we need to parse for "-dbg" and "-help"
        easyParse(argc, argv);
 
-       support::init_package(argv[0], cl_system_support, cl_user_support,
-                                  support::top_build_dir_is_one_level_up);
+       support::init_package(to_utf8(from_local8bit(argv[0])),
+                             cl_system_support, cl_user_support,
+                             support::top_build_dir_is_one_level_up);
 
        if (!use_gui) {
                // FIXME: create a ConsoleApplication
@@ -372,17 +373,6 @@ int LyX::exec(int & argc, char * argv[])
 
        initGuiFont();
 
-       // FIXME
-       /* Create a CoreApplication class that will provide the main event loop
-       * and the socket callback registering. With Qt4, only QtCore
-       * library would be needed.
-       * When this is done, a server_mode could be created and the following two
-       * line would be moved out from here.
-       */
-       pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
-       pimpl_->lyx_socket_.reset(new LyXServerSocket(&pimpl_->lyxfunc_, 
-               support::os::internal_path(package().temp_dir() + "/lyxsocket")));
-
        // Parse and remove all known arguments in the LyX singleton
        // Give an error for all remaining ones.
        int exit_status = init(argc, argv);
@@ -394,6 +384,19 @@ int LyX::exec(int & argc, char * argv[])
                return exit_status;
        }
 
+       // FIXME
+       /* Create a CoreApplication class that will provide the main event loop
+       * and the socket callback registering. With Qt4, only QtCore
+       * library would be needed.
+       * When this is done, a server_mode could be created and the following two
+       * line would be moved out from here.
+       */
+       // Note: socket callback must be registered after init(argc, argv)
+       // such that package().temp_dir() is properly initialized.
+       pimpl_->lyx_server_.reset(new LyXServer(&pimpl_->lyxfunc_, lyxrc.lyxpipes));
+       pimpl_->lyx_socket_.reset(new LyXServerSocket(&pimpl_->lyxfunc_, 
+               support::os::internal_path(package().temp_dir() + "/lyxsocket")));
+
        // Start the real execution loop.
        exit_status = pimpl_->application_->exec();
        
@@ -416,21 +419,16 @@ void LyX::prepareExit()
        pimpl_->buffer_list_.closeAll();
 
        // do any other cleanup procedures now
-       lyxerr[Debug::INFO] << "Deleting tmp dir " << package().temp_dir() << endl;
-
-       // Prevent the deletion of /tmp if LyX was called with invalid
-       // arguments. Does not work on windows.
-       // FIXME: Fix the real bug instead.
-       if (package().temp_dir() == "/tmp") {
-               lyxerr << "Not deleting /tmp." << endl;
-               return;
-       }
-
-       if (!destroyDir(FileName(package().temp_dir()))) {
-               docstring const msg =
-                       bformat(_("Unable to remove the temporary directory %1$s"),
-                       from_utf8(package().temp_dir()));
-               Alert::warning(_("Unable to remove temporary directory"), msg);
+       if (package().temp_dir() != package().system_temp_dir()) {
+               lyxerr[Debug::INFO] << "Deleting tmp dir "
+                                   << package().temp_dir() << endl;
+
+               if (!destroyDir(FileName(package().temp_dir()))) {
+                       docstring const msg =
+                               bformat(_("Unable to remove the temporary directory %1$s"),
+                               from_utf8(package().temp_dir()));
+                       Alert::warning(_("Unable to remove temporary directory"), msg);
+               }
        }
 
        if (use_gui) {
@@ -481,7 +479,9 @@ int LyX::init(int & argc, char * argv[])
        for (int argi = argc - 1; argi >= 1; --argi) {
                // get absolute path of file and add ".lyx" to
                // the filename if necessary
-               pimpl_->files_to_load_.push_back(fileSearch(string(), os::internal_path(argv[argi]), "lyx"));
+               pimpl_->files_to_load_.push_back(fileSearch(string(),
+                       os::internal_path(to_utf8(from_local8bit(argv[argi]))),
+                       "lyx", support::allow_unreadable));
        }
 
        if (first_start)
@@ -500,7 +500,6 @@ void LyX::loadFiles()
                if (it->empty())
                        continue;
 
-               Buffer * const b = newFile(it->absFilename(), string(), true);
                Buffer * buf = pimpl_->buffer_list_.newBuffer(it->absFilename(), false);
                if (loadLyXFile(buf, *it)) {
                        ErrorList const & el = buf->errorList("Parse");
@@ -1333,8 +1332,8 @@ void LyX::easyParse(int & argc, char * argv[])
                if (it == cmdmap.end())
                        continue;
 
-               string arg((i + 1 < argc) ? argv[i + 1] : "");
-               string arg2((i + 2 < argc) ? argv[i + 2] : "");
+               string const arg((i + 1 < argc) ? to_utf8(from_local8bit(argv[i + 1])) : string());
+               string const arg2((i + 2 < argc) ? to_utf8(from_local8bit(argv[i + 2])) : string());
 
                int const remove = 1 + it->second(arg, arg2);