summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--configure.ac4
-rw-r--r--src/Makefile.am11
-rw-r--r--src/builtins.def87
-rw-r--r--src/builtins.def.in93
-rw-r--r--src/miscbltin.c6
-rw-r--r--src/mkbuiltins22
7 files changed, 109 insertions, 115 deletions
diff --git a/ChangeLog b/ChangeLog
index 1940a8c..90ea632 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,7 @@
 	* Added missing system.h inclusion for mempcpy.
 	* Added default implementation of strsignal.
 	* Added default implementation of killpg.
+	* Disable ulimit if there is no getrlimit.
 
 2005-10-26  Herbert Xu <herbert@gondor.apana.org.au>
 
diff --git a/configure.ac b/configure.ac
index 25877b8..f6fe894 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,8 +23,8 @@ dnl Checks for libraries.
 dnl Checks for header files.
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS(bsearch getpwnam killpg mempcpy sigsetmask stpcpy strchrnul \
-	       strsignal strtoimax strtoumax)
+AC_CHECK_FUNCS(bsearch getpwnam getrlimit killpg mempcpy sigsetmask stpcpy \
+	       strchrnul strsignal strtoimax strtoumax)
 
 dnl Check for klibc signal.
 AC_CHECK_FUNC(signal)
diff --git a/src/Makefile.am b/src/Makefile.am
index d8acd39..0fe4db1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -35,19 +35,22 @@ HELPERS = mkinit mksyntax mknodes mksignames
 BUILT_SOURCES = arith.h builtins.h nodes.h syntax.h token.h
 CLEANFILES = \
 	$(BUILT_SOURCES) $(patsubst %.o,%.c,$(dash_LDADD)) \
-	arith.c $(HELPERS)
+	arith.c $(HELPERS) builtins.def
 
 man_MANS = dash.1
 EXTRA_DIST = \
 	$(man_MANS) \
-	mktokens mkbuiltins builtins.def mkinit.c \
+	mktokens mkbuiltins builtins.def.in mkinit.c \
 	mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c
 
 token.h: mktokens
 	sh $^
 
-builtins.c builtins.h: mkbuiltins shell.h builtins.def
-	sh $^ . '$(CFLAGS)'
+builtins.def: builtins.def.in $(top_builddir)/config.h
+	$(COMPILE) -E -x c -o $@ $<
+
+builtins.c builtins.h: mkbuiltins builtins.def
+	sh $^
 
 init.c: mkinit $(dash_CFILES)
 	./$^
