head	1.4;
access;
symbols
	perseant-exfatfs:1.4.0.2
	perseant-exfatfs-base-20261102:1.4;
locks; strict;
comment	@# @;


1.4
date	2026.03.05.19.06.14;	author kre;	state Exp;
branches
	1.4.2.1;
next	1.3;
commitid	ahoi36mfGXZTQOwG;

1.3
date	2026.03.02.04.35.49;	author kre;	state Exp;
branches;
next	1.2;
commitid	422RNj3arlOg8mwG;

1.2
date	2026.03.01.16.29.16;	author christos;	state Exp;
branches;
next	1.1;
commitid	94UUAgazcUK07iwG;

1.1
date	2026.03.01.15.16.19;	author christos;	state Exp;
branches;
next	;
commitid	P2feJYEneAOKHhwG;

1.4.2.1
date	2026.03.05.19.06.14;	author perseant;	state dead;
branches;
next	1.4.2.2;
commitid	3QTNojfCEH9lUb2H;

1.4.2.2
date	2026.11.04.22.37.14;	author perseant;	state Exp;
branches;
next	;
commitid	3QTNojfCEH9lUb2H;


desc
@@


1.4
log
@Fix incorrect syntax for some shells

In a world long vanished, the ascii char set did not have the |
character (0x7c) as a standard member, and could not be relied
upon existing.   In systems only found today in archaeological digs,
that was handled by making '^' be the sh symbol for a pipe.

That meant that the regular expression notation for negating a
character class ([^stuff]) couldn't be used in shell patterns,
and so ! was used there instead of the ^.   The ^ did not bother
use in REs as those almost always need to be quoted when included
in a shell command anyway - but quoting of shell patterns would
defeat their use as a pattern, so couldn't be used there.

In more modern times, this excuse for the difference has long gone,
^ isn't the pipe symbol in any shell that is likely to be encountered,
and so most shells allow either ^ or ! to represent negation of a
character class - ^ for compat with REs, and ! for compat with old
scripts.

However, there are a few holdouts, dash, mksh, bosh (which actually
still allows ^ to represent pipes, bizarrely) and even our own /bin/ksh
only allow ! in [] as the negation operator.

So, use ! instead of ^  (! works everywhere).
@
text
@#!/bin/sh
#
# Copyright (c) 2026 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Christos Zoulas.
#
# 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.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``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 FOUNDATION OR CONTRIBUTORS
# 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.
#
# Get the ramdisk size from a file

PROG=$(basename "$0")

kernel=INSTALL
src=/usr/src
arch=$(uname -m)

usage() {
	printf >&2 'Usage: %s [-a <arch>] [-k <kernel>] [-s <srcdir>]\n' \
	    "${PROG}"
	exit 1
}

getsize() {
	set -f

	MDRSZ=$(grep MEMORY_DISK_ROOT_SIZE "$1") || return 1
	set -- ${MDRSZ}

	case "$2" in
	MEMORY_DISK_ROOT_SIZE=*[!0-9]*)
		return 1;;
	MEMORY_DISK_ROOT_SIZE=*)
		eval "$2";;
	*)
		return 1;;
	esac

	# should the following round down (as it does now), or up?
	printf '%dk\n' "$(( MEMORY_DISK_ROOT_SIZE / 2 ))"

	# leave exit status from printf, so we fail if output fails.
}

while getopts a:k:s: i
do
	case $i in
	a)	arch=$OPTARG;;
	k)	kernel=$OPTARG;;
	s)	src=$OPTARG;;
	*)
		usage;;
	esac
done
shift $((OPTIND - 1))

file=$src/sys/arch/$arch/conf/$kernel

if ! [ -f "$file" ]; then
	printf >&2 "%s: Can't open '%s'\\n" "${PROG}" "${file}"
	exit 1
fi

getsize "$file" || {
	printf >&2 '%s: Bad/missing MEMORY_DISK_ROOT_SIZE in %s\n' \
	    "${PROG}" "${file}"
	exit 1
}
@


1.4.2.1
log
@file getramdisksize was added on branch perseant-exfatfs on 2026-11-04 22:37:14 +0000
@
text
@d1 88
@


1.4.2.2
log
@Sync with HEAD
@
text
@a0 88
#!/bin/sh
#
# Copyright (c) 2026 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by Christos Zoulas.
#
# 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.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``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 FOUNDATION OR CONTRIBUTORS
# 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.
#
# Get the ramdisk size from a file

PROG=$(basename "$0")

kernel=INSTALL
src=/usr/src
arch=$(uname -m)

usage() {
	printf >&2 'Usage: %s [-a <arch>] [-k <kernel>] [-s <srcdir>]\n' \
	    "${PROG}"
	exit 1
}

getsize() {
	set -f

	MDRSZ=$(grep MEMORY_DISK_ROOT_SIZE "$1") || return 1
	set -- ${MDRSZ}

	case "$2" in
	MEMORY_DISK_ROOT_SIZE=*[!0-9]*)
		return 1;;
	MEMORY_DISK_ROOT_SIZE=*)
		eval "$2";;
	*)
		return 1;;
	esac

	# should the following round down (as it does now), or up?
	printf '%dk\n' "$(( MEMORY_DISK_ROOT_SIZE / 2 ))"

	# leave exit status from printf, so we fail if output fails.
}

while getopts a:k:s: i
do
	case $i in
	a)	arch=$OPTARG;;
	k)	kernel=$OPTARG;;
	s)	src=$OPTARG;;
	*)
		usage;;
	esac
done
shift $((OPTIND - 1))

file=$src/sys/arch/$arch/conf/$kernel

if ! [ -f "$file" ]; then
	printf >&2 "%s: Can't open '%s'\\n" "${PROG}" "${file}"
	exit 1
fi

getsize "$file" || {
	printf >&2 '%s: Bad/missing MEMORY_DISK_ROOT_SIZE in %s\n' \
	    "${PROG}" "${file}"
	exit 1
}
@


1.3
log
@sh code enhancements (NFCI).

More error checking, printf instead of echo, quoting only when needed,
sh ! rather than test !   (that kind of thing).

Tested via a full release + images build of HEAD/vax - the only current
user of this script.
@
text
@d51 1
a51 1
	MEMORY_DISK_ROOT_SIZE=*[^0-9]*)
@


1.2
log
@fix usage string
@
text
@d39 2
a40 1
	echo "Usage: $PROG [-a <arch>] [-k <kernel>] [-s <srcdir>]" 1>&2
d45 18
a62 3
	set - $(grep MEMORY_DISK_ROOT_SIZE "$1")
	eval $(echo "$2")
	echo $((${MEMORY_DISK_ROOT_SIZE} / 2))k
d65 2
a66 1
while getopts "a:k:s:" i; do
d68 3
a70 3
	a)	arch="$OPTARG";;
	k)	kernel="$OPTARG";;
	s)	src="$OPTARG";;
a74 1

d77 1
a77 1
file="$src/sys/arch/$arch/conf/$kernel"
d79 2
a80 2
if [ ! -f "$file" ]; then
	echo "$PROG: Can't open '$file'" 1>&2
d84 5
a88 1
getsize "$file"
@


1.1
log
@Instead of hard-coding the ramdisksize both in the distrib makefiles
and the kernel, provide a script to grab the size from the kernel so
we can define it in one place.
@
text
@d39 1
a39 1
	echo "Usage: $PROG [-a <arch>] [-s <srcdir>] [-f <file>]" 1>&2
@

