Commit Graph

69 Commits

Author SHA1 Message Date
Georg Baum
f09a9fe2e6 Remove unsafe method FileName::tempName()
FileName::tempName() created a new temp file name by using qt to create a
temporary file with a unique name, and then deleting that file and returning
the name. This was unsafe, since other processes or even other threads of the
running LyX could create files with the same name between deletion and then
using the temp name.
This is fixed by using the TempFile class instead. As a side effect, a few
cases where the temp files were not deleted after usage were fixed as well.
The only place that is still unsafe is createTmpDir().
2014-06-09 13:05:50 +02:00
Georg Baum
bf782ee02a Improve file saving strategy
- The TempFile class guarantees to generate a file name, we are not limited to
  100 tries of a predictable scheme anymore, which could break if LyX
  frequently crashes.
- The temp file name generation has no race condition against another LyX
  instance in the same directory anymore.
- Symlinks survive saving again (regression of 10364082c8).
2014-06-09 11:08:24 +02:00
Jean-Marc Lasgouttes
bd2e7480b1 A first batch of potential bugs spotted by llvm/clang
There are more warnings left, but these are the easiest to fix. And some of them are real bugs (assignments with == instead of =).
2013-05-02 16:38:25 +02:00
Georg Baum
db0ba3a3c6 Add class for threadsafe temp file handling
FileName::tempName() is not thread safe, since the QTemporaryFile object is
immediately deleted after creating it. Therefore, another thread could create
the same temporary file in the time span before the user of FileName::tempName()
recreates it. This is not as theoretical as it may look: I observed that
repeated creation and deletion of QTemporaryFile objects always use the same
name.
This problem is solved by the new class TempFile which should be used like
QTemporaryFile itself.
2013-04-14 18:22:42 +02:00
Vincent van Ravesteijn
5e4e4b674c Always require a mask to get a temporary filename
If no mask is supplied or the mask is attached to the end of the filename, we end up with unexpected names like
  <system-temp-dir>\lyx_tmpdir.qHp780.vcr780_<mask>
instead of a temporary file in the lyx temporary directory like
  <system-temp-dir>\lyx_tmpdir.qHp780\<mask>.vcr780.
