blob: e077f475dee6290020cbea787661e83e796dde0d [file] [log] [blame] [raw]
#!/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.
set -e
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"
sed -E -e '/^ *#[! ]/d' -e '/^$/d' "$PROGRAM_DIR/which.sh"
echo
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 ioctl_program_path elf_ident set_flags clear_flags replace_flags flags"
sed -E \
-e '/^ *#[! ]/d' \
-e "/^PROGRAM_DIR=/d" \
-e '/^\. /d' \
-e 's/(^| | )exit($| )/\1return\2/' \
-e 's/( | )(get|set)_flags(\(\)| )/\1_ext2_\2_flags\3/' \
-e 's/^( *)(print_usage|parse_flags_string)/\1_chflags_\2/' \
-e "/ exec 2> /d" \
-e '/^$/d' \
-e "s/^/ /" \
-e 's/^ \}"$/\}"/' \
-e '/^ while getopts /i\
OPTIND=0' \
-e 's#^ chflags_loop 0 (.+)# if [ -n "$no_fail" ]; then\
chflags_loop 0 \1 2> /dev/null\
else\
chflags_loop 0 \1\
fi\
unset chflags_loop#' \
"$PROGRAM_DIR/chflags.common.sh" "$PROGRAM_DIR/chflags.ext2ioctl.sh"
echo "}"