<< ' ' << quoteName(lyx2lyx.toFilesystemEncoding())
<< " -t " << convert<string>(LYX_FORMAT)
<< " -o " << quoteName(tmpfile.toFilesystemEncoding())
- << ' ' << quoteName(filename.toFilesystemEncoding());
+ << ' ' << quoteName(filename.toSafeFilesystemEncoding());
string const command_str = command.str();
LYXERR(Debug::INFO, "Running '" << command_str << '\'');
// We don't need autosaves in the immediate future. (Asger)
resetAutosaveTimers();
- string const encodedFilename = d->filename.toFilesystemEncoding();
-
FileName backupName;
bool madeBackup = false;
makeDisplayPath(fname.absFilename()));
message(str);
+ string const encoded_fname = fname.toSafeFilesystemEncoding(os::CREATE);
+
if (params().compressed) {
- gz::ogzstream ofs(fname.toFilesystemEncoding().c_str(), ios::out|ios::trunc);
+ gz::ogzstream ofs(encoded_fname.c_str(), ios::out|ios::trunc);
retval = ofs && write(ofs);
} else {
- ofstream ofs(fname.toFilesystemEncoding().c_str(), ios::out|ios::trunc);
+ ofstream ofs(encoded_fname.c_str(), ios::out|ios::trunc);
retval = ofs && write(ofs);
}
// FIXME UNICODE
// We don't know the encoding of inputpath
docstring const inputpath = from_utf8(latex_path(original_path));
- os << "\\makeatletter\n"
- << "\\def\\input@path{{"
- << inputpath << "/}}\n"
- << "\\makeatother\n";
- d->texrow.newline();
- d->texrow.newline();
- d->texrow.newline();
+ docstring uncodable_glyphs;
+ Encoding const * const enc = runparams.encoding;
+ if (enc) {
+ for (size_t n = 0; n < inputpath.size(); ++n) {
+ docstring const glyph =
+ docstring(1, inputpath[n]);
+ if (enc->latexChar(inputpath[n], true) != glyph) {
+ LYXERR0("Uncodable character '"
+ << glyph
+ << "' in input path!");
+ uncodable_glyphs += glyph;
+ }
+ }
+ }
+
+ // warn user if we found uncodable glyphs.
+ if (!uncodable_glyphs.empty()) {
+ frontend::Alert::warning(_("Uncodable character in path"),
+ support::bformat(_("The path of your document\n"
+ "(%1$s)\n"
+ "contains glyphs that are unknown in the\n"
+ "current document encoding (namely %2$s).\n"
+ "This will likely result in incomplete output.\n\n"
+ "Chose an appropriate document encoding (such as utf8)\n"
+ "or change the path name."), inputpath, uncodable_glyphs));
+ } else {
+ os << "\\makeatletter\n"
+ << "\\def\\input@path{{"
+ << inputpath << "/}}\n"
+ << "\\makeatother\n";
+ d->texrow.newline();
+ d->texrow.newline();
+ d->texrow.newline();
+ }
}
// get parent macros (if this buffer has a parent) which will be
case LFUN_BUFFER_EXPORT: {
bool success = doExport(argument, false, false);
- dr.setError(success);
+ dr.setError(!success);
if (!success)
dr.setMessage(bformat(_("Error exporting to format: %1$s."),
func.argument()));
FileName const newauto = getAutosaveFilename();
oldauto.refresh();
if (newauto != oldauto && oldauto.exists())
- if (!oldauto.moveTo(newauto)))
+ if (!oldauto.moveTo(newauto))
LYXERR0("Unable to move autosave file `" << oldauto << "'!");
}