summary refs log tree commit diff
path: root/src (follow)
Commit message (Collapse)AuthorAge
* [PARSER] Only use signed char for syntax arraysHerbert Xu2006-04-23
| | | | | | | | | The existing scheme of using the native char for syntax array indicies makes cross-compiling difficult. Therefore it makes sense to choose one specific sign for everyone. Since signed chars are native to most platforms and i386, it makes more sense to use that if we are to choose one type for everyone.
* [PARSER] Use alloca to get rid of setjmpHerbert Xu2006-03-29
| | | | | Now that the only thing protected by setjmp/longjmp is the saved string, we can allocate it on the stack to get rid of the jump.
* [PARSER] Removed useless parsebackquote flagHerbert Xu2006-03-29
| | | | | The parsebackquote flag is only used in a test where it always has the value zero. So we can remove it altogether.
* [EVAL] Make eval with empty arguments return 0 Herbert Xu2006-01-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Tue, Jan 10, 2006 at 10:56:23AM +0000, Gerrit Pape wrote: > tags 347232 + patch > quit > > On Mon, Jan 09, 2006 at 04:29:19PM +0100, Marco Nenciarini wrote: > > The problem is here: > > > > # Set the kernel 2.6 option only for fresh install > > test -z "$(GetMenuOpt "kopt" "")" && kopt_2_6="root=$root_device_2_6 ro" > > > > # Extract options for specific kernels > > eval $(ExtractMenuOpts "\(kopt_[a-zA-Z0-9_]\+\)") > > > > If the first test fails and the eval argument is empty then dash > > terminate with exitcode 1. > > > This is a simple testcase: > > tm:~# bash -c "set -e ;/bin/false && : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > tm:~# dash -c "set -e ;/bin/false && : ; eval ''; echo 'END'"; echo $? > > 1 > > > > if you insert any command with successfull exit status before the > > empty eval, all work ok: > > tm:~# bash -c "set -e ;/bin/false && : ; : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > tm:~# dash -c "set -e ;/bin/false && : ; : ; eval ''; echo 'END'"; echo $? > > END > > 0 > > Yes, I can confirm this is a bug in dash. The standard says > > EXIT STATUS > > If there are no arguments, or only null arguments, eval shall > return a zero exit status; otherwise, it shall return the exit > status of the command defined by the string of concatenated > arguments separated by <space>s. > > Hi Herbert, please see http://bugs.debian.org/347232 Changed evalstring to return the exit status instead of evalskip. This allows us to return zero if the string is empty.
* [BUILTIN] Fix \c spillage across echo commandsHerbert Xu2005-11-14
| | | | | | | | | | | | | | | | | | | | | On Thu, Nov 03, 2005 at 07:16:53PM +0100, Mike Hommey wrote: > Here is a simple test case: > > #!/bin/dash > echo test\\ test > echo '\c' > echo test\\ test > > it outputs: > test\ test > test\ > > This is due to mis-usage of a global variable. See attached patch for a > fix. Instead of setting rval when \c is detected, this is now set in the return value of conv_escape_str. This prevents the spillage reported in http://bugs.debian.org/337294.
* [BUILTIN] Always call conv_escape_str in echocmdHerbert Xu2005-11-13
| | | | | Instead of calling conv_escape_str when we detect a backslash we will call it unconditionally. This helps get rid of some unnecessary code in echocmd.
* [MEMALLOC] Remove unnecessary truncation in _STPUTCHerbert Xu2005-11-13
| | | | | Using char in the function argument causes unnecessary truncation to occur. This patch changes it to an int.
* [HELPER] Use mktemp if tempfile is not availableHerbert Xu2005-11-04
| | | | tempfile(1) is Debian-specific so let's use mktemp(1) as a fallback.
* [JOBS] Fixed support for disabling job controlHerbert Xu2005-10-30
| | | | | Since nobody has compiled with JOBS turned off for quite a while, it has bit-rotted. This patch makes it build again.
* [SYSTEM] Fixed fallback stpcpy implementationHerbert Xu2005-10-29
| | | | | | The implementation has an off-by-one bug. This results in random memory corruption. In one particular case, it caused certain bits of a function body to go missing.
* [SYSTEM] Added out-of-line ctypes functions for klibcHerbert Xu2005-10-29
| | | | | Unfortunately klibc doesn't provide out-of-line versions of ctypes functions such as isalpha. This is a nasty hack to create them.
* [SYSTEM] Include system.h for stpcpy in nodes.cHerbert Xu2005-10-29
| | | | | | Since we have a fallback implementation for stpcpy we can now use it unconditionally in nodes.c.pat. This also fixes a link error with klibc.
* [SYSTEM] Added dummy sysconf implementationHerbert Xu2005-10-29
| | | | Add a dummy sysconf implementation that always fails for klibc.
* [BUILTIN] Removed standalone/csh support from testHerbert Xu2005-10-29
| | | | | Let's remove the support for standalone support from test for the same reason as printf.
* [SYSTEM] Added dummy strtod implementationHerbert Xu2005-10-29
| | | | | klibc doesn't have strtod or atof. So add an implementation that always fails by setting the end pointer to the input string.
* [BUILTIN] Removed standalone/csh support from printfHerbert Xu2005-10-29
| | | | | The support for standalone/csh printf only serves to complicate maintainence.
* [SYSTEM] Added default definition for SSIZE_MAXHerbert Xu2005-10-29
| | | | klibc doesn't define the macro SSIZE_MAX.
* [BUILTIN] Disable histcmd completely when SMALL is definedHerbert Xu2005-10-29
| | | | | Now that mkbuiltins correctly disabled histcmd we don't need the dummy histcmd implementation anymore.
* [BUILTIN] Disable ulimit if there is no getrlimitHerbert Xu2005-10-29
| | | | | | | | | | For systems without getrlimit (e.g., klibc) we will disable ulimit. In order to achieve this, builtins.def is now produced by cpp which allows us to use macros such as HAVE_GETRLIMIT in it. Thie also means that we can get rid of the cflags parsing code in mkbuiltins.
* [SIGNAL] Added default implementation of killpgHerbert Xu2005-10-29
| | | | | klibc doesn't have killpg. Since we only call it for valid values of pid, we can call kill instead.
* [SIGNAL] Added default implementation of strsignalHerbert Xu2005-10-29
| | | | klibc doesn't have strsignal but it does have sys_siglist.
* Added missing system.h inclusion for mempcpyHerbert Xu2005-10-29
| | | | All users of mempcpy must include system.h.
* Fixed gcc 4.0 compilation problemsHerbert Xu2005-10-29
| | | | | | | | Removed obsolete extern declaration on funcnest. This conflits with the correct static definition. Changed memtodest prototype to use char * instead of unsigned char *. Perform the unsigned char cast inside memtodest instead.
* [EXPAND] Added getpwhome as a wrapper for getpwnamHerbert Xu2005-10-29
| | | | | klibc doesn't have and doesn't need getpwnam. This change creates getpwhome which always returns NULL if getpwnam doesn't exist.
* [SYSTEM] Added default implementation of bsearchHerbert Xu2005-10-29
| | | | Added impelmentation of bsearch since klibc doesn't have it yet.
* [BUILTIN] Stop using sysexits.h in commandcmdHerbert Xu2005-10-29
| | | | | | | | | | | This gets rid of the only reference of sysexits.h in dash which is from commandcmd. This is needed for klibc support since it doesn't have sysexits.h. The only uses of sysexits.h in commandcmd is superfluous anyway. In fact, it is overly sensitive about usages such as 'command -vV ls'. By making its behaviour close to that of bash/ksh, we end up saving a bit of space too.
* [SIGNAL] Removed use of __P from error.hHerbert Xu2005-10-29
| | | | | This is the only instance of __P in the entire source so it makes sense to get rid of it rather than making it work with klibc.
* Copyright/licence updates and remove all traces of sys/cdefs.hHerbert Xu2005-10-29
| | | | | | | | | | | This change updates the BSD licence to the three-clause version since NetBSD has already done so. This makes dash GPL-compatible. It also adds Christos Zoulas (NetBSD ash maintainer) to the COPYING file. I've added "copyright by Herbert Xu" to most files. Finally all CVS IDs and inclusion of sys/cdefs.h have been removed. The latter is needed for support of klibc.
* [INPUT] Size optimisations in preadbuffer()Herbert Xu2005-10-26
| | | | | | | Added unlikely markers. Reduced switch coverage. Removed p since we now erase NULs as soon as we see them. Use more to store parselleft.
* [INPUT] Fix NUL skipping in preadbufferHerbert Xu2005-10-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On Sun, Sep 25, 2005 at 07:50:54PM +0000, Gerrit Pape wrote: > On Sat, Sep 03, 2005 at 02:56:00PM +0200, Martin Dickopp wrote: > > When analysing the bug I came to the following conclusion: The loop > > beginning at input.c:302 overwrites a single input line with itself, > > skipping NUL characters. Therefore, after the loop the line buffer > > has less characters than originally read if and only if the input line > > contains NUL characters. > > yes. Thanks a lot for the details and patch. > > > The pointer that is used to read from the buffer, 'parsenextc' (cf. > > input.h:66), is also used as the beginning of the next line in > > input.c:296. This fails if the buffer contains less characters > > than originally read into it due to NUL characters. > > > > The proposed patch (attached) keeps track of the number of skipped > > characters and advances 'parsenextc' accordingly before processing > > the next input line. > > Hi Herbert, please see > http://bugs.debian.org/317516 Instead of moving the characters in the loop, we will do memmove every time we see a NUL character. This hurts if there are a lot of NUL characters, but should be a win in normal situations.
* Added eflag fixes for trap and minusc.herbert2005-09-26
| | | | | | Let evaltree handle traps from cmdloop. Reset evalskip after minusc is executed. Stop executing traps once SKIPEVAL is seen.
* Removed unnecessary inclusion of eval.h from parser.c.herbert2005-09-26
|
* Let evaltree handle traps from cmdloop.herbert2005-09-26
|
* Handle SKIPEVAL in read_profile by exiting.herbert2005-09-26
|
* Removed unnecessary inclusion of main.h from eval.c.herbert2005-09-26
|
* Generalise setinputfile for use in read_profile/readcmdfile.herbert2005-09-26
|
* Removed some unnecessary inclusions of input.h.herbert2005-09-26
|
* Turn evalskip into a bit field.herbert2005-09-26
| | | | This allows SKIPEVAL and SKIPFUNC to coexist which is needed for eval return 1.
* Eliminate first null termination in setvar.herbert2005-09-26
|
* Add trailing equal sign in setvar for variables set to null.pape2005-09-26
|
* Get rid of duplicate -g -O2 in CFLAGS.herbert2005-09-26
|
* Cleaned up src/Makefile.am.herbert2005-09-26
|
* Fixed support for cross-compilation.gilles.chanteperdrix2005-09-26
|
* Do not clobber exit status in dotcmd.herbert2005-09-26
|
* Removed redundant setstackmark from dotcmd.herbert2005-09-26
|
* Removed qflag.herbert2005-09-26
|
* Invert return value of test_eaccess and rename it to test_st_mode.herbert2005-09-26
|
* Eliminate duplicate stat in test_eaccess.herbert2005-09-26
|
* Optimised FILGZ test.herbert2005-09-26
|
* Enclose abort insode ifdef DEBUG.herbert2005-09-26
|