$NetBSD: patch-af,v 1.5 2005/10/03 15:00:12 wiz Exp $

--- src/main.c.orig	2003-08-14 16:36:18.000000000 +0200
+++ src/main.c
@@ -330,9 +330,32 @@ lastarg:
 	}
 
 	/* create the temporary file names */
-	pid = getpid();
-	(void) sprintf(temp1, "%s/cscope%d.1", tmpdir, pid);
-	(void) sprintf(temp2, "%s/cscope%d.2", tmpdir, pid);
+	do {
+		char *tempfile = tempnam(tmpdir, "cscope1");
+		if (!tempfile) {
+			fprintf (stderr, "Can't create tempfile\n");
+			exit(1);
+		}
+		if (strlen(tempfile) >= sizeof(temp1)) {
+			fprintf (stderr, "TMPDIR path is too long\n");
+			exit(1);
+		}
+		strncpy (temp1, tempfile, sizeof (temp1));
+		free (tempfile);
+	} while (open (temp1, O_CREAT|O_EXCL|O_WRONLY, S_IREAD|S_IWRITE) < 0);
+	do {
+		char *tempfile = tempnam(tmpdir, "cscope2");
+		if (!tempfile) {
+			fprintf (stderr, "Can't create tempfile\n");
+			exit(1);
+		}
+		if (strlen(tempfile) >= sizeof(temp2)) {
+			fprintf (stderr, "TMPDIR path is too long\n");
+			exit(1);
+		}
+		strncpy (temp2, tempfile, sizeof (temp2));
+		free (tempfile);
+	} while (open (temp2, O_CREAT|O_EXCL|O_WRONLY, S_IREAD|S_IWRITE) < 0);
 
 	/* if running in the foreground */
 	if (signal(SIGINT, SIG_IGN) != SIG_IGN) {
