Commit Graph

61 Commits

Author SHA1 Message Date
Georg Baum
4a2250a5d1 Make Formats::isZippedFile() threadsafe
In this case I use a mutex, so the zip status of files is shared between
threads. This is possible because a deadlock can't happen, and it should give
better performance.
2014-07-05 11:55:35 +02:00
Enrico Forestieri
f439609304 Make binary file detection more robust.
The magic library can detect the charset used by a file. While this
detection is not full proof, actually the library seems to be infallible
as regards the binary nature of a file. So, use libmagic for the detection
and fallback to the previous method if the library is not installed or
its database cannot be loaded.
2014-06-11 23:04:39 +02:00
Georg Baum
4bea5b9d18 Explain why the binary detection works
Extracted from Enricos comment at bug 9146.
2014-06-07 17:48:23 +02:00
Enrico Forestieri
7d31194085 Fix bug #9146.
If LyX does not know about a given file format, it may easily
happen that the format is recognized as "latex" and this causes
bug #9146. This patch limits the check for a latex format to
non-binary files. The strategy for deciding that a file has
binary content is the same as that adopted by the "less" program.
2014-06-05 17:33:25 +02:00
Georg Baum
8be7da42e9 Detect binary EPS files correctly (bug #9146)
The Adobe EPS file format specification (TN-5002, currently available at
http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf) specifies
a binary version of EPS files with integrated preview, sometimes also called
DOS EPS binary files. LyX 2.0 did recognize these files unreliably by
extension, but since f4eae12d they are misdetected as latex (bug #9146).
This change adds proper detection for these files using the officially
documented binary header.
2014-06-04 22:04:46 +02:00
Georg Baum
afc34c7a60 Fix bug 9030 except for windows
The format entries should be sorted according to the culture selected for the
UI. This was not the case previously, resulting in unexpected sorting of small
and capital letters. This is now fixed by using the standard C function
strcoll(). Qt does only offer similar functionality in Qt5, and this is not
mature enough yet to depend on it.
Unfortunately we have a report that strcoll() does not work on MSVC, however
this partial fix is better than nothing. The MSVC issue might also be a
configuration problem, since MS claims that strcoll() is supported. This
still needs to be checked.
2014-05-19 22:37:14 +02:00
Scott Kostyshak
8b66f9cedf Centralize replacement of "$$s"
Now the replacement is done in startScript(). In addition to making
the code cleaner and more consistent, this commit fixes a bug where
"$$s" was not replaced when "latex=" was specified in the extra flags
of a converter.

Note that the temporary fix at 731b8610 is reverted with this commit.
2014-05-14 15:45:20 -04:00
Richard Heck
fdbe775b9f This is the result of an audit of all static variables, looking
for possible thread conflicts, of the sort Georg resolved at
6a30211f. I have made static variables const where possible,
and marked cases that looked potentially problematic with the
comment:
	// FIXME THREAD
Many of these definitely are vulnerable to concurrent access, such
as the static variables declared at the start of output_latex.cpp.
Suppose, e.g., we were outputting latex and also displaying the
source of a different document.

I'd appreciate it if others could grep for "FIXME THREAD" and see
if some of these are harmless, or what.
2014-04-21 11:51:57 -04:00
Georg Baum
8097911a9f Fix crash if magic_file() returns an error
Thanks to Benjamin Piwowarski who reported the problem and provided a fix.
magic_file() returns a NULL pointer if an error occurs, and due to a bug
this happens frequently on OS X: https://trac.macports.org/ticket/38771
I did not use the original patch, since I did not want to put a platform
specific workaround in (this needs further discussion), but the crash can
occur on all platforms and needs to be fixed.
2014-02-28 22:42:38 +01:00
Juergen Spitzmueller
00cd9ce4a9 remove unused and error-prone function 2013-09-15 17:19:51 +02:00
Julien Rioux
096204e23f Fix JPEG format detection
Detect JPEG files using the magic number FF D8 (so-called SOI marker)
instead of the string JFIF, which does not appear in all JPEG files.
2013-07-13 16:14:58 +02:00
Georg Baum
f4eae12d60 Improve LaTeX format detection
libmime is a bit lacking here.
2013-04-12 22:31:48 +02:00
Vincent van Ravesteijn
a31df78133 Do not sort formats in BufferParams::exportableFormats
We only need to sort the formats when it is really necessary, i.e. for GUI
purposes.

This also prevents 11000 requests for translation everytime the toolbars
are updated.
2013-03-24 18:06:32 +01:00
Georg Baum
cb5dd33475 Split pdf format as discussed on the list
Previously, the format used for included pdf files was the same as for
document export via ps2pdf. This caused unwanted conversion routes, e.g.
export via odt->pdf instead of dvi->ps->pdf.
I renamed the format for included graphics and not for exported documents,
since otherwise the command line syntax for export would change. This would
require more adaptions for the users, since with the chosen solution the
custom converters are almost always changed correctly in prefs2prefs(),
so that only custom external templates need manual adjustement.
2013-03-21 20:13:02 +01:00
Jean-Marc Lasgouttes
14e01a92a4 Rename Path.h to PathChanger.h (actual name of the class) 2013-02-06 11:51:06 +01:00
Lars Gullik Bjønnes
6b2232a29c src/*.cpp: reformatting to increase consistency 2012-10-28 17:42:07 +01:00
Lars Gullik Bjønnes
435fad1463 src/Format.cpp: use make_pair
Use make_pair(...) instead of pair<T, U>(...).
2012-10-23 23:48:25 +02:00
Kornel Benko
8c29d00e11 Handling of libmagic for some mime-types leads to incorrect value 'text/plain'.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40873 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-06 09:41:41 +00:00
Kornel Benko
3929a71cd0 Avoid crash in call to magic_file() if the checked file does not exist
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40803 a592a061-630c-0410-9148-cb99ea01b6c8
2012-02-28 15:21:46 +00:00
Georg Baum
de6e4a2937 Make guessFormatFromContents() a bit more private, since it is not supposed
to be used in new code.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40790 a592a061-630c-0410-9148-cb99ea01b6c8
2012-02-21 20:46:37 +00:00
Georg Baum
26e5f1a8ec Use libmagic for file format detection if available.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40789 a592a061-630c-0410-9148-cb99ea01b6c8
2012-02-21 20:29:44 +00:00
Tommaso Cucinotta
dfd8a97bff Presenting prettyname of formats in filedialog filter dropdown box (instead of shortnames), sorted.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39816 a592a061-630c-0410-9148-cb99ea01b6c8
2011-10-07 08:21:31 +00:00
Richard Heck
d57f507f51 Fix bug #7764 by ordering the formats according to translated strings.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39753 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-24 18:35:44 +00:00
Julien Rioux
b31f0cfc4d Fixes to Format.{h,cpp} following advices from Richard and Vincent.
Caching the string value of extensions is not necessary. It
was a nice textbook exercise in getter/setter methods but it
is cause for confusion and prone to mistakes in maintenance.

Also, extension_list_ doesn't need to be mutable.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39714 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-20 17:25:07 +00:00
Tommaso Cucinotta
2823eed291 Moving the zipped file info cache to Formats.cpp saves the inclusion of <map> and <ctime> from Format.h
They were implementation-specific and do not impact on the interface anyway.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39709 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-19 10:08:33 +00:00
Tommaso Cucinotta
b4f97b61cf Added support for natively zipped file formats that do not need decompression for being handled by converters
(e.g., compressed dia, odg, sxd, ...). These need to be marked via the "zipped=native" flag in the RC file.
The old 'dia' configuration is automatically updated (it used to be hardcoded in the code, now it is handled
via the flag).
See also http://www.mail-archive.com/lyx-devel@lists.lyx.org/msg170974.html


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39705 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-19 00:12:09 +00:00
Julien Rioux
a55ef8346a Allow to assign several extension to a given file format (#4798).
Additionnal extensions are separated by commas (,) in lyxrc
preference files, while spaces are ignored, e.g. "jpg, jpeg".

Preference lyxrc file format incremented to 2.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39670 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-13 20:42:23 +00:00
Richard Heck
6269145281 Remove unused code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39632 a592a061-630c-0410-9148-cb99ea01b6c8
2011-09-07 21:47:36 +00:00
Uwe Stöhr
cc5cc067a0 new export flavor "DVILUATEX", fixes bug #7713, patch from Jürgen
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39457 a592a061-630c-0410-9148-cb99ea01b6c8
2011-08-10 02:23:44 +00:00
Enrico Forestieri
56e1cbbdff When previewing a format, change to the directory of the previewed file
and invoke the previewer with only its filename without the path.
This solves the problem about forward search on Windows reported here:
http://thread.gmane.org/gmane.editors.lyx.general/71130


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39410 a592a061-630c-0410-9148-cb99ea01b6c8
2011-08-02 03:43:09 +00:00
Enrico Forestieri
1717ef203c Introduce the possibility of setting a prefix for the TEXINPUTS environment
variable. This is done in the preferences, much like as the PATH prefix.
A single '.' in the paths will get replaced with the current document dir
and also non-absolute paths will be prefixed with that dir.

The default semantics of TEXINPUTS apply, such that, for example, if a
path is terminated with a double slash, all subdirectories will be also
searched by both the TeX engine and ancillary programs such as dvi
previewers or dvips. As an example, if the prefix is set to ".:figs", the
TEXINPUTS variable will be set as ".:<docdir>:<docdir>/figs:$ORIGTEXINPUTS",
where <docdir> is the document directory.

The initial '.' is necessary to address the actual current dir (this will
be the temp dir at preview time), while if TEXINPUTS was initially unset,
such that $ORIGTEXINPUTS is empty, a colon (or semicolon on Windows) will
end the path list. This is very important, because we don't want to replace
the system directories but to complement them and, in order to do that, an
empty element has to be present in the list. Indeed, according to the
TEXINPUTS semantics, an empty element means the standard search path.
This works whether TEXINPUTS is originally set or not, because if the
original TEXINPUTS starts with a colon (meaning that the standard search
path is wanted there) we will have an empty element at that point,
otherwise the final colon will simply serve as a path separator.

Of course, on Windows a ';' has to be used as a path separator. LyX will
take care of transforming the platform path list into one understandable
by the TeX engine. For example, this will be the case for a Cygwin version
of LyX using a native Windows TeX engine or viceversa. I tested all of
this and it works for me.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38681 a592a061-630c-0410-9148-cb99ea01b6c8
2011-05-09 23:25:51 +00:00
Richard Heck
b8809efaa5 Remove unused header. Thanks Julien.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38379 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-14 18:33:50 +00:00
Richard Heck
1b6803bc7b Fix export of new LaTeX formats: xetex and luatex. Prior to this, child
documents and graphics were not copied to the export directory, since
the format passed to addExternalFile() was wrong.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38378 a592a061-630c-0410-9148-cb99ea01b6c8
2011-04-14 18:32:42 +00:00
Jean-Marc Lasgouttes
5b2b94fe95 Do not forget to save menu=export format flag to LyXRC.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@37986 a592a061-630c-0410-9148-cb99ea01b6c8
2011-03-21 22:25:47 +00:00
Richard Heck
c0bb9707cb Remove support for viewing URLs from hyperlinks. This is a security
risk, due to our lack of control over the links and the program used to
view them.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36789 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-09 17:55:11 +00:00
Pavel Sanda
c420c81ec2 Replay r36748
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36757 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-07 00:13:19 +00:00
Pavel Sanda
c68d754a74 Revert commits from 36745
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36749 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-07 00:05:40 +00:00
Stephan Witt
430d03811e #7026 substitute isDigit() by isDigitASCII() and ditch isDigit(); introduce isNumber() and use it in spell checker; change isdigit() to isDigitASCII() otherwise
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36748 a592a061-630c-0410-9148-cb99ea01b6c8
2010-12-06 22:35:15 +00:00
Richard Heck
455ac11cfc Bit of cleanup around the Format view and edit code.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35914 a592a061-630c-0410-9148-cb99ea01b6c8
2010-10-29 17:14:00 +00:00
Pavel Sanda
b1d6406ac4 Learn URL viewing for hyperlink insets
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@35232 a592a061-630c-0410-9148-cb99ea01b6c8
2010-08-29 23:04:36 +00:00
Peter Kümmel
21514ad512 Seems boost also includes all std headers. Not including boost therefore produces errors.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34260 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-22 11:45:34 +00:00
Pavel Sanda
62ca7f3ae5 Proper camel case for FileName.absFilename
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34234 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:09 +00:00
Richard Heck
0e6b1220de Fix bug in Preferences>File Formats. Editor box didn't work right.
Looks like c&p errors, mostly.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32113 a592a061-630c-0410-9148-cb99ea01b6c8
2009-11-19 23:37:16 +00:00
Stefan Schimanski
cf333f5ab4 * Support for graphics pasting (with most code in the frontend's GuiClipboard)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22762 a592a061-630c-0410-9148-cb99ea01b6c8
2008-02-03 10:43:03 +00:00
Jürgen Spitzmüller
f62fbd05d2 * src/BufferParams.{cpp,h}:
- (paperSizeName): add missing paper sizes. Add an argument to the function
	  that returns context-sensitive information (depending on the purpose)
	- (paperSizeName): Do not hardcode "letter" for default paper size (bug 2098).
	- (dvips_options): pass purpose DVIPS to paperSizeName
* src/Converter.cpp:
	- (dvipdfm_options): pass purpose DVIPDFM to paperSizeName.
* src/Format.cpp:
	- (view): pass purpose XDVI to paperSizeName (fix bug 4432).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22664 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-25 12:54:25 +00:00
Abdelrazak Younes
7c392af6ea getting rid of superfluous lyx::support:: statements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22106 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 19:57:42 +00:00
Abdelrazak Younes
9abb7db468 getting rid of superfluous std:: statements.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22104 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 19:28:07 +00:00
Abdelrazak Younes
b89cc942eb 'using namespace lyx::support' instead of 'using support::xxx'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22103 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 18:57:56 +00:00
Abdelrazak Younes
9383f4c3c6 'using namespace std' instead of 'using std::xxx'
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22097 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-12 10:16:00 +00:00
André Pönitz
9d0ea8aeff Move debug.{cpp,h}, Messages.{cpp,h} and gettext.{cpp,h} to support/.
Now support/* should have no dependencies on src/* anymore.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21851 a592a061-630c-0410-9148-cb99ea01b6c8
2007-11-29 07:04:28 +00:00