#!/bin/sh

# Copyright 2015-2023 Rivoreo

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
# IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.


PROGRAM_DIR="${0%/*}"
[ "$PROGRAM_DIR" = "$0" ] && PROGRAM_DIR="$PWD"
blank=
IFS=
while read -r line; do case "$line" in
	"#!"*)
		continue
		;;
	"")
		echo
		[ -n "$blank" ] && break
		blank=1
		;;
	"# "*)
		printf %s\\n "$line"
		blank=
		;;
esac done < "$0"
echo "chflags() {"
echo "	local EXT2_IOC_GETFLAGS EXT2_IOC_SETFLAGS EXT2_IMMUTABLE_FL EXT2_APPEND_FL"
echo "	local no_fail no_follow verbose recursive recursive_follow elf_ident flags"
echo "	local print_usage ioctl perl_ioctl get_flags set_flags parse_flags_string chflags_loop"
sed -E \
	-e '/^	*#[! ]/d' \
	-e "/^PROGRAM_DIR=/d" \
	-e '/^\. /d' \
	-e 's/(^| |	)exit($| )/\1return\2/' \
	-e "/ exec 2> /d" \
	-e '/^$/d' \
	-e "s/^/	/" \
	-e 's/^	\}"$/\}"/' \
	-e 's#^	chflags_loop 0 (.+)#	if [ -n "$no_fail" ]; then\
		chflags_loop 0 \1 2> /dev/null\
	else\
		chflags_loop 0 \1\
	fi#' \
	"$PROGRAM_DIR/chflags.common.sh" "$PROGRAM_DIR/chflags.ext2ioctl.sh"
echo "}"
