redo-ifchange rc_vars . ./rc_vars NL=" " # Escape double-quote and backslash so they can # be included as a C-style double-quoted string. cquote() { local v="$(printf '%s' "$1" | sed -e 's,[\"\\],\\&,g' -e 's,$, \\,')" printf '"%s"' "${v% \\}" } is_number() { expr "$1" + 1 >/dev/null 2>&1 } ( echo "/* Automatically generated by redoconf.h.od */" IFS="$NL" for k in $RC_KEYS; do [ "$k" != "RC_KEYS" ] || continue [ "$k" != "RC_INCLUDES" ] || continue eval v=\$$k if [ -z "$v" ]; then echo "#undef $k" elif is_number "$v"; then echo "#define $k $v" else echo "#define $k $(cquote "$v")" fi done ) >$3 redo-stamp <$3