mirror of
https://github.com/stefanberger/libtpms
synced 2025-08-25 19:32:02 +00:00
99 lines
2.0 KiB
Bash
Executable File
99 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
SKIP_FILES="(Marshal.c|Marshal_fp.h)"
|
|
|
|
|
|
NO_MELD_FLAG=$((1<<0))
|
|
|
|
main()
|
|
{
|
|
local opts f fname upstream flags
|
|
|
|
flags=0
|
|
|
|
prgname="$0"
|
|
if ! opts=$(getopt -l "help,no-meld,diff-only" -n "$prgname" -- "$prgname" "$@"); then
|
|
echo "Error: Failed to parse options." >&2
|
|
return 1
|
|
fi
|
|
eval set -- "${opts}"
|
|
|
|
while :; do
|
|
case "$1" in
|
|
--no-meld|diff-only)
|
|
flags=$((flags | NO_MELD_FLAG))
|
|
shift
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
--help)
|
|
help "$prgname"
|
|
return 0
|
|
;;
|
|
*)
|
|
echo "Internal error: Unregonized option '$1'" >&2
|
|
shift
|
|
return
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ ! -r "$1" ]; then
|
|
echo "Cannot find file '$1' in libtpms repo."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$1" ]; then
|
|
echo "'$1' is not a directory."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "${TCG_TPM_HOME}" ]; then
|
|
echo "TCG_TPM_HOME must point to a directory."
|
|
exit 1
|
|
fi
|
|
|
|
for f in $(find "$1" -type f -name '*.[ch]'); do
|
|
fname=$(basename "$f")
|
|
|
|
if [[ "${fname}" =~ ^${SKIP_FILES}$ ]]; then
|
|
echo "skipping ${fname}"
|
|
continue
|
|
fi
|
|
|
|
upstream=$(find "${TCG_TPM_HOME}" | grep -E "/${fname}\$")
|
|
|
|
if [ -n "${upstream}" ]; then
|
|
# find first empty line presumably after license
|
|
line=$(grep -m 1 -E "^$" -n "${f}" | cut -d":" -f1)
|
|
if [ -z "$line" ]; then
|
|
if [ $((flags & NO_MELD_FLAG)) -eq 0 ]; then
|
|
meld "${upstrean}" "${f}"
|
|
else
|
|
echo "Something wrong with file $f"
|
|
fi
|
|
fi
|
|
line=$((line+1))
|
|
if [ $((flags & NO_MELD_FLAG)) -ne 0 ]; then
|
|
echo "============================================================================"
|
|
echo "${f}"
|
|
diff --ignore-trailing-space <(sed -n "${line},\$p" < "${f}") "${upstream}"
|
|
fi
|
|
if ! diff --ignore-trailing-space <(sed -n "${line},\$p" < "${f}") "${upstream}" >/dev/null; then
|
|
if [ $((flags & NO_MELD_FLAG)) -eq 0 ]; then
|
|
meld "${upstream}" "$f"
|
|
fi
|
|
else
|
|
echo "${f}: nothing to do"
|
|
fi
|
|
else
|
|
echo "Could not find file ${fname} in TCG TPM repo"
|
|
fi
|
|
done
|
|
}
|
|
|
|
main "$@"
|
|
exit $?
|