diff --git a/hook_prepare_rootfs.sh b/hook_prepare_rootfs.sh index c8f4b88..120442c 100755 --- a/hook_prepare_rootfs.sh +++ b/hook_prepare_rootfs.sh @@ -39,7 +39,7 @@ die() { get_param_q() { local param=$1 local filename="$2" - echo $( grep -o -P "^$param='\K[^']+" "$filename" 2>/dev/null ) + echo $( grep -o -P "^$param='\K[^']+" "$filename" 2>/dev/null | tr -d '\n' ) #echo $( grep -o -P "(?<=^$param=').*(')" "$filename" 2>/dev/null ) } @@ -67,17 +67,30 @@ if [ -z "$FULL_VERSION" ]; then die "Firmware version not found!" fi -FULL_VERSION=$( grep -oP "^DISTRIB_RELEASE='\K[^']+" "$FW_VER_FN" 2>/dev/null ) -DISTR_DESC=$( grep -oP "^DISTRIB_DESCRIPTION='\K[^']+" "$FW_VER_FN" 2>/dev/null ) +CURDATE=$( date --utc +%y%m%d | tr -d '\n' ) + +DISTR_REV=$( get_param_q DISTRIB_REVISION "$FW_VER_FN" ) +DISTR_DESC=$( get_param_q DISTRIB_RELEASE "$FW_VER_FN" ) DISTR_DATE_LEN=$( echo -n "$DISTR_DESC" | awk '{print $NF}' | tr -d '\n' | wc -c ) if [ "$DISTR_DATE_LEN" = 6 ]; then DISTR_DESC=$( del_last_word $DISTR_DESC ) fi sed -i "/DISTRIB_DESCRIPTION=/d" "$FW_VER_FN" -CURDATE=$( date --utc +%y%m%d | tr -d '\n' ) echo "DISTRIB_DESCRIPTION='$DISTR_DESC $CURDATE'" >> "$FW_VER_FN" log_msg "Option DISTRIB_DESCRIPTION patched (DATE = $CURDATE)" +BANNER_FN="$ROOTFSDIR/etc/banner" +BANNER_VER=$( grep -F "$DISTR_REV" "$BANNER_FN" 2>/dev/null ) +if [ -n "$BANNER_VER" ]; then + BANNER_SUFFIX=$( echo -n "$BANNER_VER" | awk '{print $NF}' | tr -d '\n' ) + if [ $( echo -n "$BANNER_SUFFIX" | wc -c ) = 6 ]; then + sed -i "s/, $BANNER_SUFFIX/, $CURDATE/g" "$BANNER_FN" + else + sed -i "s/$DISTR_REV/&, $CURDATE/" "$BANNER_FN" + fi +fi +log_msg "Banner patched (DATE = $CURDATE)" + FW_ARCH=$( get_param_q DISTRIB_ARCH "$FW_VER_FN" ) #log_msg "FW_ARCH: '$FW_ARCH'" if [ -z "$FW_ARCH" ]; then