4690ebba1e
PR: 20262 Submitted by: Port Fury
41 lines
1.2 KiB
Plaintext
41 lines
1.2 KiB
Plaintext
--- 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);
|