Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ports-gnome
Path: blob/main/archivers/lha/files/patch-lhadd.c
16147 views
1
--- src/lhadd.c.orig 2000-10-04 14:57:38 UTC
2
+++ src/lhadd.c
3
@@ -75,7 +75,7 @@ add_one(fp, nafp, hdr)
4
5
6
/* ------------------------------------------------------------------------ */
7
-FILE *
8
+static FILE *
9
append_it(name, oafp, nafp)
10
char *name;
11
FILE *oafp, *nafp;
12
@@ -242,11 +242,12 @@ delete(oafp, nafp)
13
b2 = strtok(NULL, "|");
14
if (need_file(b1)) { /* skip */
15
fseek(oafp, ahdr.packed_size, SEEK_CUR);
16
- if (noexec || !quiet)
17
+ if (noexec || !quiet) {
18
if (b2 != NULL)
19
printf("delete %s -> %s\n", b1, b2);
20
else
21
printf("delete %s\n", b1);
22
+ }
23
}
24
else { /* copy */
25
if (noexec) {
26
@@ -270,13 +271,35 @@ build_temporary_file()
27
{
28
int old_umask;
29
FILE *afp;
30
+ int tempfd;
31
+
32
+ #ifdef TMP_FILENAME_TEMPLATE
33
+ if (extract_directory == NULL) {
34
+ strcpy(temporary_name, TMP_FILENAME_TEMPLATE);
35
+ }
36
+ else {
37
+ sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);
38
+ }
39
+ tempfd = mkstemp(temporary_name);
40
+ #else
41
+ char *p, *s;
42
+
43
+ strcpy(temporary_name, archive_name);
44
+ for (p = temporary_name, s = (char *) 0; *p; p++)
45
+ if (*p == '/')
46
+ s = p;
47
+ strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");
48
+ tempfd = mkstemp(temporary_name);
49
+ #endif
50
+ if (tempfd == -1)
51
+ return NULL;
52
53
- build_temporary_name();
54
signal(SIGINT, interrupt);
55
signal(SIGHUP, interrupt);
56
57
old_umask = umask(077);
58
- afp = xfopen(temporary_name, WRITE_BINARY);
59
+ /*afp = xfopen(temporary_name, WRITE_BINARY);*/
60
+ afp = fdopen(tempfd, "w+");
61
remove_temporary_at_error = TRUE;
62
temporary_fp = afp;
63
umask(old_umask);
64
@@ -340,6 +363,7 @@ temporary_to_new_archive_file(new_archiv
65
remove_temporary_at_error = FALSE;
66
}
67
#else
68
+void
69
temporary_to_new_archive_file(new_archive_size)
70
long new_archive_size;
71
{
72
73