Remove the tmp dir only if it has been created and create the lyxsocket

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
This commit is contained in:
Enrico Forestieri 2006-12-13 05:29:19 +00:00
parent d213175b85
commit cd5b51f4a3
2 changed files with 29 additions and 27 deletions

View 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)

View 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;
if (remove_tmpdir) {
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 (!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;