aboutsummaryrefslogtreecommitdiffstats
path: root/comms/bpl+/files/patch-bplexec.c
blob: 9830a08aa22a0b4d4eb0488840e560af78879093 (plain) (blame)
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
--- bplexec.c.orig  Thu Feb  9 17:25:34 1995
+++ bplexec.c   Wed Nov 15 20:45:53 2000
@@ -17,6 +17,7 @@
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <errno.h>
 
 #include "bpl.h"
 #include "machine.h"
@@ -1096,7 +1097,7 @@
 
    fname_w_index = strlen(fname_work);
    if (copy_body(s)) { /* t@Cُ */
-       strcpy(fname_work, tmpnam(NULL));
+       strcpy(fname_work, "/tmp/bpl.XXXXXXXXXX");
    }
 
    my_free(real_filename);
@@ -1118,16 +1119,19 @@
    FILE *fp;
    UCHAR *my_tmp;
    char *tmp;
+   int fd;
 
-   tmp = tmpnam(NULL);
+   tmp = "/tmp/bpl.XXXXXXXXXX";
    my_tmp = (UCHAR *) malloc(strlen(tmp) + 1);
    if (my_tmp == NULL)
        return NULL;
    strcpy(my_tmp, tmp);
 
-   fp = fopen(tmp, "wb");
-   if (fp == NULL) {
+   if ((fd = mkstemp(my_tmp)) == -1 ||
+            (fp = fdopen(fd, "wb")) == NULL ) {
+       fprintf(stderr, "%s: %s\n", my_tmp, strerror(errno));
        free(my_tmp);
+       return NULL;
    } else {
        /* fBNg current g */
        strwarn(STR_CANT_CREATE_L); /* ut@C쐬łȂ̂Łv */
@@ -1136,6 +1140,7 @@
        strwarn(STR_CANT_CREATE_R);
        my_free(real_filename);
        real_filename = my_tmp;
+       close(fd);
    }
    return fp;
 }