summaryrefslogtreecommitdiffstats
path: root/generic/tclIOUtil.c
Commit message (Collapse)AuthorAgeFilesLines
* Followup on [72c54e1659]. Removed unused variable.andreask2014-05-231-1/+0
|
* Workarounds and fixes for wrapped executables on various platforms andreask2014-05-221-1/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | regarding the handling of wrapped dynamic libraries. The basic flow of operation is to copy such libraries into a temp file, hand them to the OS loader for processing, and then to delete them immediately, to prevent them from being accessible to other executables. On platforms where that is not possible the library is left in place and things are arranged to delete it on regular process exit. An example of the latter are older revisions of HPUX which report that the file is busy when trying to delete it. Younger revisions of HPUX have changed to allow the deletion, but are also buggy, the OS loader mangles its data structures so that a second library loaded in this manner fails. More recently it was found that Linux which is usually ok with deleting the file and gets everything right shows the same trouble as modern HPUX when the "docker" containerization system is involved, or more specifically the AUFS in use there. Deleting the loaded library file mangles data structures and breaks loading of the following libraries. For a demonstration which does not involve Tcl at all see the ticket https://github.com/dotcloud/docker/issues/1911 in the docker tracker. This of course breaks the use of wrapped executables within docker containers. This commit introduces the function TclSkipUnlink() which centralizes the handling of such exceptions to unlinking the library after unload, and provides code handling the known cases. IOW HPUX is generally forced to not unlink, and ditto when we detect that the copied library file resides within an AUFS. The latter must however be explicitly activated by setting the define -DTCL_TEMPLOAD_NO_UNLINK during build. We still need proper configure tests to set it on the relevant platforms (i.e. Linux). The AUFS detection and handling can be overridden by the environment variable TCL_TEMPLOAD_NO_UNLINK which can force the behaviour either way (skip or not). In case the user knows best, or wishes to test if the problem with AUFS has been fixed.
* Unbreak msvc builds, by depending on tclPort.h for inclusion of <sys/stat.h>.jan.nijtmans2013-02-101-1/+0
|
* revert [8abba84224], and make sure that every source file that uses ↵jan.nijtmans2013-01-171-3/+1
| | | | Tcl_StatBuf has an "#include <sys/stat.h>" before including tcl.h
* Add dummy 0 parameter (unused flags) to internal Tcl_FSLoadFileProc call, ↵jan.nijtmans2012-10-241-1/+5
|\ | | | | | | for upwards compatibility with version 2 filesystems
| * Add dummy 0 parameter (unused flags) to internal Tcl_FSLoadFileProc call, ↵jan.nijtmans2012-10-241-1/+5
| | | | | | | | for upwards compatibility with version 2 filesystems
| * Reference to correct Bug #numberjan.nijtmans2012-08-061-1/+1
| |
* | Remove unused TclpLoadFile function.jan.nijtmans2012-10-231-43/+0
| |
* | 3554250 Overlooked one field of cleanup in the thread exit handlerdgp2012-08-071-0/+1
| | | | | | for the filesystem subsystem.
* | Simplify tclFileSystem.h. Define structs where used.dgp2012-06-281-10/+55
| |
* | Repair Claim/Disclaim imbalancedgp2012-06-251-0/+1
| |
* | Simplify bug fix so that active claims on the FilesystemRecord list of a threadbug_3024359dgp2012-06-251-52/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | prevent any overwriting of that per-thread cache. This keeps active traversals of the list valid. The possible downside is that this may result in some delay in noticing new epochs and result in somewhat greater likelihood we will cache things in a "path" value that are out of date. Since the system has to deal with out of date cached data anyway, this should have no correctness affects, measured against the status quo. In multi-threaded operation the possibility of caching and/or retrieving outdated information can never be eliminated. Checkin also includes merge of 8.5.
* \ \ merge 8.5dgp2012-06-221-37/+12
|\ \ \ | |/ /
| * | FilesystemRecord structs no longer need refcounting.dgp2012-06-221-34/+11
| | |
* | | merge 8.5dgp2012-06-221-2/+11
|\ \ \ | |/ /
| * | Revise the order of memory free, so that bugs that attempt to access freeddgp2012-06-221-2/+11
| | | | | | | | | memory are more likely to segfault and not remain hidden.
* | | merge 8.5dgp2012-06-211-28/+1
|\ \ \ | |/ /
| * | Stop storing FilesystemRecord in the intrep of a "path". We never use it.dgp2012-06-211-26/+1
| | | | | | | | | Store the Tcl_Filesystem instead, which is what we actually need.
* | | Only record the filesystemEpoch when it actually marks the validity ofdgp2012-06-211-2/+2
| | | | | | | | | something we are caching.
* | | merge 8.5dgp2012-06-201-10/+4
|\ \ \ | |/ /
| * | Purge more dead fs path code.dgp2012-06-201-4/+3
| |\ \ | | |/
| | * Purge more dead fs path code.dgp2012-06-201-17/+7
| | |
| * | Remove dead code that complicates fs path values but adds no value.dgp2012-06-201-6/+1
| |\ \ | | |/
| | * ...and one more line.dgp2012-06-201-1/+0
| | |
| | * Remove dead code that complicates fs path values but adds no value.dgp2012-06-201-31/+10
| | |
| | * When using Tcl_SetObjLength() calls to grow and shrink the objPtr->bytes buffer,dgp2012-05-211-1/+1
| | | | | | | | | | | | | | | care must be taken that the value cannot possibly become pure Unicode. Calling Tcl_AppendToObj() has the possibility of making such a conversion. Bug found while valgrinding the trunk.
| | * make some more internal tables constjan.nijtmans2012-04-231-0/+1
| | | | | | | | | On cygwin, install dll's in /usr/bin, not in /usr/lib
* | | Next draft fix. This one appears to solve the problem, at least as demo'ddgp2012-06-181-46/+40
| | | | | | | | | by the test attached to Tcl Bug 3024359.
* | | More work in progress.dgp2012-06-131-38/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem with release of the elements of a fileSystemList by one routine while some other (caller) routine is still traversing that list is not dependent on threaded operations. An unthreaded build can still encounter the problem. Revised so that threaded/unthreaded operations are much closer to the same (no direct TCL_THREADS dependency). Also simplified the epoch checking which reduces locking to when it's needed. Still have the problem of returning as valid FilesystemRecords that are pulled from an outdated epoch.
* | | Convert function calls to macros.dgp2012-06-121-21/+31
| | |
* | | First draft patch to fix Bug 3024359. No reliable test yet.dgp2012-06-111-10/+90
|/ /
* | some formatting (*.decls)jan.nijtmans2012-04-041-0/+1
|\ \ | |/ | | | | | | move up #undef, for macro which is conflicting with later stuff. remove some unused cygwin-related code some minor gcc warnings
| * tclStubInit.c: move up #undef, so it is clear that thisjan.nijtmans2012-04-041-20/+0
| | | | | | | | macro is conflicting with another definition in this file. Fix some other gcc warnings
* | oops, that's no utf-8 BOM ;-(jan.nijtmans2012-02-291-1/+1
|\ \ | |/
| * oops, that's no utf-8 BOM ;-(jan.nijtmans2012-02-291-1/+1
| |
* | [Bug 3466099] BOM in Unicodejan.nijtmans2012-02-291-1/+16
|\ \ | |/
| * [Bug 3466099] BOM in Unicodejan.nijtmans2012-02-291-4/+18
| |\
| | * [Bug 3466099] BOM in Unicodejan.nijtmans2012-02-191-4/+12
| |/
| * [Bug 2935503]: Windows: file mtime sets wrong timejan.nijtmans2011-11-221-0/+5
| |
| * [Bug 3388350] mingw64 compiler warningsjan.nijtmans2011-08-161-0/+1
| | | | | | | | n mingw, sys/stat.h must be included before winsock2.h, so make sure of that
| * fix for [Bug 3288345]: Wrong Tcl_StatBuf used on MinGW. Follow-up: get it ↵jan2011-04-201-1/+1
| | | | | | | | right for cygwin and WIN64 as well.
* | [Bug 2233954] AIX: compile error, but don't do that for _WIN32 (doesn't work ↵jan.nijtmans2012-02-171-1/+1
| | | | | | | | in VS10)
* | [Bug 2233954] AIX: compile errorjan.nijtmans2012-02-161-0/+3
| |
* | Now that we're no longer using SCM based on RCS, the RCS Keyword lines causedgp2011-03-021-2/+0
|\ \ | |/ | | more harm than good. Purged them.
| * Now that we're no longer using SCM based on RCS, the RCS Keyword lines causedgp2011-03-011-2/+0
| | | | | | more harm than good. Purged them.
| * * generic/tclPathObj.c: Fixed mistaken logic in TclFSGetPathType()dgp2009-02-201-1/+10
| | | | | | | | | | | | * tests/fileName.test: that assumed (not "absolute" => "relative"). This is a false assumption on Windows, where "volumerelative" is another possibility. [Bug 2571597].
| * * generic/tclIOUtil.c (Tcl_FSGetNormalizedPath): Added anotherdgp2008-12-041-11/+78
| | | | | | | | | | flag value TCLPATH_NEEDNORM to mark those intreps which need more complete normalization attention for correct results. [Bug 2385549]
| * * generic/tclIOUtil.c: Plug memory leak in latest commit. Thanksdgp2008-06-281-3/+8
| | | | | | | | Rolf Ade for detecting and Dan Steffen for the fix [Bug 2004654].
| * formattingdgp2008-06-231-2/+2
| |
| * * generic/tclIOUtil.c: Fixed bug in Tcl_GetTranslatedPath() whendgp2008-06-231-2/+11
| | | | | | | | | | | | | | operating on the "Special path" variant of the "path" Tcl_ObjType intrep. A full normalization was getting done, in particular, coercing relative paths to absolute, contrary to what the function of producing the "translated path" is supposed to do. [Bug 1972879].