[PATCH] Treat custom and applet scripts as applets
Xabier Oneca -- xOneca
xoneca at gmail.com
Wed Nov 21 09:43:35 UTC 2018
Hi,
Some nitty notes about scripts/embedded_scripts:
> diff --git a/scripts/embedded_scripts b/scripts/embedded_scripts
> index 7245ba6e0..b7a023ce0 100755
> --- a/scripts/embedded_scripts
> +++ b/scripts/embedded_scripts
> @@ -14,46 +15,102 @@ if test $? != 0; then
> exit 1
> fi
>
> -exec >"$target.$$"
> -
> -scripts=""
> -if [ -d "$loc" ]
> +custom_scripts=""
> +if [ -d "$custom_loc" ]
> then
> - scripts=$(cd $loc; ls * 2>/dev/null)
> + custom_scripts=$(cd $custom_loc; ls * 2>/dev/null)
> fi
> +all_scripts=$(applets/busybox.mkscripts)
> +
> +# all_scripts includes applet scripts and custom scripts, sort them out
> +applet_scripts=""
> +for i in $all_scripts
> +do
> + found=0
> + for j in $custom_scripts
> + do
> + if [ "$i" = "$j" ]
> + then
> + found=1
> + break;
> + fi
> + done
> + if [ $found -eq 0 ]
> + then
> + # anything that isn't a custom script is an applet script
> + applet_scripts="$applet_scripts $i"
> + fi
> +done
>
> -n=$(echo $scripts | wc -w)
> +# we know the custom scripts are present but applet scripts might have
> +# become detached from their configuration
> +for i in $applet_scripts
> +do
> + #if [ ! -f "$applet_loc/$i" -a ! -f "$custom_loc/$i" ]
> + if [ ! -f "$applet_loc/$i" ]
> + then
> + echo "missing applet script $i"
> + exit 1
> + fi
> +done
>
> -if [ $n -ne 0 ]
> +n=$(echo $custom_scripts $applet_scripts | wc -w)
> +nall=$(echo $all_scripts | wc -w)
> +
> +if [ $n -ne $nall ]
> then
> - printf '#ifdef DEFINE_script_names\n'
> - printf 'const char script_names[] ALIGN1 = '
> - for i in $scripts
> + echo "script mismatch $n != $nall"
> + exit 1
> +fi
> +
> +concatenate_scripts() {
> + for i in $custom_scripts
> + do
> + cat $custom_loc/$i
> + printf '\000'
> + done
> + for i in $applet_scripts
> do
> - printf '"%s\\0"' $i
> + cat $applet_loc/$i
> + printf '\000'
> done
> - printf ';\n'
> +}
> +
> +exec >"$target.$$"
> +
> +if [ $n -ne 0 ]
> +then
> + printf '#ifdef DEFINE_SCRIPT_DATA\n'
> + if [ $n -ne 0 ]
This will always be true here. Outer 'if' takes care of it.
> + then
> + printf 'const uint16_t applet_numbers[] = {\n'
> + for i in $custom_scripts $applet_scripts
> + do
> + # TODO support applets with names including invalid characters
> + printf '\tAPPLET_NO_%s,\n' $i
> + done
> + printf '};\n'
> + fi
> printf '#else\n'
> - printf 'extern const char script_names[] ALIGN1;\n'
> + if [ $n -ne 0 ]
Same here.
> + then
> + printf 'extern const uint16_t applet_numbers[];\n'
> + fi
> printf '#endif\n'
> fi
> -printf "#define NUM_SCRIPTS $n\n\n"
> +
> +printf "\n"
> +printf '#define NUM_SCRIPTS %d\n' $n
> +printf "\n"
Cheers,
Xabier Oneca_,,_
More information about the busybox
mailing list