本文整理汇总了C++中FileName::toFilesystemEncoding方法的典型用法代码示例。如果您正苦于以下问题:C++ FileName::toFilesystemEncoding方法的具体用法?C++ FileName::toFilesystemEncoding怎么用?C++ FileName::toFilesystemEncoding使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileName
的用法示例。
在下文中一共展示了FileName::toFilesystemEncoding方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: do_copy
bool SpecialisedMover::do_copy(FileName const & from, FileName const & to,
string const & latex) const
{
if (command_.empty())
return Mover::do_copy(from, to, latex);
string command = command_;
command = subst(command, "$$i", quoteName(from.toFilesystemEncoding()));
command = subst(command, "$$o", quoteName(to.toFilesystemEncoding()));
command = subst(command, "$$l", quoteName(latex));
Systemcall one;
return one.startscript(Systemcall::Wait, command) == 0;
}
示例2: initSymbols
void initSymbols()
{
FileName const filename = libFileSearch(string(), "symbols");
LYXERR(Debug::MATHED, "read symbols from " << filename);
if (filename.empty()) {
lyxerr << "Could not find symbols file" << endl;
return;
}
ifstream fs(filename.toFilesystemEncoding().c_str());
string line;
bool skip = false;
while (getline(fs, line)) {
int charid = 0;
int fallbackid = 0;
if (line.empty() || line[0] == '#')
continue;
// special case of iffont/else/endif
if (line.size() >= 7 && line.substr(0, 6) == "iffont") {
istringstream is(line);
string tmp;
is >> tmp;
is >> tmp;
skip = !isMathFontAvailable(tmp);
continue;
} else if (line.size() >= 4 && line.substr(0, 4) == "else") {
示例3: tex2lyx
bool tex2lyx(string const & infilename, FileName const & outfilename,
string const & encoding)
{
if (outfilename.isReadableFile()) {
if (overwrite_files) {
cerr << "Overwriting existing file "
<< outfilename << endl;
} else {
cerr << "Not overwriting existing file "
<< outfilename << endl;
return false;
}
} else {
cerr << "Creating file " << outfilename << endl;
}
ofstream os(outfilename.toFilesystemEncoding().c_str());
if (!os.good()) {
cerr << "Could not open output file \"" << outfilename
<< "\" for writing." << endl;
return false;
}
#ifdef FILEDEBUG
cerr << "Input file: " << infilename << "\n";
cerr << "Output file: " << outfilename << "\n";
#endif
return tex2lyx(FileName(infilename), os, encoding);
}
示例4: read
bool TextClass::read(std::string const & str, ReadType rt)
{
Lexer lexrc(textClassTags);
istringstream is(str);
lexrc.setStream(is);
ReturnValues retval = read(lexrc, rt);
if (retval != FORMAT_MISMATCH)
return retval == OK;
// write the layout string to a temporary file
FileName const tempfile = FileName::tempName("TextClass_read");
ofstream os(tempfile.toFilesystemEncoding().c_str());
if (!os) {
LYXERR0("Unable to create temporary file");
return false;
}
os << str;
os.close();
// now try to convert it
bool const worx = convertLayoutFormat(tempfile, rt);
if (!worx) {
LYXERR0("Unable to convert internal layout information to format "
<< LAYOUT_FORMAT);
}
tempfile.removeFile();
return worx;
}
示例5: index
void ConverterCache::Impl::readIndex()
{
time_t const now = current_time();
FileName const index(addName(cache_dir.absFileName(), "index"));
ifstream is(index.toFilesystemEncoding().c_str());
Lexer lex;
lex.setStream(is);
while (lex.isOK()) {
if (!lex.next(true))
break;
string const orig_from = lex.getString();
if (!lex.next())
break;
string const to_format = lex.getString();
if (!lex.next())
break;
time_t const timestamp =
convert<unsigned long>(lex.getString());
if (!lex.next())
break;
unsigned long const checksum =
convert<unsigned long>(lex.getString());
FileName const orig_from_name(orig_from);
CacheItem item(orig_from_name, to_format, timestamp, checksum);
// Don't cache files that do not exist anymore
if (!orig_from_name.exists()) {
LYXERR(Debug::FILES, "Not caching file `"
<< orig_from << "' (does not exist anymore).");
item.cache_name.removeFile();
continue;
}
// Don't add items that are not in the cache anymore
// This can happen if two instances of LyX are running
// at the same time and update the index file independantly.
if (!item.cache_name.exists()) {
LYXERR(Debug::FILES, "Not caching file `" << orig_from
<< "' (cached copy does not exist anymore).");
continue;
}
// Delete the cached file if it is too old
if (difftime(now, item.cache_name.lastModified())
> lyxrc.converter_cache_maxage) {
LYXERR(Debug::FILES, "Not caching file `"
<< orig_from << "' (too old).");
item.cache_name.removeFile();
continue;
}
FormatCache & format_cache = cache[orig_from_name];
if (format_cache.from_format.empty())
format_cache.from_format =
formats.getFormatFromFile(orig_from_name);
format_cache.cache[to_format] = item;
}
is.close();
}
示例6: rescanTexStyles
void rescanTexStyles(string const & arg)
{
// Run rescan in user lyx directory
PathChanger p(package().user_support());
FileName const prog = support::libFileSearch("scripts", "TeXFiles.py");
Systemcall one;
string const command = os::python() + ' ' +
quoteName(prog.toFilesystemEncoding()) + ' ' +
arg;
int const status = one.startscript(Systemcall::Wait, command);
if (status == 0)
return;
// FIXME UNICODE
frontend::Alert::error(_("Could not update TeX information"),
bformat(_("The script `%1$s' failed."), from_utf8(prog.absFileName())));
}
示例7: tex2tex
bool tex2tex(string const & infilename, FileName const & outfilename,
string const & encoding)
{
if (!tex2lyx(infilename, outfilename, encoding))
return false;
string command = quoteName(package().lyx_binary().toFilesystemEncoding());
if (overwrite_files)
command += " -f main";
else
command += " -f none";
if (pdflatex)
command += " -e pdflatex ";
else
command += " -e latex ";
command += quoteName(outfilename.toFilesystemEncoding());
Systemcall one;
if (one.startscript(Systemcall::Wait, command) == 0)
return true;
cerr << "Error: Running '" << command << "' failed." << endl;
return false;
}
示例8: connect
/// Connect to the socket \p name.
int connect(FileName const & name)
{
int fd; // File descriptor for the socket
sockaddr_un addr; // Structure that hold the socket address
string const encoded = name.toFilesystemEncoding();
// char sun_path[108]
string::size_type len = encoded.size();
if (len > 107) {
cerr << "lyxclient: Socket address '" << name
<< "' too long." << endl;
return -1;
}
// Synonims for AF_UNIX are AF_LOCAL and AF_FILE
addr.sun_family = AF_UNIX;
encoded.copy(addr.sun_path, 107);
addr.sun_path[len] = '\0';
if ((fd = ::socket(PF_UNIX, SOCK_STREAM, 0))== -1) {
cerr << "lyxclient: Could not create socket descriptor: "
<< strerror(errno) << endl;
return -1;
}
if (::connect(fd,
reinterpret_cast<struct sockaddr *>(&addr),
sizeof(addr)) == -1) {
cerr << "lyxclient: Could not connect to socket " << name.absFileName()
<< ": " << strerror(errno) << endl;
::close(fd);
return -1;
}
if (::fcntl(fd, F_SETFL, O_NONBLOCK) == -1) {
cerr << "lyxclient: Could not set O_NONBLOCK for socket: "
<< strerror(errno) << endl;
::close(fd);
return -1;
}
return fd;
}
示例9: retrieve
void RCS::retrieve(FileName const & file)
{
LYXERR(Debug::LYXVC, "LyXVC::RCS: retrieve.\n\t" << file);
doVCCommandCall("co -q -r " + quoteName(file.toFilesystemEncoding()),
FileName());
}
示例10: inprogress
void PreviewLoader::Impl::startLoading(bool wait)
{
if (pending_.empty() || !pconverter_)
return;
// Only start the process off after the buffer is loaded from file.
if (!buffer_.isFullyLoaded())
return;
LYXERR(Debug::GRAPHICS, "PreviewLoader::startLoading()");
// As used by the LaTeX file and by the resulting image files
string const directory = buffer_.temppath();
string const filename_base = unique_filename(directory);
// Create an InProgress instance to place in the map of all
// such processes if it starts correctly.
InProgress inprogress(filename_base, pending_, pconverter_->to);
// clear pending_, so we're ready to start afresh.
pending_.clear();
// Output the LaTeX file.
FileName const latexfile(filename_base + ".tex");
// we use the encoding of the buffer
Encoding const & enc = buffer_.params().encoding();
ofdocstream of;
try { of.reset(enc.iconvName()); }
catch (iconv_codecvt_facet_exception const & e) {
LYXERR0("Caught iconv exception: " << e.what()
<< "\nUnable to create LaTeX file: " << latexfile);
return;
}
TexRow texrow;
otexstream os(of, texrow);
OutputParams runparams(&enc);
LaTeXFeatures features(buffer_, buffer_.params(), runparams);
if (!openFileWrite(of, latexfile))
return;
if (!of) {
LYXERR(Debug::GRAPHICS, "PreviewLoader::startLoading()\n"
<< "Unable to create LaTeX file\n" << latexfile);
return;
}
of << "\\batchmode\n";
dumpPreamble(os);
// handle inputenc etc.
buffer_.params().writeEncodingPreamble(os, features);
of << "\n\\begin{document}\n";
dumpData(of, inprogress.snippets);
of << "\n\\end{document}\n";
of.close();
if (of.fail()) {
LYXERR(Debug::GRAPHICS, "PreviewLoader::startLoading()\n"
<< "File was not closed properly.");
return;
}
double const font_scaling_factor =
buffer_.isExporting() ? 75.0 * buffer_.params().html_math_img_scale
: 0.01 * lyxrc.dpi * lyxrc.zoom * lyxrc.preview_scale_factor;
// FIXME XHTML
// The colors should be customizable.
ColorCode const bg = buffer_.isExporting()
? Color_white : PreviewLoader::backgroundColor();
ColorCode const fg = buffer_.isExporting()
? Color_black : PreviewLoader::foregroundColor();
// The conversion command.
ostringstream cs;
cs << pconverter_->command
<< " " << quoteName(latexfile.toFilesystemEncoding())
<< " --dpi " << int(font_scaling_factor)
<< " --fg " << theApp()->hexName(fg)
<< " --bg " << theApp()->hexName(bg);
// FIXME what about LuaTeX?
if (buffer_.params().useNonTeXFonts)
cs << " --latex=xelatex";
if (buffer_.params().encoding().package() == Encoding::japanese)
cs << " --latex=platex";
if (buffer_.params().bibtex_command != "default")
cs << " --bibtex=" << quoteName(buffer_.params().bibtex_command);
else if (buffer_.params().encoding().package() == Encoding::japanese)
cs << " --bibtex=" << quoteName(lyxrc.jbibtex_command);
else
cs << " --bibtex=" << quoteName(lyxrc.bibtex_command);
if (buffer_.params().bufferFormat() == "lilypond-book")
cs << " --lilypond";
string const command = libScriptSearch(cs.str());
if (wait) {
ForkedCall call(buffer_.filePath());
int ret = call.startScript(ForkedProcess::Wait, command);
static int fake = (2^20) + 1;
//.........这里部分代码省略.........
示例11: listen
// Returns a local socket already in the "listen" state (or -1 in case
// of error). The first argument is the socket address, the second
// is the length of the queue for connections. If successful, a socket
// special file 'name' will be created in the filesystem.
int listen(FileName const & name, int queue)
{
int fd; // File descriptor for the socket
sockaddr_un addr; // Structure that hold the socket address
// We use 'localname' to fill 'addr'
string const localname = name.toFilesystemEncoding();
string::size_type len = localname.size();
// the field sun_path in sockaddr_un is a char[108]
if (len > 107) {
LYXERR0("lyx: Socket address '" << name.absFileName() << "' too long.");
return -1;
}
// Synonims for AF_UNIX are AF_LOCAL and AF_FILE
addr.sun_family = AF_UNIX;
localname.copy(addr.sun_path, 107);
addr.sun_path[len] = '\0';
// This creates a file descriptor for the socket
// Synonims for PF_UNIX are PF_LOCAL and PF_FILE
// For local sockets, the protocol is always 0
// socket() returns -1 in case of error
if ((fd = ::socket(PF_UNIX, SOCK_STREAM, 0))== -1) {
LYXERR0("lyx: Could not create socket descriptor: "
<< strerror(errno));
return -1;
}
// Set NONBLOCK mode for the file descriptor
if (::fcntl(fd, F_SETFL, O_NONBLOCK) == -1) {
LYXERR0("lyx: Could not set NONBLOCK mode for socket descriptor: "
<< strerror(errno));
::close(fd);
return -1;
}
// bind() gives the local address 'name' for 'fd', also creating
// the socket special file in the filesystem. bind() returns -1
// in case of error
if ((::bind (fd, reinterpret_cast<sockaddr *>(&addr), SUN_LEN(&addr))) == -1) {
LYXERR0("lyx: Could not bind address '" << name.absFileName()
<< "' to socket descriptor: " << strerror(errno));
::close(fd);
name.removeFile();
return -1;
}
// Puts the socket in listen state, that is, ready to accept
// connections. The second parameter of listen() defines the
// maximum length the queue of pending connections may grow to.
// It is not a restriction on the number of connections the socket
// can accept. Returns -1 in case of error
if (::listen (fd, queue) == -1) {
LYXERR0("lyx: Could not put socket in 'listen' state: "
<< strerror(errno));
::close(fd);
name.removeFile();
return -1;
}
return fd;
}