2012-05-03 16:14:37 +02:00
Stephan Witt
8be18455fd #7855 subversion 1.7.x support: use svn info to check if a file is under version control; this works for 1.6.x too; to avoid excessive forks of child processes check for the existence of a .svn directory in current dir and parent directories
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40911 a592a061-630c-0410-9148-cb99ea01b6c8
2012-03-11 11:12:12 +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
Georg Baum
a6f843aacb get rid of dead code and silly function
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40605 a592a061-630c-0410-9148-cb99ea01b6c8
2012-01-12 19:48:08 +00:00
Peter Kümmel
c09d33120d UNDO: enc
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34943 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-17 16:09:26 +00:00
Peter Kümmel
56a7a67783 add first version of .lyx file encryption. It's disabled by default and could out-of-the-box only by compiled on Linux with cmake and with openssl-devel packeges.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34931 a592a061-630c-0410-9148-cb99ea01b6c8
2010-07-17 12:26:11 +00:00
Pavel Sanda
266ad9501d DocFileName::unzippedFilename -> DocFileName::unzippedFileName
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34239 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:26 +00:00
Pavel Sanda
9d43d32240 DocFileName.outputFilename -> DocFileName.outputFileName
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34238 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:25 +00:00
Pavel Sanda
b6a764eef3 FileName.mangledFilename -> FileName.mangledFileName
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34236 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:22 +00:00
Pavel Sanda
e5fc2cbdc6 Filename.relFilename -> Filename.relFileName
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34235 a592a061-630c-0410-9148-cb99ea01b6c8
2010-04-21 01:19:20 +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
Enrico Forestieri
10f1370464 On windows, allow saving a document whose pathname contains unicode chars.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33539 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-22 19:34:25 +00:00
Enrico Forestieri
37974532f6 Fix bug #5238: LyX 1.6 fails with non-ascii chars in path (on Windows)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33524 a592a061-630c-0410-9148-cb99ea01b6c8
2010-02-21 04:51:27 +00:00
Vincent van Ravesteijn
0acff0aa75 Add a FileName::refresh function and replace one call to lastModified which was just meant to refresh the file info.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32354 a592a061-630c-0410-9148-cb99ea01b6c8
2009-12-05 02:50:34 +00:00
Richard Heck
969a919a0d More comments.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30415 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-08 19:55:03 +00:00
Richard Heck
3a41879cb4 Add and update some comments.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@30405 a592a061-630c-0410-9148-cb99ea01b6c8
2009-07-07 15:29:33 +00:00
Enrico Forestieri
ccc77c73da Speed up FileName operator== (Georg's solution).
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29498 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-02 17:12:31 +00:00
Enrico Forestieri
b0936fac4c When performing a reverse DVI search and the tmpdir is a symlink, the
DVI viewer passes back the resolved path, such that the search fails,
as internally LyX uses the unresolved path.
This patch fixes this bug by using the new method FileName::realPath
which resolves a path by getting rid of any '.', '..', or symlink
path components.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@29476 a592a061-630c-0410-9148-cb99ea01b6c8
2009-05-01 15:18:11 +00:00
Pavel Sanda
80e87042b4 typo
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28296 a592a061-630c-0410-9148-cb99ea01b6c8
2009-01-30 21:01:32 +00:00
Peter Kümmel
cab745d661 Fix bug 2235: jpeg capital letters (.JPG) does not work with pdflatex
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26744 a592a061-630c-0410-9148-cb99ea01b6c8
2008-10-05 11:51:18 +00:00
Abdelrazak Younes
c0aeb567ce add FileName::extension() method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26494 a592a061-630c-0410-9148-cb99ea01b6c8
2008-09-22 09:44:44 +00:00
Abdelrazak Younes
07719210df Partially fix http://bugzilla.lyx.org/show_bug.cgi?id=2771
We need to solve these warnings from documentations:
* This will not compare two different symbolic links pointing to the same file.
* Long and short file names that refer to the same file on Windows are treated as if they referred to different files.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25960 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-29 09:07:37 +00:00
Abdelrazak Younes
72d9237817 Add new FileName::set() method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25954 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-29 07:47:16 +00:00
Abdelrazak Younes
d79ee740b3 Introduce a new tempName() method with base directory.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25830 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-23 09:23:23 +00:00
Abdelrazak Younes
734e22c4d3 tentatively fix http://bugzilla.lyx.org/show_bug.cgi?id=4693
The problem stems I guess from the use of from_local8bit().


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25809 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-22 17:45:40 +00:00
Pavel Sanda
19b6a34be3 This comment is wrong and causes bug in revision control.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@25739 a592a061-630c-0410-9148-cb99ea01b6c8
2008-07-20 21:27:20 +00:00
Stefan Schimanski
48999ee671 * Some more clever elide mode for the LyX buffer tabs. In trunk
currently the whole path is (possibly with some unmotivated ... in
  the middle) used which is usually far too long.

  The algorithm implemented here will start with absolute paths. From
  left to right path segments are added to the display string if they
  help to make the display strings more unique. Otherwise nothing is
  added, or if some middle path segments are omitted otherwise, three
  dots ... are used.

  The result is that we get just the base filename without extension if
  they are unique in the tabbar.

  The patch is open for discussion. If there is demand we can create
  yet another preference option to get back the old behaviour.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24555 a592a061-630c-0410-9148-cb99ea01b6c8
2008-04-29 15:44:07 +00:00
Bo Peng
c81fd7337d Embedding: add embedding support for InsetInclude. (params["embed"] is added)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22441 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-08 16:35:43 +00:00
Bo Peng
c9a7e8c416 Embedding: After another round of EmbeddedFiles changes, embedded figures should more or less work now.
* src/insets/InsetExternal.cpp: fix compiling. (Does not work yet)
	* src/insets/InsetGraphics.cpp: use latexFilename to produce output.
	* src/insets/InsetGraphicsParams.cpp: use availableFile to show preview.
	* src/EmbeddedFiles.h|cpp: More things are moved from EmbeddedFiles to EmbeddedFile
	* src/frontends/qt4/GuiGraphics.cpp: remove embeddable-related operations.
	* src/support/FileName.h: make isReadableFile virtual


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22410 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-07 03:34:21 +00:00
Bo Peng
56a1dfe65f Embedding: adjust how InsetGraphics interacts with EmbeddedFiles, the ?th overhaul of the EmbeddedFile class :-(
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22377 a592a061-630c-0410-9148-cb99ea01b6c8
2008-01-05 05:28:39 +00:00
Abdelrazak Younes
96ee270933 transfer os::is_absolute_path() to FileName::isAbsolute().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22187 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-17 15:15:37 +00:00
Abdelrazak Younes
c66e214724 Transfer getcwd() implementation to FileName.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22164 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-16 10:18:00 +00:00
Abdelrazak Younes
86506a80eb Simplify FileName::tempName().
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22163 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-16 09:52:36 +00:00
Abdelrazak Younes
1948c5812c Change semantics of FileName::copyTo(): we now overwrite the target file unconditionally.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22159 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-15 08:25:53 +00:00
Abdelrazak Younes
0caa103581 * get rid of lyxlib.h:mkdir() and makedir()
* Introduce FileName::createPath()
* Fix file copying in EmbeddedFile.cpp.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22155 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-14 22:43:39 +00:00
Abdelrazak Younes
d1574fec83 The rename() function removed in rev had in fact move() functionality. So we replace all uses of renameTo() with the new FileName::moveTo() method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22149 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-14 18:16:25 +00:00
Abdelrazak Younes
ec49fff94d Fix comments.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22128 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-13 11:40:41 +00:00
Abdelrazak Younes
9302bd119f compile fix following undo/redo mixup. Sorry.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22124 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-13 10:43:29 +00:00
Abdelrazak Younes
4e364577e3 Introduce FileName::changePermission() and fix ConverterCache.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22123 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-13 10:38:31 +00:00
Abdelrazak Younes
15fe6b3c53 add FileName::renameTo() method.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22117 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-13 07:36:47 +00:00
Abdelrazak Younes
e017570aa8 Introducing FileNameList, cleanup some headers and put back dirList() into FileName.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21965 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-05 10:32:49 +00:00
Abdelrazak Younes
b1db731a98 * FileName::fileContents(): new argument to define the file encoding.
* BufferView:
- insertPlaintextString(): now accept a FileName.
- contentsOfPlaintextFile(): ditto and use FileName::fileContents().
 

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21915 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-02 11:55:25 +00:00
Peter Kümmel
aef7e129e7 move funtion with std::vector to filetools
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21903 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-02 09:19:43 +00:00
Peter Kümmel
4ff95a154d fix memory leak, cleanup FileName interface
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21896 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-01 10:23:16 +00:00
André Pönitz
63d19999eb move chdir to FileName
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21890 a592a061-630c-0410-9148-cb99ea01b6c8
2007-12-01 00:06:50 +00:00