]> git.lyx.org Git - features.git/commitdiff
Remove the tmp dir only if it has been created and create the lyxsocket
authorEnrico Forestieri <forenr@lyx.org>
Wed, 13 Dec 2006 05:29:19 +0000 (05:29 +0000)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 13 Dec 2006 05:29:19 +0000 (05:29 +0000)
in the right place.

* src/lyx_main.C
(LyX::exec): create the lyxsocket in the temporary directory.
(LyX::prepareExit): remove the temporary directory only if it
has been created.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16262 a592a061-630c-0410-9148-cb99ea01b6c8

Status.15x
src/lyx_main.C

index a137f889b73baf8f7f1e3f94816dd10e1d784b6e..c7ef8c2c3f7c1c4366984cdd922440bcc6bcaab6 100644 (file)
@@ -29,8 +29,6 @@ GENERAL
 
 FILE
 
-* LyX tries to delete /tmp if it is called with invalid arguments
-
 * Loading de_Userguide.lyx results in two parse errors:
   Paragraph ended in line 21206
   Missing \end_layout.
@@ -564,3 +562,6 @@ CREDITS:
 * Non-ascii filenames do not work at all and result in an assertion or garbage.
   FIXED (Georg 2006-12-12).
 
+* LyX tries to delete /tmp if it is called with invalid arguments
+  FIXED (Enrico 2006-12-13)
+
index cccd96a80576caeb32349fa4f689e045be57e1e0..afa834e130a017db98bb302874d4be81cf5bd2f0 100644 (file)
@@ -110,6 +110,9 @@ bool use_gui = true;
 
 namespace {
 
+/// Don't try to remove the temporary directory if it has not been created
+bool remove_tmpdir = false;
+
 // Filled with the command line arguments "foo" of "-sysdir foo" or
 // "-userdir foo".
 string cl_system_support;
@@ -373,17 +376,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);
@@ -395,6 +387,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();
        
@@ -417,21 +422,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 (remove_tmpdir) {
+               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) {
@@ -857,6 +857,7 @@ bool LyX::init()
                // trying again but simply exit.
                return false;
        }
+       remove_tmpdir = true;
 
        if (lyxerr.debugging(Debug::INIT)) {
                lyxerr << "LyX tmp dir: `" << package().temp_dir() << '\'' << endl;