FILE *outfile;
char *dir, *fname;
int lineno;
-
- dir = getenv("TMPDIR");
- if (!dir)
- dir = "/tmp";
-
- asprintf(&fname, "%s/wiggle-tmp-XXXXXX", dir);
- fd = mkstemp(fname);
+ int suffix = 0;
+
+ if (!*filep) {
+ dir = getenv("TMPDIR");
+ if (!dir)
+ dir = "/tmp";
+
+ asprintf(&fname, "%s/wiggle-tmp-XXXXXX", dir);
+ } else {
+ char *base;
+ dir = *filep;
+ base = strrchr(dir, '/');
+ if (base)
+ base++;
+ else
+ base = dir;
+ asprintf(&fname, "%.*stmp-XXXXXX-%s", (int)(base-dir), dir, base);
+ suffix = strlen(base)+1;
+ }
+ fd = mkstemps(fname, suffix);
if (fd < 0) {
free(fname);
+ *filep = NULL;
return -1;
}
outfile = fdopen(fd, "w");
mesg = "Cannot run editor when diffing";
break;
}
+ tempname = p->file;
lineno = save_tmp_merge(fm, fb, fa, ci.merger,
&tempname,
ci.merger + pos.p.m,