Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | * unix/tclUnixPipe.c (DefaultTempDir): [Bug 2933003]: Allow overriding of the back-stop default temporary file location at compile time by setting the TCL_TEMPORARY_FILE_DIRECTORY #def to a string containing the directory name (defaults to "/tmp" as that is the most common default). |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | core-8-5-branch |
Files: | files | file ages | folders |
SHA1: |
4fb4ed1471bcf78b44d482f72cd01ff7 |
User & Date: | dkf 2012-11-14 14:33:08 |
Context
2012-11-15
| ||
09:10 | merge-mark check-in: fb7744fb69 user: jan.nijtmans tags: core-8-5-branch | |
2012-11-14
| ||
14:35 | merge mark check-in: dc72be0dbc user: dkf tags: trunk | |
14:33 |
* unix/tclUnixPipe.c (DefaultTempDir): [Bug 2933003]: Allow overriding of the back-stop default te...check-in: 4fb4ed1471 user: dkf tags: core-8-5-branch | |
14:29 | Backport from Tcl 8.6. * unix/tclUnixPipe.c (DefaultTempDir): [Bug 2933003]: Allow overriding of t... check-in: dbb6880cd2 user: dkf tags: core-8-4-branch | |
09:11 | Workaround for mingw versions which don't provide _fpcontrol in float.h check-in: f93feee5b5 user: jan.nijtmans tags: core-8-5-branch | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2012-11-13 Joe Mistachkin <[email protected]> * win/tclWinInit.c: also search for the library directory (init.tcl, encodings, etc) relative to the build directory associated with the source checkout. 2012-11-09 Don Porter <[email protected]> | > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 2012-11-14 Donal K. Fellows <[email protected]> * unix/tclUnixPipe.c (DefaultTempDir): [Bug 2933003]: Allow overriding of the back-stop default temporary file location at compile time by setting the TCL_TEMPORARY_FILE_DIRECTORY #def to a string containing the directory name (defaults to "/tmp" as that is the most common default). 2012-11-13 Joe Mistachkin <[email protected]> * win/tclWinInit.c: also search for the library directory (init.tcl, encodings, etc) relative to the build directory associated with the source checkout. 2012-11-09 Don Porter <[email protected]> |
︙ | ︙ |
Changes to unix/tclUnixPipe.c.
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include "tclInt.h" #ifdef USE_VFORK #define fork vfork #endif /* * The following macros convert between TclFile's and fd's. The conversion * simple involves shifting fd's up by one to ensure that no valid fd is ever * the same as NULL. */ #define MakeFile(fd) ((TclFile) INT2PTR(((int) (fd)) + 1)) | > > > > > > > > > > | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include "tclInt.h" #ifdef USE_VFORK #define fork vfork #endif /* * Fallback temporary file location the temporary file generation code. Can be * overridden at compile time for when it is known that temp files can't be * written to /tmp (hello, iOS!). */ #ifndef TCL_TEMPORARY_FILE_DIRECTORY #define TCL_TEMPORARY_FILE_DIRECTORY "/tmp" #endif /* * The following macros convert between TclFile's and fd's. The conversion * simple involves shifting fd's up by one to ensure that no valid fd is ever * the same as NULL. */ #define MakeFile(fd) ((TclFile) INT2PTR(((int) (fd)) + 1)) |
︙ | ︙ | |||
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | * the children at close time. */ } PipeState; /* * Declarations for local functions defined in this file: */ static int PipeBlockModeProc(ClientData instanceData, int mode); static int PipeCloseProc(ClientData instanceData, Tcl_Interp *interp); static int PipeGetHandleProc(ClientData instanceData, int direction, ClientData *handlePtr); static int PipeInputProc(ClientData instanceData, char *buf, int toRead, int *errorCode); | > | 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | * the children at close time. */ } PipeState; /* * Declarations for local functions defined in this file: */ static const char * DefaultTempDir(void); static int PipeBlockModeProc(ClientData instanceData, int mode); static int PipeCloseProc(ClientData instanceData, Tcl_Interp *interp); static int PipeGetHandleProc(ClientData instanceData, int direction, ClientData *handlePtr); static int PipeInputProc(ClientData instanceData, char *buf, int toRead, int *errorCode); |
︙ | ︙ | |||
194 195 196 197 198 199 200 | Tcl_DString dstring; int fd; /* * We should also check against making more then TMP_MAX of these. */ | | | 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | Tcl_DString dstring; int fd; /* * We should also check against making more then TMP_MAX of these. */ strcpy(fileName, DefaultTempDir()); /* INTL: Native. */ if (fileName[strlen(fileName) - 1] != '/') { strcat(fileName, "/"); /* INTL: Native. */ } strcat(fileName, "tclXXXXXX"); fd = mkstemp(fileName); /* INTL: Native. */ if (fd == -1) { return NULL; |
︙ | ︙ | |||
246 247 248 249 250 251 252 | Tcl_Obj *result = NULL; int fd; /* * We should also check against making more then TMP_MAX of these. */ | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | Tcl_Obj *result = NULL; int fd; /* * We should also check against making more then TMP_MAX of these. */ strcpy(fileName, DefaultTempDir()); /* INTL: Native. */ if (fileName[strlen(fileName) - 1] != '/') { strcat(fileName, "/"); /* INTL: Native. */ } strcat(fileName, "tclXXXXXX"); fd = mkstemp(fileName); /* INTL: Native. */ if (fd == -1) { return NULL; } fcntl(fd, F_SETFD, FD_CLOEXEC); unlink(fileName); /* INTL: Native. */ result = TclpNativeToNormalized((ClientData) fileName); close(fd); return result; } /* *---------------------------------------------------------------------- * * DefaultTempDir -- * * Helper that does *part* of what tempnam() does. * *---------------------------------------------------------------------- */ static const char * DefaultTempDir(void) { const char *dir; struct stat buf; dir = getenv("TMPDIR"); if (dir && dir[0] && stat(dir, &buf) == 0 && S_ISDIR(buf.st_mode) && access(dir, W_OK)) { return dir; } #ifdef P_tmpdir dir = P_tmpdir; if (stat(dir, &buf) == 0 && S_ISDIR(buf.st_mode) && access(dir, W_OK)) { return dir; } #endif /* * Assume that the default location ("/tmp" if not overridden) is always * an existing writable directory; we've no recovery mechanism if it * isn't. */ return TCL_TEMPORARY_FILE_DIRECTORY; } /* *---------------------------------------------------------------------- * * TclpCreatePipe -- * * Creates a pipe - simply calls the pipe() function. |
︙ | ︙ |