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
|
--- src/lhadd.c.orig Mon Jul 31 18:09:53 2000
+++ src/lhadd.c Mon Jul 31 18:14:20 2000
@@ -270,13 +270,35 @@
{
int old_umask;
FILE *afp;
+ int tempfd;
+
+ #ifdef TMP_FILENAME_TEMPLATE
+ if (extract_directory == NULL) {
+ strcpy(temporary_name, TMP_FILENAME_TEMPLATE);
+ }
+ else {
+ sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);
+ }
+ tempfd = mkstemp(temporary_name);
+ #else
+ char *p, *s;
+
+ strcpy(temporary_name, archive_name);
+ for (p = temporary_name, s = (char *) 0; *p; p++)
+ if (*p == '/')
+ s = p;
+ strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");
+ tempfd = mkstemp(temporary_name);
+ #endif
+ if (tempfd == -1)
+ return NULL;
- build_temporary_name();
signal(SIGINT, interrupt);
signal(SIGHUP, interrupt);
old_umask = umask(077);
- afp = xfopen(temporary_name, WRITE_BINARY);
+ /*afp = xfopen(temporary_name, WRITE_BINARY);*/
+ afp = fdopen(tempfd, "w+");
remove_temporary_at_error = TRUE;
temporary_fp = afp;
umask(old_umask);
|