mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
makefs: remove ISO9660 Archimedes extension support
We have no need to create ISO images with RISC OS specific metadata. Reviewed by: imp Relnotes: yes Obtained from: OpenBSD a435da44c07f Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39344
This commit is contained in:
parent
d5ef73a71f
commit
84696cf10c
|
@ -108,7 +108,6 @@
|
||||||
#include "makefs.h"
|
#include "makefs.h"
|
||||||
#include "cd9660.h"
|
#include "cd9660.h"
|
||||||
#include "cd9660/iso9660_rrip.h"
|
#include "cd9660/iso9660_rrip.h"
|
||||||
#include "cd9660/cd9660_archimedes.h"
|
|
||||||
|
|
||||||
static void cd9660_finalize_PVD(iso9660_disk *);
|
static void cd9660_finalize_PVD(iso9660_disk *);
|
||||||
static cd9660node *cd9660_allocate_cd9660node(void);
|
static cd9660node *cd9660_allocate_cd9660node(void);
|
||||||
|
@ -201,7 +200,6 @@ cd9660_set_defaults(iso9660_disk *diskStructure)
|
||||||
diskStructure->rock_ridge_move_count = 0;
|
diskStructure->rock_ridge_move_count = 0;
|
||||||
diskStructure->rr_moved_dir = 0;
|
diskStructure->rr_moved_dir = 0;
|
||||||
|
|
||||||
diskStructure->archimedes_enabled = 0;
|
|
||||||
diskStructure->chrp_boot = 0;
|
diskStructure->chrp_boot = 0;
|
||||||
|
|
||||||
diskStructure->include_padding_areas = 1;
|
diskStructure->include_padding_areas = 1;
|
||||||
|
@ -281,8 +279,6 @@ cd9660_prep_opts(fsinfo_t *fsopts)
|
||||||
"Omit trailing periods in filenames"),
|
"Omit trailing periods in filenames"),
|
||||||
OPT_BOOL('\0', "allow-lowercase", allow_lowercase,
|
OPT_BOOL('\0', "allow-lowercase", allow_lowercase,
|
||||||
"Allow lowercase characters in filenames"),
|
"Allow lowercase characters in filenames"),
|
||||||
OPT_BOOL('\0', "archimedes", archimedes_enabled,
|
|
||||||
"Enable Archimedes structure"),
|
|
||||||
OPT_BOOL('\0', "no-trailing-padding", include_padding_areas,
|
OPT_BOOL('\0', "no-trailing-padding", include_padding_areas,
|
||||||
"Include padding areas"),
|
"Include padding areas"),
|
||||||
|
|
||||||
|
@ -528,10 +524,6 @@ cd9660_makefs(const char *image, const char *dir, fsnode *root,
|
||||||
if (diskStructure->verbose_level > 0)
|
if (diskStructure->verbose_level > 0)
|
||||||
printf("%s: done converting tree\n", __func__);
|
printf("%s: done converting tree\n", __func__);
|
||||||
|
|
||||||
/* non-SUSP extensions */
|
|
||||||
if (diskStructure->archimedes_enabled)
|
|
||||||
archimedes_convert_tree(diskStructure->rootNode);
|
|
||||||
|
|
||||||
/* Rock ridge / SUSP init pass */
|
/* Rock ridge / SUSP init pass */
|
||||||
if (diskStructure->rock_ridge_enabled) {
|
if (diskStructure->rock_ridge_enabled) {
|
||||||
cd9660_susp_initialize(diskStructure, diskStructure->rootNode,
|
cd9660_susp_initialize(diskStructure, diskStructure->rootNode,
|
||||||
|
@ -1599,11 +1591,6 @@ cd9660_level1_convert_filename(iso9660_disk *diskStructure, const char *oldname,
|
||||||
found_ext = 1;
|
found_ext = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* cut RISC OS file type off ISO name */
|
|
||||||
if (diskStructure->archimedes_enabled &&
|
|
||||||
*oldname == ',' && strlen(oldname) == 4)
|
|
||||||
break;
|
|
||||||
|
|
||||||
/* Enforce 12.3 / 8 */
|
/* Enforce 12.3 / 8 */
|
||||||
if (namelen == 8 && !found_ext)
|
if (namelen == 8 && !found_ext)
|
||||||
break;
|
break;
|
||||||
|
@ -1666,12 +1653,7 @@ cd9660_level2_convert_filename(iso9660_disk *diskStructure, const char *oldname,
|
||||||
found_ext = 1;
|
found_ext = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* cut RISC OS file type off ISO name */
|
if (islower((unsigned char)*oldname))
|
||||||
if (diskStructure->archimedes_enabled &&
|
|
||||||
*oldname == ',' && strlen(oldname) == 4)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (islower((unsigned char)*oldname))
|
|
||||||
*newname++ = toupper((unsigned char)*oldname);
|
*newname++ = toupper((unsigned char)*oldname);
|
||||||
else if (isupper((unsigned char)*oldname) ||
|
else if (isupper((unsigned char)*oldname) ||
|
||||||
isdigit((unsigned char)*oldname))
|
isdigit((unsigned char)*oldname))
|
||||||
|
|
|
@ -250,7 +250,6 @@ typedef struct _iso9660_disk {
|
||||||
unsigned rock_ridge_move_count;
|
unsigned rock_ridge_move_count;
|
||||||
cd9660node *rr_moved_dir;
|
cd9660node *rr_moved_dir;
|
||||||
|
|
||||||
int archimedes_enabled;
|
|
||||||
int chrp_boot;
|
int chrp_boot;
|
||||||
|
|
||||||
/* Spec breaking options */
|
/* Spec breaking options */
|
||||||
|
|
|
@ -3,4 +3,4 @@
|
||||||
CFLAGS+=-I${SRCTOP}/sys/fs/cd9660/
|
CFLAGS+=-I${SRCTOP}/sys/fs/cd9660/
|
||||||
|
|
||||||
SRCS+= cd9660_strings.c cd9660_debug.c cd9660_eltorito.c \
|
SRCS+= cd9660_strings.c cd9660_debug.c cd9660_eltorito.c \
|
||||||
cd9660_write.c cd9660_conversion.c iso9660_rrip.c cd9660_archimedes.c
|
cd9660_write.c cd9660_conversion.c iso9660_rrip.c
|
||||||
|
|
|
@ -1,124 +0,0 @@
|
||||||
/* $NetBSD: cd9660_archimedes.c,v 1.1 2009/01/10 22:06:29 bjh21 Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*
|
|
||||||
* Copyright (c) 1998, 2009 Ben Harris
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* cd9660_archimedes.c - support for RISC OS "ARCHIMEDES" extension
|
|
||||||
*
|
|
||||||
* RISC OS CDFS looks for a special block at the end of the System Use
|
|
||||||
* Field for each file. If present, this contains the RISC OS load
|
|
||||||
* and exec address (used to hold the file timestamp and type), the
|
|
||||||
* file attributes, and a flag indicating whether the first character
|
|
||||||
* of the filename should be replaced with '!' (since many special
|
|
||||||
* RISC OS filenames do).
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#include <assert.h>
|
|
||||||
#include <stdint.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <util.h>
|
|
||||||
|
|
||||||
#include "makefs.h"
|
|
||||||
#include "cd9660.h"
|
|
||||||
#include "cd9660_archimedes.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Convert a Unix time_t (non-leap seconds since 1970-01-01) to a RISC
|
|
||||||
* OS time (non-leap(?) centiseconds since 1900-01-01(?)).
|
|
||||||
*/
|
|
||||||
|
|
||||||
static u_int64_t
|
|
||||||
riscos_date(time_t unixtime)
|
|
||||||
{
|
|
||||||
u_int64_t base;
|
|
||||||
|
|
||||||
base = 31536000ULL * 70 + 86400 * 17;
|
|
||||||
return (((u_int64_t)unixtime) + base)*100;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add "ARCHIMEDES" metadata to a node if that seems appropriate.
|
|
||||||
*
|
|
||||||
* We touch regular files with names matching /,[0-9a-f]{3}$/ and
|
|
||||||
* directories matching /^!/.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
archimedes_convert_node(cd9660node *node)
|
|
||||||
{
|
|
||||||
struct ISO_ARCHIMEDES *arc;
|
|
||||||
size_t len;
|
|
||||||
int type = -1;
|
|
||||||
uint64_t stamp;
|
|
||||||
|
|
||||||
if (node->su_tail_data != NULL)
|
|
||||||
/* Something else already has the tail. */
|
|
||||||
return;
|
|
||||||
|
|
||||||
len = strlen(node->node->name);
|
|
||||||
if (len < 1) return;
|
|
||||||
|
|
||||||
if (len >= 4 && node->node->name[len-4] == ',')
|
|
||||||
/* XXX should support ,xxx and ,lxa */
|
|
||||||
type = strtoul(node->node->name + len - 3, NULL, 16);
|
|
||||||
if (type == -1 && node->node->name[0] != '!')
|
|
||||||
return;
|
|
||||||
if (type == -1) type = 0;
|
|
||||||
|
|
||||||
assert(sizeof(*arc) == 32);
|
|
||||||
arc = ecalloc(1, sizeof(*arc));
|
|
||||||
|
|
||||||
stamp = riscos_date(node->node->inode->st.st_mtime);
|
|
||||||
|
|
||||||
memcpy(arc->magic, "ARCHIMEDES", 10);
|
|
||||||
cd9660_731(0xfff00000 | (type << 8) | (stamp >> 32), arc->loadaddr);
|
|
||||||
cd9660_731(stamp & 0x00ffffffffULL, arc->execaddr);
|
|
||||||
arc->ro_attr = RO_ACCESS_UR | RO_ACCESS_OR;
|
|
||||||
arc->cdfs_attr = node->node->name[0] == '!' ? CDFS_PLING : 0;
|
|
||||||
node->su_tail_data = (void *)arc;
|
|
||||||
node->su_tail_size = sizeof(*arc);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Add "ARCHIMEDES" metadata to an entire tree recursively.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
archimedes_convert_tree(cd9660node *node)
|
|
||||||
{
|
|
||||||
cd9660node *cn;
|
|
||||||
|
|
||||||
assert(node != NULL);
|
|
||||||
|
|
||||||
archimedes_convert_node(node);
|
|
||||||
|
|
||||||
/* Recurse on children. */
|
|
||||||
TAILQ_FOREACH(cn, &node->cn_children, cn_next_child)
|
|
||||||
archimedes_convert_tree(cn);
|
|
||||||
}
|
|
|
@ -1,50 +0,0 @@
|
||||||
/* $NetBSD: cd9660_archimedes.h,v 1.1 2009/01/10 22:06:29 bjh21 Exp $ */
|
|
||||||
|
|
||||||
/*-
|
|
||||||
* SPDX-License-Identifier: BSD-3-Clause
|
|
||||||
*
|
|
||||||
* Copyright (c) 1998, 2009 Ben Harris
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* 3. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
||||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
||||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* cd9660_archimedes.c - support for RISC OS "ARCHIMEDES" extension
|
|
||||||
*/
|
|
||||||
|
|
||||||
struct ISO_ARCHIMEDES {
|
|
||||||
char magic[10]; /* "ARCHIMEDES" */
|
|
||||||
unsigned char loadaddr[4]; /* Load address, little-endian */
|
|
||||||
unsigned char execaddr[4]; /* Exec address, little-endian */
|
|
||||||
unsigned char ro_attr; /* RISC OS attributes */
|
|
||||||
#define RO_ACCESS_UR 0x01 /* Owner read */
|
|
||||||
#define RO_ACCESS_UW 0x02 /* Owner write */
|
|
||||||
#define RO_ACCESS_L 0x04 /* Locked */
|
|
||||||
#define RO_ACCESS_OR 0x10 /* Public read */
|
|
||||||
#define RO_ACCESS_OW 0x20 /* Public write */
|
|
||||||
unsigned char cdfs_attr; /* Extra attributes for CDFS */
|
|
||||||
#define CDFS_PLING 0x01 /* Filename begins with '!' */
|
|
||||||
char reserved[12];
|
|
||||||
};
|
|
||||||
|
|
||||||
extern void archimedes_convert_tree(cd9660node *);
|
|
|
@ -33,7 +33,8 @@
|
||||||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
.\" POSSIBILITY OF SUCH DAMAGE.
|
.\" POSSIBILITY OF SUCH DAMAGE.
|
||||||
.\"
|
.\"
|
||||||
.Dd August 5, 2022
|
.Dd March 31, 2023
|
||||||
|
|
||||||
.Dt MAKEFS 8
|
.Dt MAKEFS 8
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -365,12 +366,6 @@ version id.
|
||||||
Allow multiple dots in a filename.
|
Allow multiple dots in a filename.
|
||||||
.It Sy applicationid
|
.It Sy applicationid
|
||||||
Application ID of the image.
|
Application ID of the image.
|
||||||
.It Sy archimedes
|
|
||||||
Use the
|
|
||||||
.Ql ARCHIMEDES
|
|
||||||
extension to encode
|
|
||||||
.Tn RISC OS
|
|
||||||
metadata.
|
|
||||||
.It Sy bootimagedir
|
.It Sy bootimagedir
|
||||||
Boot image directory.
|
Boot image directory.
|
||||||
This option is not implemented.
|
This option is not implemented.
|
||||||
|
|
Loading…
Reference in a new issue