summaryrefslogtreecommitdiffstats
path: root/source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2021-11-29 19:32:48 +0000
committer Eric Hameleers <alien@slackware.com>2021-11-30 08:59:57 +0100
commitfe81aafa398acc73a552e56fc7843988242f1fd3 (patch)
treec56759e862ce466dc6e0fb90f7bd231546537a1b /source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
parentd96d2cea65caeb028b82926c830cb19cb43b4481 (diff)
downloadcurrent-fe81aafa398acc73a552e56fc7843988242f1fd3.tar.gz
current-fe81aafa398acc73a552e56fc7843988242f1fd3.tar.xz
Mon Nov 29 19:32:48 UTC 202120211129193248
ap/cdrtools-3.02a09-x86_64-1.txz: Upgraded. d/vala-0.54.4-x86_64-1.txz: Upgraded. x/xauth-1.1.1-x86_64-1.txz: Upgraded. extra/php8/php8-8.1.0-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch')
-rw-r--r--source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch511
1 files changed, 0 insertions, 511 deletions
diff --git a/source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch b/source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
deleted file mode 100644
index 0523fdd98..000000000
--- a/source/ap/cdrtools/cdrtools-3.01-fix-20151126-mkisofs-isoinfo.patch
+++ /dev/null
@@ -1,511 +0,0 @@
---- cdrtools-3.01.orig/mkisofs/diag/isoinfo.c 2015-07-22 20:36:45.000000000 +0000
-+++ cdrtools-3.01/mkisofs/diag/isoinfo.c 2015-11-17 19:35:40.000000000 +0000
-@@ -1,8 +1,8 @@
--/* @(#)isoinfo.c 1.95 15/07/22 joerg */
-+/* @(#)isoinfo.c 1.100 15/11/17 joerg */
- #include <schily/mconfig.h>
- #ifndef lint
- static UConst char sccsid[] =
-- "@(#)isoinfo.c 1.95 15/07/22 joerg";
-+ "@(#)isoinfo.c 1.100 15/11/17 joerg";
- #endif
- /*
- * File isodump.c - dump iso9660 directory information.
-@@ -148,8 +148,10 @@ LOCAL char er_id[256];
- LOCAL int su_version = 0;
- LOCAL int rr_version = 0;
- LOCAL int aa_version = 0;
-+LOCAL int cl_extent = 0;
- LOCAL int ucs_level = 0;
- LOCAL BOOL iso9660_inodes = FALSE;
-+LOCAL uid_t myuid;
-
- #ifdef USE_FIND
- LOCAL findn_t *find_node; /* syntaxtree from find_parse() */
-@@ -208,6 +210,9 @@ LOCAL void extract __PR((char *rootname
- LOCAL void extract_file __PR((int f,
- struct iso_directory_record * idr,
- char *fname));
-+LOCAL void parse_cl_dir __PR((struct iso_directory_record *idr,
-+ int extent));
-+LOCAL BOOL parse_de __PR((struct iso_directory_record *idr));
- LOCAL void parse_dir __PR((char * rootname, int extent, int len));
- LOCAL void usage __PR((int excode));
- EXPORT int main __PR((int argc, char *argv[]));
-@@ -459,7 +464,6 @@ parse_rr(pnt, len, cont_flag)
- int slen;
- int xlen;
- int ncount;
-- int cl_extent;
- int pl_extent;
- int cont_extent, cont_offset, cont_size;
- int flag1, flag2;
-@@ -469,7 +473,7 @@ parse_rr(pnt, len, cont_flag)
-
- symlinkname[0] = 0;
-
-- cont_extent = cont_offset = cont_size = 0;
-+ cl_extent = cont_extent = cont_offset = cont_size = 0;
-
- ncount = 0;
- flag1 = -1;
-@@ -714,6 +718,7 @@ struct todo
- };
-
- LOCAL struct todo *todo_idr = NULL;
-+LOCAL struct todo **todo_pp = &todo_idr;
-
- LOCAL char *months[12] = {"Jan", "Feb", "Mar", "Apr",
- "May", "Jun", "Jul",
-@@ -962,8 +967,14 @@ static BOOL isfirst = TRUE;
- close(f);
- return;
- setmode:
-- fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
- fchownat(AT_FDCWD, fname, fstat_buf.st_uid, fstat_buf.st_gid, AT_SYMLINK_NOFOLLOW);
-+ if (myuid != 0 && S_ISDIR(fstat_buf.st_mode)) {
-+ /*
-+ * Temporary hack until we have a dirstack like star.
-+ */
-+ fstat_buf.st_mode |= S_IWUSR;
-+ }
-+ fchmodat(AT_FDCWD, fname, fstat_buf.st_mode, AT_SYMLINK_NOFOLLOW);
- times[0].tv_sec = fstat_buf.st_atime;
- times[0].tv_nsec = stat_ansecs(&fstat_buf);
- times[1].tv_sec = fstat_buf.st_mtime;
-@@ -1001,6 +1012,143 @@ extract_file(f, idr, fname)
- }
- }
-
-+
-+LOCAL void
-+parse_cl_dir(idr, extent)
-+ struct iso_directory_record *idr;
-+ int extent;
-+{
-+ char cl_name_buf[256*3];
-+
-+ strlcpy(cl_name_buf, name_buf, sizeof (cl_name_buf));
-+#ifdef USE_SCG
-+ readsecs(extent - sector_offset, idr, 1);
-+#else
-+ lseek(fileno(infile), ((off_t)(extent - sector_offset)) << 11, SEEK_SET);
-+ read(fileno(infile), idr, 2048);
-+#endif
-+
-+ if (parse_de(idr) && use_rock)
-+ dump_rr(idr);
-+ strlcpy(name_buf, cl_name_buf, sizeof (name_buf));
-+}
-+
-+LOCAL BOOL
-+parse_de(idr)
-+ struct iso_directory_record *idr;
-+{
-+ unsigned char uc;
-+
-+ if (idr->length[0] == 0)
-+ return (FALSE);
-+ memset(&fstat_buf, 0, sizeof (fstat_buf));
-+ found_rr = 0;
-+ name_buf[0] = xname[0] = 0;
-+ fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
-+ if (idr->flags[0] & 2)
-+ fstat_buf.st_mode |= S_IFDIR;
-+ else
-+ fstat_buf.st_mode |= S_IFREG;
-+ if (idr->name_len[0] == 1 && idr->name[0] == 0)
-+ strcpy(name_buf, ".");
-+ else if (idr->name_len[0] == 1 && idr->name[0] == 1)
-+ strcpy(name_buf, "..");
-+ else {
-+ switch (ucs_level) {
-+ case 3:
-+ case 2:
-+ case 1:
-+ /*
-+ * Unicode name. Convert as best we can.
-+ */
-+ {
-+ int j;
-+ name_buf[0] = '\0';
-+#ifdef USE_ICONV
-+ if (use_iconv(unls)) {
-+ int u;
-+ char *to = name_buf;
-+
-+ for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
-+ char *ibuf = (char *)&idr->name[j*2];
-+ size_t isize = 2; /* UCS-2 character size */
-+ size_t osize = 4;
-+
-+ if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
-+ (char **)&to, &osize) == -1) {
-+ int err = geterrno();
-+
-+ if ((err == EINVAL || err == EILSEQ) &&
-+ osize == 4) {
-+ *to = '_';
-+ u += 1;
-+ to++;
-+ }
-+ } else {
-+ u += 4 - osize;
-+ to = &name_buf[u];
-+ }
-+ }
-+ j = u;
-+ } else
-+#endif
-+ for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
-+ UInt16_t unichar;
-+
-+ unichar = (idr->name[j*2] & 0xFF) * 256 +
-+ (idr->name[j*2+1] & 0xFF);
-+
-+ /*
-+ * Get the backconverted char
-+ */
-+ if (unls)
-+ uc = sic_uni2c(unls, unichar);
-+ else
-+ uc = unichar > 255 ? '_' : unichar;
-+
-+ name_buf[j] = uc ? uc : '_';
-+ }
-+ name_buf[j] = '\0';
-+ }
-+ break;
-+ case 0:
-+ /*
-+ * Normal non-Unicode name.
-+ */
-+ strncpy(name_buf, idr->name, idr->name_len[0]);
-+ name_buf[idr->name_len[0]] = 0;
-+ break;
-+ default:
-+ /*
-+ * Don't know how to do these yet. Maybe they are the same
-+ * as one of the above.
-+ */
-+ exit(1);
-+ }
-+ }
-+ memcpy(date_buf, idr->date, 9);
-+ /*
-+ * Always first set up time stamps and file modes from
-+ * ISO-9660. This is used as a fallback in case that
-+ * there is no related Rock Ridge based data.
-+ */
-+ fstat_buf.st_atime =
-+ fstat_buf.st_mtime =
-+ fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
-+ fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
-+ S_IRGRP|S_IXGRP |
-+ S_IROTH|S_IXOTH;
-+ fstat_buf.st_nlink = 1;
-+ fstat_buf.st_ino = 0;
-+ fstat_buf.st_uid = 0;
-+ fstat_buf.st_gid = 0;
-+ if (iso9660_inodes) {
-+ fstat_buf.st_ino = (unsigned long)
-+ isonum_733((unsigned char *)idr->extent);
-+ }
-+ return (TRUE);
-+}
-+
- LOCAL void
- parse_dir(rootname, extent, len)
- char *rootname;
-@@ -1012,12 +1160,13 @@ parse_dir(rootname, extent, len)
- struct iso_directory_record * idr;
- struct iso_directory_record didr;
- struct stat dstat;
-- unsigned char uc;
-+ unsigned char cl_buffer[2048];
- unsigned char flags = 0;
- Llong size = 0;
- int sextent = 0;
- int rlen;
- int blen;
-+ int rr_flags = 0;
- static char *n = 0;
- static int nlen = 0;
-
-@@ -1039,115 +1188,23 @@ static int nlen = 0;
- i = 0;
- while (1 == 1) {
- idr = (struct iso_directory_record *) &buffer[i];
-- if (idr->length[0] == 0) break;
-- memset(&fstat_buf, 0, sizeof (fstat_buf));
-- found_rr = 0;
-- name_buf[0] = xname[0] = 0;
-- fstat_buf.st_size = (off_t)(unsigned)isonum_733((unsigned char *)idr->size);
-- if (idr->flags[0] & 2)
-- fstat_buf.st_mode |= S_IFDIR;
-- else
-- fstat_buf.st_mode |= S_IFREG;
-- if (idr->name_len[0] == 1 && idr->name[0] == 0)
-- strcpy(name_buf, ".");
-- else if (idr->name_len[0] == 1 && idr->name[0] == 1)
-- strcpy(name_buf, "..");
-- else {
-- switch (ucs_level) {
-- case 3:
-- case 2:
-- case 1:
-- /*
-- * Unicode name. Convert as best we can.
-- */
-- {
-- int j;
--
-- name_buf[0] = '\0';
--#ifdef USE_ICONV
-- if (use_iconv(unls)) {
-- int u;
-- char *to = name_buf;
--
-- for (j = 0, u = 0; j < (int)idr->name_len[0] / 2; j++) {
-- char *ibuf = (char *)&idr->name[j*2];
-- size_t isize = 2; /* UCS-2 character size */
-- size_t osize = 4;
--
-- if (iconv(unls->sic_uni2cd, (__IC_CONST char **)&ibuf, &isize,
-- (char **)&to, &osize) == -1) {
-- int err = geterrno();
--
-- if ((err == EINVAL || err == EILSEQ) &&
-- osize == 4) {
-- *to = '_';
-- u += 1;
-- to++;
-- }
-- } else {
-- u += 4 - osize;
-- to = &name_buf[u];
-- }
-- }
-- j = u;
-- } else
--#endif
-- for (j = 0; j < (int)idr->name_len[0] / 2; j++) {
-- UInt16_t unichar;
--
-- unichar = (idr->name[j*2] & 0xFF) * 256 +
-- (idr->name[j*2+1] & 0xFF);
--
-- /*
-- * Get the backconverted char
-- */
-- if (unls)
-- uc = sic_uni2c(unls, unichar);
-- else
-- uc = unichar > 255 ? '_' : unichar;
-+ if (idr->length[0] == 0)
-+ break;
-+ parse_de(idr);
-+ if (use_rock) {
-+ rr_flags = dump_rr(idr);
-
-- name_buf[j] = uc ? uc : '_';
-- }
-- name_buf[j] = '\0';
-- }
-- break;
-- case 0:
-+ if (rr_flags & RR_FLAG_CL) {
- /*
-- * Normal non-Unicode name.
-+ * Need to reparse the child link
-+ * but note that we parse "CL/."
-+ * so we get no usable file name.
- */
-- strncpy(name_buf, idr->name, idr->name_len[0]);
-- name_buf[idr->name_len[0]] = 0;
-- break;
-- default:
-- /*
-- * Don't know how to do these yet. Maybe they are the same
-- * as one of the above.
-- */
-- exit(1);
-- }
-+ idr = (struct iso_directory_record *) cl_buffer;
-+ parse_cl_dir(idr, cl_extent);
-+ } else if (rr_flags & RR_FLAG_RE)
-+ goto cont; /* skip rr_moved */
- }
-- memcpy(date_buf, idr->date, 9);
-- /*
-- * Always first set up time stamps and file modes from
-- * ISO-9660. This is used as a fallback in case that
-- * there is no related Rock Ridge based data.
-- */
-- fstat_buf.st_atime =
-- fstat_buf.st_mtime =
-- fstat_buf.st_ctime = iso9660_time(date_buf, NULL, FALSE);
-- fstat_buf.st_mode |= S_IRUSR|S_IXUSR |
-- S_IRGRP|S_IXGRP |
-- S_IROTH|S_IXOTH;
-- fstat_buf.st_nlink = 1;
-- fstat_buf.st_ino = 0;
-- fstat_buf.st_uid = 0;
-- fstat_buf.st_gid = 0;
-- if (iso9660_inodes) {
-- fstat_buf.st_ino = (unsigned long)
-- isonum_733((unsigned char *)idr->extent);
-- }
-- if (use_rock)
-- dump_rr(idr);
- if (Xtract &&
- (idr->flags[0] & 2) != 0 &&
- idr->name_len[0] == 1 &&
-@@ -1170,30 +1227,30 @@ static int nlen = 0;
- n[rlen] = '\0';
-
- if ((idr->flags[0] & 2) != 0 &&
-- (idr->name_len[0] != 1 ||
-+ ((rr_flags & RR_FLAG_CL) ||
-+ idr->name_len[0] != 1 ||
- (idr->name[0] != 0 && idr->name[0] != 1))) {
- /*
- * This is a plain directory (neither "xxx/."
- * nor "xxx/..").
- * Add this directory to the todo list.
- */
-- td = todo_idr;
-- if (td != NULL) {
-- while (td->next != NULL)
-- td = td->next;
-- td->next = (struct todo *) malloc(sizeof (*td));
-- td = td->next;
-- } else {
-- todo_idr = td = (struct todo *) malloc(sizeof (*td));
-- }
-+ td = (struct todo *) malloc(sizeof (*td));
-+ if (td == NULL)
-+ comerr(_("No memory.\n"));
- td->next = NULL;
- td->extent = isonum_733((unsigned char *)idr->extent);
- td->length = isonum_733((unsigned char *)idr->size);
- td->name = (char *) malloc(strlen(rootname)
- + strlen(name_buf) + 2);
-+ if (td->name == NULL)
-+ comerr(_("No memory.\n"));
- strcpy(td->name, rootname);
- strcat(td->name, name_buf);
- strcat(td->name, "/");
-+
-+ *todo_pp = td;
-+ todo_pp = &td->next;
- } else {
- if (xtract && strcmp(xtract, n) == 0) {
- extract_file(STDOUT_FILENO, idr, "stdout");
-@@ -1253,6 +1310,7 @@ static int nlen = 0;
- if ((idr->flags[0] & ISO_MULTIEXTENT) == 0)
- size = 0;
- }
-+ cont:
- i += buffer[i];
- if (i > 2048 - offsetof(struct iso_directory_record, name[0])) break;
- }
-@@ -1381,12 +1439,13 @@ main(argc, argv)
- usage(0);
- if (prvers) {
- printf(_("isoinfo %s (%s-%s-%s) Copyright (C) 1993-1999 %s (C) 1999-2015 %s\n"),
-- VERSION,
-+ "3.02a02",
- HOST_CPU, HOST_VENDOR, HOST_OS,
- _("Eric Youngdale"),
- _("Joerg Schilling"));
- exit(0);
- }
-+ myuid = getuid();
- #ifdef USE_FIND
- if (do_find) {
- finda_t fa;
---- cdrtools-3.01.orig/mkisofs/udf.c 2013-04-24 20:45:18.000000000 +0000
-+++ cdrtools-3.01/mkisofs/udf.c 2015-11-25 22:07:30.000000000 +0000
-@@ -1,15 +1,15 @@
--/* @(#)udf.c 1.42 13/04/24 Copyright 2001-2013 J. Schilling */
-+/* @(#)udf.c 1.43 15/11/25 Copyright 2001-2015 J. Schilling */
- #include <schily/mconfig.h>
- #ifndef lint
- static UConst char sccsid[] =
-- "@(#)udf.c 1.42 13/04/24 Copyright 2001-2013 J. Schilling";
-+ "@(#)udf.c 1.43 15/11/25 Copyright 2001-2015 J. Schilling";
- #endif
- /*
- * udf.c - UDF support for mkisofs
- *
- * Written by Ben Rudiak-Gould (2001).
- *
-- * Copyright 2001-2013 J. Schilling.
-+ * Copyright 2001-2015 J. Schilling.
- */
- /*
- * This program is free software; you can redistribute it and/or modify
-@@ -98,7 +98,7 @@ static UConst char sccsid[] =
- extern int use_sparcboot;
-
- extern struct directory *root;
--extern time_t begun;
-+extern struct timeval tv_begun;
-
- static unsigned lba_main_seq;
- static unsigned lba_main_seq_copy;
-@@ -110,7 +110,7 @@ static unsigned lba_end_anchor_vol_desc;
- static unsigned num_udf_files;
- static unsigned num_udf_directories;
-
--static unsigned volume_set_id[2];
-+static unsigned volume_set_id[2] = { 0, 0 };
-
- #define UDF_MAIN_SEQ_LENGTH (16)
- #define UDF_INTEG_SEQ_LENGTH (2)
-@@ -723,7 +723,7 @@ set_primary_vol_desc(buf, lba)
- /*pvd->volume_abstract;*/
- /*pvd->volume_copyright_notice;*/
- /*pvd->application_ident;*/
-- set_timestamp_from_time_t(&pvd->recording_date_and_time, begun);
-+ set_timestamp_from_time_t(&pvd->recording_date_and_time, tv_begun.tv_sec);
- set_impl_ident(&pvd->impl_ident);
- set_tag(&pvd->desc_tag, UDF_TAGID_PRIMARY_VOLUME_DESC, lba, 512);
- }
-@@ -831,7 +831,7 @@ set_logical_vol_integrity_desc(buf, lba)
- udf_logical_volume_integrity_desc *lvid =
- (udf_logical_volume_integrity_desc *)buf;
-
-- set_timestamp_from_time_t(&lvid->recording_date, begun);
-+ set_timestamp_from_time_t(&lvid->recording_date, tv_begun.tv_sec);
- set32(&lvid->integrity_type, UDF_INTEGRITY_TYPE_CLOSE);
- /*lvid->next_integrity_extent;*/
- set64(&lvid->logical_volume_contents_use.unique_id,
-@@ -859,7 +859,7 @@ set_file_set_desc(buf, rba)
- {
- udf_file_set_desc *fsd = (udf_file_set_desc *)buf;
-
-- set_timestamp_from_time_t(&fsd->recording_date_and_time, begun);
-+ set_timestamp_from_time_t(&fsd->recording_date_and_time, tv_begun.tv_sec);
- set16(&fsd->interchange_level, 3);
- set16(&fsd->maximum_interchange_level, 3);
- set32(&fsd->character_set_list, 1);
-@@ -1986,8 +1986,10 @@ udf_main_seq_write(out)
- * volume_set_id needs to be set to a (64-bit) "unique" number.
- * This will have to do for now.
- */
-- volume_set_id[0] = begun;
-- volume_set_id[1] = (unsigned)clock(); /* XXX Maybe non-portable */
-+ if (volume_set_id[0] == 0) {
-+ volume_set_id[0] = tv_begun.tv_sec;
-+ volume_set_id[1] = (unsigned)tv_begun.tv_usec;
-+ }
-
- memset(buf, 0, sizeof (buf));
- set_primary_vol_desc(buf, last_extent_written++);
---- cdrtools-3.01.orig/mkisofs/mkisofs.c 2015-01-01 14:19:51.000000000 +0000
-+++ cdrtools-3.01/mkisofs/mkisofs.c
-@@ -69 +69 @@ int path_ind;
--char version_string[] = VERSION;
-+char version_string[] = "3.01-fix-20151126";