summaryrefslogtreecommitdiff
path: root/lang/f2c/patches/patch-ak
blob: 48485114a9a7b6229c1f797ec7e957a3c6682c20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
$NetBSD: patch-ak,v 1.1 2005/01/28 23:37:42 dmcmahill Exp $

--- src/sysdep.c.orig	2000-07-04 22:54:54.000000000 +0000
+++ src/sysdep.c
@@ -22,6 +22,7 @@ use or performance of this software.
 ****************************************************************/
 #include "defs.h"
 #include "usignal.h"
+#include <stdlib.h>
 
 char binread[] = "rb", textread[] = "r";
 char binwrite[] = "wb", textwrite[] = "w";
@@ -95,8 +96,10 @@ Un_link_all(int cdelete)
 {
 	if (!debugflag) {
 		unlink(c_functions);
+		unlink(initbname);
 		unlink(initfname);
 		unlink(p1_file);
+		unlink(p1_bakfile);
 		unlink(sortfname);
 		unlink(blkdfname);
 		if (cdelete && coutput)
@@ -118,6 +121,15 @@ set_tmp_names(Void)
 	p1_file = blkdfname + k;
 	p1_bakfile = p1_file + k;
 	sortfname = p1_bakfile + k;
+#if !defined(MSDOS)
+	sprintf(c_functions, "%s/f2c_func_XXXXXX", tmpdir);
+	sprintf(initfname,   "%s/f2c_rc_XXXXXX", tmpdir);
+	sprintf(initbname,   "%s/f2c_rc.b_XXXXXX", tmpdir);
+	sprintf(blkdfname,   "%s/f2c_blkd_XXXXXX", tmpdir);
+	sprintf(p1_file,     "%s/f2c_p1f_XXXXXX", tmpdir);
+	sprintf(p1_bakfile,  "%s/f2c_p1fb_XXXXXX", tmpdir);
+	sprintf(sortfname,   "%s/f2c_sort_XXXXXX", tmpdir);
+#endif
 	{
 #ifdef MSDOS
 	char buf[64], *s, *t;
@@ -156,16 +168,21 @@ set_tmp_names(Void)
 	sprintf(p1_file, "%s%sp1f", t, f2c);
 	sprintf(p1_bakfile, "%s%sp1fb", t, f2c);
 	sprintf(sortfname, "%s%ssort", t, f2c);
+	sprintf(initbname, "%s.b", initfname);
 #else
-	long pid = getpid();
-	sprintf(c_functions, "%s/f2c%ld_func", tmpdir, pid);
-	sprintf(initfname, "%s/f2c%ld_rd", tmpdir, pid);
-	sprintf(blkdfname, "%s/f2c%ld_blkd", tmpdir, pid);
-	sprintf(p1_file, "%s/f2c%ld_p1f", tmpdir, pid);
-	sprintf(p1_bakfile, "%s/f2c%ld_p1fb", tmpdir, pid);
-	sprintf(sortfname, "%s/f2c%ld_sort", tmpdir, pid);
+
+	if (mkstemp(c_functions) == -1
+	    || mkstemp(initfname) == -1
+	    || mkstemp(initbname) == -1
+	    || mkstemp(blkdfname) == -1
+	    || mkstemp(p1_file) == -1
+	    || mkstemp(p1_bakfile) == -1
+	    || mkstemp(sortfname) == -1) {
+	  fprintf(stderr, "Cannot create temporary files\n");
+	  Un_link_all(0);
+	  exit(1);
+	}
 #endif
-	sprintf(initbname, "%s.b", initfname);
 	}
 	if (debugflag)
 		fprintf(diagfile, "%s %s %s %s %s %s\n", c_functions,