mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 03:36:39 +00:00
Convert filenames to local encoding for running lyx2lyx
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16311 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
e4c3ce4627
commit
29b6f5cad9
34
src/buffer.C
34
src/buffer.C
@ -569,11 +569,10 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Buffer::readFile(string const & filename)
|
bool Buffer::readFile(FileName const & filename)
|
||||||
{
|
{
|
||||||
// Check if the file is compressed.
|
// Check if the file is compressed.
|
||||||
FileName const name(makeAbsPath(filename));
|
string const format = getFormatFromContents(filename);
|
||||||
string const format = getFormatFromContents(name);
|
|
||||||
if (format == "gzip" || format == "zip" || format == "compress") {
|
if (format == "gzip" || format == "zip" || format == "compress") {
|
||||||
params().compressed = true;
|
params().compressed = true;
|
||||||
}
|
}
|
||||||
@ -581,7 +580,7 @@ bool Buffer::readFile(string const & filename)
|
|||||||
// remove dummy empty par
|
// remove dummy empty par
|
||||||
paragraphs().clear();
|
paragraphs().clear();
|
||||||
LyXLex lex(0, 0);
|
LyXLex lex(0, 0);
|
||||||
lex.setFile(name);
|
lex.setFile(filename);
|
||||||
if (!readFile(lex, filename))
|
if (!readFile(lex, filename))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -606,13 +605,13 @@ void Buffer::fully_loaded(bool const value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Buffer::readFile(LyXLex & lex, string const & filename)
|
bool Buffer::readFile(LyXLex & lex, FileName const & filename)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!filename.empty());
|
BOOST_ASSERT(!filename.empty());
|
||||||
|
|
||||||
if (!lex.isOK()) {
|
if (!lex.isOK()) {
|
||||||
Alert::error(_("Document could not be read"),
|
Alert::error(_("Document could not be read"),
|
||||||
bformat(_("%1$s could not be read."), from_utf8(filename)));
|
bformat(_("%1$s could not be read."), from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -621,7 +620,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
|
|
||||||
if (!lex.isOK()) {
|
if (!lex.isOK()) {
|
||||||
Alert::error(_("Document could not be read"),
|
Alert::error(_("Document could not be read"),
|
||||||
bformat(_("%1$s could not be read."), from_utf8(filename)));
|
bformat(_("%1$s could not be read."), from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -631,7 +630,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
|
|
||||||
Alert::error(_("Document format failure"),
|
Alert::error(_("Document format failure"),
|
||||||
bformat(_("%1$s is not a LyX document."),
|
bformat(_("%1$s is not a LyX document."),
|
||||||
from_utf8(filename)));
|
from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -647,14 +646,14 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
//lyxerr << "format: " << file_format << endl;
|
//lyxerr << "format: " << file_format << endl;
|
||||||
|
|
||||||
if (file_format != LYX_FORMAT) {
|
if (file_format != LYX_FORMAT) {
|
||||||
string const tmpfile = tempName();
|
FileName const tmpfile(tempName());
|
||||||
if (tmpfile.empty()) {
|
if (tmpfile.empty()) {
|
||||||
Alert::error(_("Conversion failed"),
|
Alert::error(_("Conversion failed"),
|
||||||
bformat(_("%1$s is from an earlier"
|
bformat(_("%1$s is from an earlier"
|
||||||
" version of LyX, but a temporary"
|
" version of LyX, but a temporary"
|
||||||
" file for converting it could"
|
" file for converting it could"
|
||||||
" not be created."),
|
" not be created."),
|
||||||
from_utf8(filename)));
|
from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
FileName const lyx2lyx = libFileSearch("lyx2lyx", "lyx2lyx");
|
FileName const lyx2lyx = libFileSearch("lyx2lyx", "lyx2lyx");
|
||||||
@ -664,14 +663,15 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
" version of LyX, but the"
|
" version of LyX, but the"
|
||||||
" conversion script lyx2lyx"
|
" conversion script lyx2lyx"
|
||||||
" could not be found."),
|
" could not be found."),
|
||||||
from_utf8(filename)));
|
from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ostringstream command;
|
ostringstream command;
|
||||||
command << os::python() << ' ' << quoteName(lyx2lyx.toFilesystemEncoding())
|
command << os::python()
|
||||||
<< " -t " << convert<string>(LYX_FORMAT)
|
<< ' ' << quoteName(lyx2lyx.toFilesystemEncoding())
|
||||||
<< " -o " << quoteName(tmpfile) << ' '
|
<< " -t " << convert<string>(LYX_FORMAT)
|
||||||
<< quoteName(filename);
|
<< " -o " << quoteName(tmpfile.toFilesystemEncoding())
|
||||||
|
<< ' ' << quoteName(filename.toFilesystemEncoding());
|
||||||
string const command_str = command.str();
|
string const command_str = command.str();
|
||||||
|
|
||||||
lyxerr[Debug::INFO] << "Running '"
|
lyxerr[Debug::INFO] << "Running '"
|
||||||
@ -684,7 +684,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
bformat(_("%1$s is from an earlier version"
|
bformat(_("%1$s is from an earlier version"
|
||||||
" of LyX, but the lyx2lyx script"
|
" of LyX, but the lyx2lyx script"
|
||||||
" failed to convert it."),
|
" failed to convert it."),
|
||||||
from_utf8(filename)));
|
from_utf8(filename.absFilename())));
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
bool const ret = readFile(tmpfile);
|
bool const ret = readFile(tmpfile);
|
||||||
@ -698,7 +698,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename)
|
|||||||
Alert::error(_("Document format failure"),
|
Alert::error(_("Document format failure"),
|
||||||
bformat(_("%1$s ended unexpectedly, which means"
|
bformat(_("%1$s ended unexpectedly, which means"
|
||||||
" that it is probably corrupted."),
|
" that it is probably corrupted."),
|
||||||
from_utf8(filename)));
|
from_utf8(filename.absFilename())));
|
||||||
}
|
}
|
||||||
|
|
||||||
//lyxerr << "removing " << MacroTable::localMacros().size()
|
//lyxerr << "removing " << MacroTable::localMacros().size()
|
||||||
|
@ -99,7 +99,7 @@ public:
|
|||||||
void loadAutoSaveFile();
|
void loadAutoSaveFile();
|
||||||
|
|
||||||
/// load a new file
|
/// load a new file
|
||||||
bool readFile(std::string const & filename);
|
bool readFile(support::FileName const & filename);
|
||||||
|
|
||||||
/// read the header, returns number of unknown tokens
|
/// read the header, returns number of unknown tokens
|
||||||
int readHeader(LyXLex & lex);
|
int readHeader(LyXLex & lex);
|
||||||
@ -367,7 +367,7 @@ private:
|
|||||||
/** Inserts a file into a document
|
/** Inserts a file into a document
|
||||||
\return \c false if method fails.
|
\return \c false if method fails.
|
||||||
*/
|
*/
|
||||||
bool readFile(LyXLex &, std::string const & filename);
|
bool readFile(LyXLex &, support::FileName const & filename);
|
||||||
|
|
||||||
bool do_writeFile(std::ostream & ofs) const;
|
bool do_writeFile(std::ostream & ofs) const;
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ using namespace std;
|
|||||||
using support::bformat;
|
using support::bformat;
|
||||||
using support::FileName;
|
using support::FileName;
|
||||||
using support::libFileSearch;
|
using support::libFileSearch;
|
||||||
|
using support::makeAbsPath;
|
||||||
using support::makeDisplayPath;
|
using support::makeDisplayPath;
|
||||||
using support::onlyFilename;
|
using support::onlyFilename;
|
||||||
using support::onlyPath;
|
using support::onlyPath;
|
||||||
@ -100,7 +101,7 @@ bool readFile(Buffer * const b, FileName const & s)
|
|||||||
case 0:
|
case 0:
|
||||||
// the file is not saved if we load the emergency file.
|
// the file is not saved if we load the emergency file.
|
||||||
b->markDirty();
|
b->markDirty();
|
||||||
return b->readFile(e.absFilename());
|
return b->readFile(e);
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -127,7 +128,7 @@ bool readFile(Buffer * const b, FileName const & s)
|
|||||||
case 0:
|
case 0:
|
||||||
// the file is not saved if we load the autosave file.
|
// the file is not saved if we load the autosave file.
|
||||||
b->markDirty();
|
b->markDirty();
|
||||||
return b->readFile(a.absFilename());
|
return b->readFile(a);
|
||||||
case 1:
|
case 1:
|
||||||
// Here we delete the autosave
|
// Here we delete the autosave
|
||||||
unlink(a);
|
unlink(a);
|
||||||
@ -136,7 +137,7 @@ bool readFile(Buffer * const b, FileName const & s)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return b->readFile(s.absFilename());
|
return b->readFile(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -185,16 +186,16 @@ Buffer * newFile(string const & filename, string const & templatename,
|
|||||||
Buffer * b = theBufferList().newBuffer(filename);
|
Buffer * b = theBufferList().newBuffer(filename);
|
||||||
BOOST_ASSERT(b);
|
BOOST_ASSERT(b);
|
||||||
|
|
||||||
string tname;
|
FileName tname;
|
||||||
// use defaults.lyx as a default template if it exists.
|
// use defaults.lyx as a default template if it exists.
|
||||||
if (templatename.empty())
|
if (templatename.empty())
|
||||||
tname = libFileSearch("templates", "defaults.lyx").absFilename();
|
tname = libFileSearch("templates", "defaults.lyx");
|
||||||
else
|
else
|
||||||
tname = templatename;
|
tname = FileName(makeAbsPath(templatename));
|
||||||
|
|
||||||
if (!tname.empty()) {
|
if (!tname.empty()) {
|
||||||
if (!b->readFile(tname)) {
|
if (!b->readFile(tname)) {
|
||||||
docstring const file = makeDisplayPath(tname, 50);
|
docstring const file = makeDisplayPath(tname.absFilename(), 50);
|
||||||
docstring const text = bformat(
|
docstring const text = bformat(
|
||||||
_("The specified document template\n%1$s\ncould not be read."),
|
_("The specified document template\n%1$s\ncould not be read."),
|
||||||
file);
|
file);
|
||||||
|
Loading…
Reference in New Issue
Block a user