diff --git a/src/builtins.def b/src/builtins.def
deleted file mode 100644
index 687a463..0000000
--- a/src/builtins.def
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/bin/sh -
-# Copyright (c) 1991, 1993
-#	The Regents of the University of California.  All rights reserved.
-# Copyright (c) 1997-2005
-#	Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
-#
-# This code is derived from software contributed to Berkeley by
-# Kenneth Almquist.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-# 3. Neither the name of the University nor the names of its contributors
-#    may be used to endorse or promote products derived from this software
-#    without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-#
-#	@(#)builtins.def	8.4 (Berkeley) 5/4/95
-
-#
-# This file lists all the builtin commands.  The first column is the name
-# of a C routine.
-# The -j flag specifies that this command is to be excluded from systems
-# without job control.
-# The -h flag specifies that this command is to be excluded from systems
-# based on the SMALL compile-time symbol.
-# The -a flag specifies that this is a posix 'assignment builtin' command.
-# The -s flag specifies that this is a posix 'special builtin' command.
-# The -u flag specifies that this is a posix 'standard utility'.
-# The rest of the line specifies the command name or names used to run
-# the command.
-
-bgcmd -j	-u bg
-breakcmd	-s break -s continue
-cdcmd		-u cd chdir
-commandcmd	-u command
-dotcmd		-s .
-echocmd		echo
-evalcmd		-s eval
-execcmd		-s exec
-exitcmd		-s exit
-exportcmd	-as export -as readonly
-falsecmd	-u false
-histcmd -h	-u fc
-fgcmd -j	-u fg
-getoptscmd	-u getopts
-hashcmd		hash
-#jobidcmd	jobid
-jobscmd		-u jobs
-localcmd	-a local
-printfcmd	printf
-pwdcmd		pwd
-readcmd		-u read
-returncmd	-s return
-setcmd		-s set
-shiftcmd	-s shift
-timescmd	-s times
-trapcmd		-s trap
-truecmd		-s : -u true
-typecmd		type
-umaskcmd	-u umask
-unaliascmd	-u unalias
-unsetcmd	-s unset
-waitcmd		-u wait
-aliascmd	-au alias
-ulimitcmd	ulimit
-testcmd		test [
-killcmd		-u kill		# mandated by posix for 'kill %job'
-#newgrp		-u newgrp	# optional command in posix
-
-#exprcmd	expr
diff --git a/src/builtins.def.in b/src/builtins.def.in
new file mode 100644
index 0000000..362ff3f
--- /dev/null
+++ b/src/builtins.def.in
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 1991, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 1997-2005
+ *	Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by
+ * Kenneth Almquist.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)builtins.def	8.4 (Berkeley) 5/4/95
+ */
+
+/*
+ * This file lists all the builtin commands.  The first column is the name
+ * of a C routine.
+ * The -a flag specifies that this is a posix 'assignment builtin' command.
+ * The -s flag specifies that this is a posix 'special builtin' command.
+ * The -u flag specifies that this is a posix 'standard utility'.
+ * The rest of the line specifies the command name or names used to run
+ * the command.
+ */
+
+#ifndef JOBS
+#define JOBS 1
+#endif
+
+#if JOBS
+bgcmd		-u bg
+fgcmd		-u fg
+#endif
+
+#ifndef SMALL
+histcmd		-u fc
+#endif
+
+breakcmd	-s break -s continue
+cdcmd		-u cd chdir
+commandcmd	-u command
+dotcmd		-s .
+echocmd		echo
+evalcmd		-s eval
+execcmd		-s exec
+exitcmd		-s exit
+exportcmd	-as export -as readonly
+falsecmd	-u false
+getoptscmd	-u getopts
+hashcmd		hash
+jobscmd		-u jobs
+localcmd	-a local
+printfcmd	printf
+pwdcmd		pwd
+readcmd		-u read
+returncmd	-s return
+setcmd		-s set
+shiftcmd	-s shift
+timescmd	-s times
+trapcmd		-s trap
+truecmd		-s : -u true
+typecmd		type
+umaskcmd	-u umask
+unaliascmd	-u unalias
+unsetcmd	-s unset
+waitcmd		-u wait
+aliascmd	-au alias
+#ifdef HAVE_GETRLIMIT
+ulimitcmd	ulimit
+#endif
+testcmd		test [
+killcmd		-u kill
diff --git a/src/miscbltin.c b/src/miscbltin.c
index 81033e3..3f91bc3 100644
--- a/src/miscbltin.c
+++ b/src/miscbltin.c
@@ -58,10 +58,6 @@
 
 #undef rflag
 
-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 1
-typedef enum __rlimit_resource rlim_t;
-#endif
-
 
 
 /*
@@ -276,6 +272,7 @@ umaskcmd(int argc, char **argv)
 	return 0;
 }
 
+#ifdef HAVE_GETRLIMIT
 /*
  * ulimit builtin
  *
@@ -457,3 +454,4 @@ ulimitcmd(int argc, char **argv)
 	}
 	return 0;
 }
+#endif
diff --git a/src/mkbuiltins b/src/mkbuiltins
index d0325c1..5e2cc86 100644
--- a/src/mkbuiltins
+++ b/src/mkbuiltins
@@ -39,22 +39,9 @@ trap 'rm -f $temp $temp2' EXIT
 temp=$(tempfile)
 temp2=$(tempfile)
 
-shell=$1
-builtins=$2
-objdir=$3
-cflags=$4
+builtins=$1
 
-havehist=1
-if [ -z "${cflags##*-DSMALL*}" ]; then
-	havehist=0
-fi
-
-havejobs=1
-if [ -z "${cflags##*-DJOBS=0*}" ]; then
-	havejobs=0
-fi
-
-exec > ${objdir}/builtins.c
+exec > builtins.c
 cat <<\!
 /*
  * This file was generated by the mkbuiltins program.
@@ -64,8 +51,7 @@ cat <<\!
 #include "builtins.h"
 
 !
-awk '/^[^#]/ {if(('$havejobs' || $2 != "-j") && ('$havehist' || $2 != "-h")) \
-    print $0}' ${builtins} | sed 's/-[hj]//; s/#.*//' > $temp
+< $builtins sed '/^#/d; /^$/d' > $temp
 awk '{	printf "int %s(int, char **);\n", $1}' $temp
 echo '
 const struct builtincmd builtincmd[] = {'
@@ -85,7 +71,7 @@ awk '{	for (i = 2 ; i <= NF ; i++) {
 	}'
 echo '};'
 
-exec > ${objdir}/builtins.h
+exec > builtins.h
 cat <<\!
 /*
  * This file was generated by the mkbuiltins program.