Path: blob/main/archivers/lha/files/patch-lhadd.c
16147 views
--- src/lhadd.c.orig 2000-10-04 14:57:38 UTC1+++ src/lhadd.c2@@ -75,7 +75,7 @@ add_one(fp, nafp, hdr)345/* ------------------------------------------------------------------------ */6-FILE *7+static FILE *8append_it(name, oafp, nafp)9char *name;10FILE *oafp, *nafp;11@@ -242,11 +242,12 @@ delete(oafp, nafp)12b2 = strtok(NULL, "|");13if (need_file(b1)) { /* skip */14fseek(oafp, ahdr.packed_size, SEEK_CUR);15- if (noexec || !quiet)16+ if (noexec || !quiet) {17if (b2 != NULL)18printf("delete %s -> %s\n", b1, b2);19else20printf("delete %s\n", b1);21+ }22}23else { /* copy */24if (noexec) {25@@ -270,13 +271,35 @@ build_temporary_file()26{27int old_umask;28FILE *afp;29+ int tempfd;30+31+ #ifdef TMP_FILENAME_TEMPLATE32+ if (extract_directory == NULL) {33+ strcpy(temporary_name, TMP_FILENAME_TEMPLATE);34+ }35+ else {36+ sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);37+ }38+ tempfd = mkstemp(temporary_name);39+ #else40+ char *p, *s;41+42+ strcpy(temporary_name, archive_name);43+ for (p = temporary_name, s = (char *) 0; *p; p++)44+ if (*p == '/')45+ s = p;46+ strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");47+ tempfd = mkstemp(temporary_name);48+ #endif49+ if (tempfd == -1)50+ return NULL;5152- build_temporary_name();53signal(SIGINT, interrupt);54signal(SIGHUP, interrupt);5556old_umask = umask(077);57- afp = xfopen(temporary_name, WRITE_BINARY);58+ /*afp = xfopen(temporary_name, WRITE_BINARY);*/59+ afp = fdopen(tempfd, "w+");60remove_temporary_at_error = TRUE;61temporary_fp = afp;62umask(old_umask);63@@ -340,6 +363,7 @@ temporary_to_new_archive_file(new_archiv64remove_temporary_at_error = FALSE;65}66#else67+void68temporary_to_new_archive_file(new_archive_size)69long new_archive_size;70{717273