diff options
author | Jonathan Perkin <jperkin@joyent.com> | 2015-12-11 11:56:43 +0000 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2016-06-06 22:25:00 +0800 |
commit | cb924afe2e3465ec2f91fab55d31f7e3c26d03f4 (patch) | |
tree | 455df31bbf9b1d1d1f1673dbc661cc355245a75c | |
parent | jobs: Don't attempt to access job table for job %0 (diff) | |
download | dash-cb924afe2e3465ec2f91fab55d31f7e3c26d03f4.tar.gz dash-cb924afe2e3465ec2f91fab55d31f7e3c26d03f4.zip |
shell: Fix build on Solaris 9
Ensure dash can build in a default Solaris 9 or older environment: - Execute scripts with $SHELL rather than /bin/sh, the latter does not support e.g. "if ! .." used by mkbuiltins. - /bin/awk does not support ?: syntax, use explicit statements instead. - /bin/nl requires no spaces between options and arguments. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to '')
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/mkbuiltins | 12 |
2 files changed, 10 insertions, 6 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 120ffa2..139355e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -46,13 +46,13 @@ EXTRA_DIST = \ mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c token.h token_vars.h: mktokens - sh $^ + $(SHELL) $^ builtins.def: builtins.def.in $(top_builddir)/config.h $(COMPILE) -E -x c -o $@ $< builtins.c builtins.h: mkbuiltins builtins.def - sh $^ + $(SHELL) $^ init.c: mkinit $(dash_CFILES) ./$^ diff --git a/src/mkbuiltins b/src/mkbuiltins index 8c74d6b..b4d6f4e 100644 --- a/src/mkbuiltins +++ b/src/mkbuiltins @@ -84,9 +84,13 @@ awk '{ for (i = 2 ; i <= NF ; i++) { opt = substr($2, 2) $2 = $3 } - printf "\t{ \"%s\", %s, %d },\n", $1, - (opt ~ /n/) ? "NULL" : $2, - (opt ~ /s/) + (opt ~ /[su]/) * 2 + (opt ~ /a/) * 4 + mask = 0 + cmd = $2 + if (opt ~ /n/) { cmd = "NULL" } + if (opt ~ /s/) { mask += 1 } + if (opt ~ /[su]/) { mask += 2 } + if (opt ~ /a/) { mask += 4 } + printf "\t{ \"%s\", %s, %d },\n", $1, cmd, mask }' echo '};' @@ -97,7 +101,7 @@ cat <<\! */ ! -sed 's/ -[a-z]*//' $temp2 | nl -b a -v 0 | +sed 's/ -[a-z]*//' $temp2 | nl -ba -v0 | LC_ALL= LC_COLLATE=C sort -u -k 3,3 | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | awk '{ printf "#define %s (builtincmd + %d)\n", $3, $1}' |