sbase

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

commit cf60336e09a7cf73f4750c4f5ec0fffdb9dca2dc
parent ec9fdd0594dcbb0edd0bc2f8775a2b10978d8c46
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date:   Fri Jan  1 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:
ed.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");