diff options
Diffstat (limited to 'src/mkskel.sh')
-rwxr-xr-x | src/mkskel.sh | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/src/mkskel.sh b/src/mkskel.sh index 02c397a..1aa59e1 100755 --- a/src/mkskel.sh +++ b/src/mkskel.sh @@ -21,17 +21,34 @@ # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE. -cat <<! -/* File created from flex.skl via mkskel.sh */ +if test ! $# = 3; then + echo 'Usage: mkskel.sh srcdir m4 version' >&2 + exit 1 +fi +echo '/* File created from flex.skl via mkskel.sh */ #include "flexdef.h" -const char *skel[] = { -! - -sed 's/\\/&&/g' | sed 's/"/\\"/g' | sed 's/.*/ "&",/' - -cat <<! - 0 -}; -! +const char *skel[] = {' +srcdir=$1 +m4=$2 +VERSION=$3 +case $VERSION in + *[!0-9.]*) echo 'Invalid version number' >&2; exit 1;; +esac +IFS=. +set $VERSION +sed 's/4_/a4_/g +s/m4preproc_/m4_/g +' "$srcdir/flex.skl" | +"$m4" -P -I "$srcdir" "-DFLEX_MAJOR_VERSION=$1" \ + "-DFLEX_MINOR_VERSION=$2" \ + "-DFLEX_SUBMINOR_VERSION=$3" | +sed '/^%#/d +s/m4_/m4preproc_/g +s/a4_/4_/g +s/[\\"]/\\&/g +s/.*/ "&",/' + +echo ' 0 +};' |