sbase

suckless unix tools
git clone git://git.2f30.org/sbase
Log | Files | Refs | README | LICENSE

commit 36e2bdf517773553053571a787ba720bcbfec367
parent cf0a0fc940b33a9213993448e2d2d8cf217108b0
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri,  1 Jan 2016 18:25:58 +0100

ed: Use TMPDIR to locate the temporal file

The current behaviour of storing the scratch file in
the current directory is a bit painful, because it
generates files in all the directories where you
execute ed. BSD ed uses TMPDIR for this purpouse,
so if the user wants to put the scratch file in
other place different of /tmp it only has to set
this variable.

Diffstat:
Med.c | 12+++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/ed.c b/ed.c @@ -329,15 +329,17 @@ static void setscratch() { int k; + char *dir; clearbuf(); clearundo(); - strcpy(tmpname, "ed.XXXXXX"); + if ((dir = getenv("TMPDIR")) == NULL) + dir = "/tmp/"; + if (strlen(dir) + sizeof("ed.XXXXXX") > FILENAME_MAX) + error("incorrect scratch file name"); + strcat(strcpy(tmpname, dir), "ed.XXXXX"); if ((scratch = mkstemp(tmpname)) < 0) { - /* try /tmp if cwd is not writable */ - strcpy(tmpname, "/tmp/ed.XXXXXX"); - if ((scratch = mkstemp(tmpname)) < 0) - error("failed to create scratch file"); + error("failed to create scratch file"); } if ((k = makeline("", NULL))) error("input/output error in scratch file");