#
267654 |
|
19-Jun-2014 |
gjb |
Copy stable/9 to releng/9.3 as part of the 9.3-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
255065 |
|
30-Aug-2013 |
jilles |
MFC r254335: sh: Allow a lone redirection before '|', ';;' or ';&'.
Example: </dev/null | :
PR: 181240
|
#
245690 |
|
20-Jan-2013 |
jilles |
MFC r245382: sh: Fix crash when parsing '{ } &'.
|
#
225736 |
|
22-Sep-2011 |
kensmith |
Copy head to stable/9 as part of 9.0-RELEASE release cycle.
Approved by: re (implicit)
|
#
223282 |
|
18-Jun-2011 |
jilles |
sh: Remove special support for background simple commands.
It expands the arguments in the parent shell process, which is incorrect.
|
#
223186 |
|
17-Jun-2011 |
jilles |
sh: Add case statement fallthrough (with ';&' instead of ';;').
Replacing ;; with the new control operator ;& will cause the next list to be executed as well without checking its pattern, continuing until a list ends with ;; or until the end of the case statement. This is like omitting "break" in a C "switch" statement.
The sequence ;& was formerly invalid.
This feature is proposed for the next POSIX issue in Austin Group issue #449.
|
#
222907 |
|
09-Jun-2011 |
jilles |
sh: Do parameter expansion before printing PS4 (set -x).
The function name expandstr() and the general idea of doing this kind of expansion by treating the text as a here document without end marker is from dash.
All variants of parameter expansion and arithmetic expansion also work (the latter is not required by POSIX but it does not take extra code and many other shells also allow it).
Command substitution is prevented because I think it causes too much code to be re-entered (for example creating an unbounded recursion of trace lines).
Unfortunately, our LINENO is somewhat crude, otherwise PS4='$LINENO+ ' would be quite useful.
|
#
222165 |
|
21-May-2011 |
jilles |
sh: Expand aliases after assignments and redirections.
|
#
222134 |
|
20-May-2011 |
jilles |
sh: Allow terminating a heredoc with a terminator at EOF without a newline.
This is sometimes used with eval or old-style command substitution, and most shells other than ash derivatives allow it.
It can also be used with scripts that violate POSIX's requirement on the application that they end in a newline (scripts must be text files except that line length is unlimited).
Example: v=`cat <<EOF foo EOF` echo $v
This commit does not add support for the similar construct with new-style command substitution, like v=$(cat <<EOF foo EOF) This continues to require a newline after the terminator.
|
#
221669 |
|
08-May-2011 |
jilles |
sh: Add \u/\U support (in $'...') for UTF-8.
Because we have no iconv in base, support for other charsets is not possible.
Note that \u/\U are processed using the locale that was active when the shell started. This is necessary to avoid behaviour that depends on the parse/execute split (for example when placing braces around an entire script). Therefore, UTF-8 encoding is implemented manually.
|
#
221513 |
|
05-May-2011 |
jilles |
sh: Add $'quoting' (C-style escape sequences).
A string between $' and ' may contain backslash escape sequences similar to the ones in a C string constant (except that a single-quote must be escaped and a double-quote need not be). Details are in the sh(1) man page.
This construct is useful to include unprintable characters, tabs and newlines in strings; while this can be done with a command substitution containing a printf command, that needs ugly workarounds if the result is to end with a newline as command substitution removes all trailing newlines.
The construct may also be useful in future to describe unprintable characters without needing to write those characters themselves in 'set -x', 'export -p' and the like.
The implementation attempts to comply to the proposal for the next issue of the POSIX specification. Because this construct is not in POSIX.1-2008, using it in scripts intended to be portable is unwise.
Matching the minimal locale support in the rest of sh, the \u and \U sequences are currently not useful.
Exp-run done by: pav (with some other sh(1) changes)
|
#
221461 |
|
04-May-2011 |
jilles |
sh: Detect an error for ${#var<GARBAGE>}.
In particular, this makes things like ${#foo[0]} and ${#foo[@]} errors rather than silent equivalents of ${#foo}.
PR: bin/151720 Submitted by: Mark Johnston Exp-run done by: pav (with some other sh(1) changes)
|
#
220903 |
|
20-Apr-2011 |
jilles |
sh: Do not word split "${#parameter}".
This is only a problem if IFS contains digits, which is unusual but valid.
Because of an incorrect fix for PR bin/12137, "${#parameter}" was treated as ${#parameter}. The underlying problem was that "${#parameter}" erroneously added CTLESC bytes before determining the length. This was properly fixed for PR bin/56147 but the incorrect fix was not backed out.
Reported by: Seeker on forums.freebsd.org MFC after: 2 weeks
|
#
219623 |
|
13-Mar-2011 |
jilles |
sh: Fix some parameter expansion variants ${#...}.
These already worked: $# ${#} ${##} ${#-} ${#?} These now work as well: ${#+word} ${#-word} ${##word} ${#%word}
There is an ambiguity in the standard with ${#?}: it could be the length of $? or it could be $# giving an error in the (impossible) case that it is not set. We continue to use the former interpretation as it seems more useful.
|
#
218325 |
|
05-Feb-2011 |
jilles |
sh: Fix two things about {(...)} <redir:
* In {(...) <redir1;} <redir2, do not drop redir1. * Maintain the difference between (...) <redir and {(...)} <redir: In (...) <redir, the redirection is performed in the child, while in {(...)} <redir it should be performed in the parent (like {(...); :;} <redir)
|
#
216706 |
|
26-Dec-2010 |
jilles |
sh: Allow arbitrary large numbers in CHECKSTRSPACE. Reduce "stack string" API somewhat and simplify code. Add a check for integer overflow of the "stack string" length (probably incomplete).
|
#
216404 |
|
13-Dec-2010 |
uqs |
Remove duplicate check, turning dead code into live code.
Coverity CID: 5114 Reviewed by: jilles
|
#
215783 |
|
23-Nov-2010 |
jilles |
sh: Code size optimizations to "stack string" memory allocation: * Prefer one CHECKSTRSPACE with multiple USTPUTC to multiple STPUTC. * Add STPUTS macro (based on function) and use it instead of loops that add nul-terminated strings to the stack string.
No functional change is intended, but code size is about 1K less on i386.
|
#
214709 |
|
02-Nov-2010 |
jilles |
sh: Fix some issues with aliases and case, by importing dash checkkwd code.
This moves the function of the noaliases variable into the checkkwd variable. This way it is properly reset on errors and aliases can be used normally in the commands for each case (the case labels recognize the keyword esac but no aliases).
The new code is clearer as well.
Obtained from: dash
|
#
214599 |
|
31-Oct-2010 |
jilles |
sh: Use iteration instead of recursion to evaluate semicolon lists. This reduces CPU and memory usage when executing long lists (such as long functions).
|
#
214538 |
|
29-Oct-2010 |
jilles |
sh: Tweak some string constants to reduce code size.
* Reduce some needless differences. * Shorten some error messages that should not happen.
|
#
214534 |
|
29-Oct-2010 |
jilles |
sh: Reject function names ending in one of !%*+-=?@}~
These do something else in ksh: name=(...) is an array or compound variable assignment and the others are extended patterns.
This is the last patch of the ones tested in the exp run.
Exp-run done by: pav (with some other sh(1) changes)
|
#
214531 |
|
29-Oct-2010 |
jilles |
sh: Detect various additional errors in the parser.
Apart from detecting breakage earlier or at all, this also fixes a segfault in the testsuite. The "handling" of the breakage left an invalid internal representation in some cases.
Examples: echo a; do echo b echo `) echo a` echo `date; do do do`
Exp-run done by: pav (with some other sh(1) changes)
|
#
214525 |
|
29-Oct-2010 |
jilles |
sh: Error out on various specials/keywords in the wrong place in backticks.
Example: echo `date)`
Exp-run done by: pav (with some other sh(1) changes) Obtained from: NetBSD (Christos Zoulas, NetBSD PR 11317)
|
#
214512 |
|
29-Oct-2010 |
jilles |
sh: Do IFS splitting on word in ${v+word} and ${v-word}.
The code is inspired by NetBSD sh somewhat, but different because we preserve the old Almquist/Bourne/Korn ability to have an unquoted part in a quoted ${v+word}. For example, "${v-"*"}" expands to $v as a single field if v is set, but generates filenames otherwise.
Note that this is the only place where we split text literally from the script (the similar ${v=word} assigns to v and then expands $v). The parser must now add additional markers to allow the expansion code to know whether arbitrary characters in substitutions are quoted.
Example: for i in ${$+a b c}; do echo $i; done
Exp-run done by: pav (with some other sh(1) changes)
|
#
214492 |
|
28-Oct-2010 |
jilles |
sh: Only accept a '}' inside ${v+-=?...} if double-quote state matches. If double-quote state does not match, treat the '}' literally.
This ensures double-quote state remains the same before and after a ${v+-=?...} which helps with expand.c.
It makes things like ${foo+"\${bar}"} which I have seen in the wild work as expected.
Exp-run done by: pav (with some other sh(1) changes)
|
#
214490 |
|
28-Oct-2010 |
jilles |
sh: Make double-quotes quote a '}' inside ${v#...} and ${v%...}.
Exp-run done by: pav (with some other sh(1) changes) PR: bin/57554
|
#
214305 |
|
24-Oct-2010 |
jilles |
sh: Ignore double-quotes in arithmetic rather than treating them as quotes.
This provides similar behaviour, but allows a simpler parser.
This changes r206473.
Exp-run done by: pav (with some other sh(1) changes)
|
#
214304 |
|
24-Oct-2010 |
jilles |
sh: Do not allow overriding a special builtin with a function. This is a syntax error.
POSIX does not say explicitly whether defining a function with the same name as a special builtin is allowed, but it does say that it is impossible to call such a function.
A special builtin can still be overridden with an alias.
This commit is part of a set of changes that will ensure that when something looks like a special builtin to the parser, it is one. (Not the other way around, as it remains possible to call a special builtin named by a variable or other substitution.)
Exp-run done by: pav (with some other sh(1) changes)
|
#
214291 |
|
24-Oct-2010 |
jilles |
sh: Make sure defined functions can actually be called.
Add some conservative checks on function names: - Disallow expansions or quoting characters; these can only be called via strange control characters - Disallow '/'; these functions cannot be called anyway, as exec.c assumes they are pathnames - Make the CTL* bytes work properly in function names.
These are syntax errors.
POSIX does not require us to support more than names (letters, digits and underscores, not starting with a digit), but I do not want to restrict it that much at this time.
Exp-run done by: pav (with some other sh(1) changes)
|
#
214281 |
|
24-Oct-2010 |
jilles |
sh: Change ! within a pipeline to start a new pipeline instead.
This is how ksh93 treats ! within a pipeline and makes the ! in a | ! b | c negate the exit status of the pipeline, as if it were a | { ! b | c; }
Side effect: something like f() ! a is now a syntax error, because a function definition takes a command, not a pipeline.
Exp-run done by: pav (with some other sh(1) changes)
|
#
213811 |
|
13-Oct-2010 |
obrien |
In the spirit of r90111, depend on c89 and remove the "STATIC" macro and its usage.
|
#
213760 |
|
13-Oct-2010 |
obrien |
Consistently use "STATIC" for all functions in order to be able to set breakpoints with in a debugger. And use naked "static" for variables.
Noticed by: bde
|
#
212508 |
|
12-Sep-2010 |
jilles |
sh: Add __dead2 to two functions that do not return.
Apart from helping static analyzers, this also appears to reduce the size of the binary slightly.
|
#
210488 |
|
25-Jul-2010 |
jilles |
sh: Fix crash due to uninitialized here-document.
If an ; or & token was followed by an EOF token, pending here-documents were left uninitialized. Execution would crash, either in the main shell process for literal here-documents or in a child process for expanded here-documents. In the latter case the problem is hard to detect apart from the core dumps and log messages.
Side effect: slightly different retries on inputs where EOF is not persistent.
Note that tools/regression/bin/sh/parser/heredoc6.0 still causes a similar crash in a child process. The text passed to eval is malformed and should be rejected.
|
#
210221 |
|
18-Jul-2010 |
jilles |
sh: Allow a background command consisting solely of redirections.
Example: </dev/null &
MFC after: 2 weeks
|
#
210087 |
|
14-Jul-2010 |
jilles |
sh: There cannot be a TNOT in simplecmd(), remove checks.
simplecmd() only handles simple commands and function definitions, neither of which involves the ! keyword. The initial token on entry to simplecmd() is one of the following: TSEMI, TAND, TOR, TNL, TEOF, TWORD, TRP.
|
#
209653 |
|
02-Jul-2010 |
jilles |
sh: Use $PWD instead of getcwd() for the \w and \W prompt expansions.
This ensures that the logical working directory (which may include symlinks) is shown and is similar to the default behaviour of the pwd builtin.
|
#
209337 |
|
19-Jun-2010 |
jilles |
sh: Fix compilation with -DNO_HISTORY.
The LINENO code uses snprintf() and relied on "myhistedit.h" to pull in the necessary <stdio.h>.
Compiling with -DNO_HISTORY disables all editing and history support and allows linking without -ledit -ltermcap. This may be useful for embedded systems.
MFC after: 2 weeks
|
#
208656 |
|
30-May-2010 |
jilles |
sh: Fix a crash if a heredoc was not properly ended and parsing continued.
Example (in interactive mode): cat <<EOF && ) The next command typed caused sh to segfault, because the state for the here document was not reset.
Like parser_temp, this uses the fact that the parser is not re-entered.
|
#
208655 |
|
30-May-2010 |
jilles |
sh: Change interaction of command substitution and here documents.
If a command substitution contains a newline token, this no longer starts here documents of outer commands. This way, we follow POSIX's idea of the command substitution being a separate script more closely. It also matches other shells better and is consistent with newline characters in quotes not starting here documents.
The extension tested in parser/heredoc3.0 ($(cat <<EOF)\ntext\nEOF\n) continues to be supported.
In particular, this change allows things like cat <<EOF && echo `pwd` (a `` command substitution after a here document) which formerly silently used an empty file as the here document, because the EOF of the inner command "pwd" also forced an empty here document.
|
#
206473 |
|
11-Apr-2010 |
jilles |
sh: Partially revert r206146, allowing double-quotes in arithmetic.
These do pretty much nothing (except that parentheses are ignored), but people seem to use them and allowing them does not hurt much.
Single-quotes seem not to be used and cause silently different behaviour with ksh93 character constants.
|
#
206146 |
|
03-Apr-2010 |
jilles |
sh: Remove special handling for ' and " in arithmetic. They will be treated like normal characters, resulting in a runtime arithmetic expression error.
Exp-run done by: erwin (with some other sh(1) changes)
|
#
206145 |
|
03-Apr-2010 |
jilles |
sh: Fix various things about expansions: * remove the backslash from \} inside double quotes inside +-=? substitutions, e.g. "${$+\}a}" * maintain separate double-quote state for ${v#...} and ${v%...}; single and double quotes are special inside, even in a double-quoted string or here document * keep track of correct order of substitutions and arithmetic
This is different from dash's approach, which does not track individual double quotes in the parser, trying to fix this up during expansion. This treats single quotes inside "${v#...}" incorrectly, however.
This is similar to NetBSD's approach (as submitted in PR bin/57554), but recognizes the difference between +-=? and #% substitutions hinted at in POSIX and is more refined for arithmetic expansion and here documents.
PR: bin/57554 Exp-run done by: erwin (with some other sh(1) changes)
|
#
206144 |
|
03-Apr-2010 |
jilles |
sh: Treat unexpected newlines in substitutions as a syntax error.
The old approach was wrong because PS2 was not used and seems unlikely to parse extensions (ksh93's ${ COMMAND} may well fail to parse).
Exp-run done by: erwin (with some other sh(1) changes)
|
#
205130 |
|
13-Mar-2010 |
jilles |
sh: Fix longjmp clobber warnings in parser.c.
Make parsebackq a function instead of an emulated nested function. This puts the setjmp usage in a smaller function where it is easier to avoid bad optimizations.
|
#
204276 |
|
24-Feb-2010 |
jh |
Fix expansion of \W in prompt strings when the working directory is "/". The prompt string was truncated after \W when the working directory was "/".
PR: bin/89410 Submitted by: Dr Balwinder Singh Dheeman MFC after: 1 week
|
#
201366 |
|
01-Jan-2010 |
jilles |
sh: Fix some bugs with backquoted builtins: - correctly handle error output in $(builtin 2>&1), clarify out1/out2 vs output/errout in the code - treat all builtins as regular builtins so errors do not abort the shell and variable assignments do not persist - respect the caller's INTOFF
Some bugs still exist: - expansion errors may still abort the shell - some side effects of expansions and builtins persist
|
#
201262 |
|
30-Dec-2009 |
jilles |
Fix memory leak when parsing backticks (``).
|
#
201053 |
|
27-Dec-2009 |
jilles |
sh: Various warning fixes (from WARNS=6 NO_WERROR=1): - const - initializations to silence -Wuninitialized (it was safe anyway) - remove nested extern declarations - rename "index" locals to "idx"
|
#
200956 |
|
24-Dec-2009 |
jilles |
sh: Constify various strings.
Most of this is adding const keywords, but setvar() in var.c had to be changed somewhat more.
|
#
199660 |
|
22-Nov-2009 |
jilles |
Fix various things about SIGINT handling: * exception handlers are now run with interrupts disabled, which avoids many race conditions * fix some cases where SIGINT only aborts one command and continues the script, in particular if a SIGINT causes an EINTR error which trumped the interrupt.
Example: sh -c 'echo < /some/fifo; echo This should not be printed' The fifo should not have writers. When pressing ctrl+c to abort the open, the shell used to continue with the next command.
Example: sh -c '/bin/echo < /some/fifo; echo This should not be printed' Similar. Note, however, that this particular case did not and does not work in interactive mode with job control enabled.
|
#
199629 |
|
21-Nov-2009 |
jilles |
sh: Some changes to stderr flushing: * increase buffer size from 100 to 256 bytes * remove implied flush from out2str(), in particular this avoids unnecessary flushing in the middle of a -x tracing line * rename dprintf() to out2fmt_flush(), make it flush out2 and use this function in various places where flushing is desired after an error message
|
#
199282 |
|
14-Nov-2009 |
jilles |
sh: Allow a newline before "in" in a for command, as required by POSIX.
|
#
198173 |
|
16-Oct-2009 |
jilles |
sh: Show more information about syntax errors in command substitution: the line number where the command substitution started. This applies to both the $() and `` forms but is most useful for `` because the other line number is relative to the enclosed text there. (For older versions, -v can be used as a workaround.)
|
#
197691 |
|
01-Oct-2009 |
jilles |
sh: Disallow mismatched quotes in backticks (`...`).
Due to the amount of code removed by this, it seems that allowing unmatched quotes was a deliberate imitation of System V sh and real ksh. Most other shells do not allow unmatched quotes (e.g. bash, zsh, pdksh, NetBSD /bin/sh, dash).
PR: bin/137657
|
#
194765 |
|
23-Jun-2009 |
jilles |
sh: Improve handling of setjmp/longjmp volatile: - remove ineffective and unnecessary (void) &var; [1] - remove some unnecessary volatile keywords - add a necessary volatile keyword - save the old handler before doing something that could use the saved value
Submitted by: Christoph Mallon [1] Approved by: ed (mentor)
|
#
193222 |
|
01-Jun-2009 |
rse |
correctly test for __GNUC__ macro (non-GCC compilers do not have it defined at all)
|
#
191009 |
|
13-Apr-2009 |
stefanf |
Parse 'cmd1 && ! cmd2 | cmd3' correctly, the bang should apply to the entire pipeline cmd2 | cmd3 and not just cmd2.
PR: 130298 Submitted by: Jilles Tjoelker
|
#
179387 |
|
28-May-2008 |
stefanf |
Fix checking if a variable name is LINENO. As STPUTC changes the pointer if it needs to enlarge the buffer, we must not keep a pointer to the beginning.
PR: ports/123879
|
#
179022 |
|
15-May-2008 |
stefanf |
Expand $LINENO to the current line number. This is required by SUSv3's "User Portability Utilities" option.
Often configure scripts generated by the autotools test if $LINENO works and refuse to use /bin/sh if not.
Package test run by: pav
|
#
164003 |
|
05-Nov-2006 |
stefanf |
When parsing an invalid parameter expansion (eg. ${} or ${foo@bar}) do not issue a syntax error immediately but save the information that it is erroneous for later when the parameter expansion is actually done. This means eg. "false && ${}" will not generate an error which seems to be required by POSIX. Include the invalid parameter expansion in the error message (sometimes abbreviated with ... because recovering it would require a lot of code).
PR: 105078 Submitted by: emaste
|
#
160849 |
|
31-Jul-2006 |
yar |
Do not forget to increment the input line counter when reading a word spanning multiple lines.
PR: bin/101094 MFC after: 5 days
|
#
149096 |
|
15-Aug-2005 |
stefanf |
Remove a hack for an ancient gdb.
|
#
149026 |
|
13-Aug-2005 |
stefanf |
Put the comparison with PEOF into a new macro is_eof(). Don't use it if the character comes from a string.
|
#
149024 |
|
13-Aug-2005 |
stefanf |
Use assignment rather than comparison.
|
#
149017 |
|
13-Aug-2005 |
stefanf |
Include missing headers.
|
#
142845 |
|
01-Mar-2005 |
obrien |
Support \H, \h, \w, \W, \$ string expansion in the prompt.
Submitted by: mini
|
#
127958 |
|
06-Apr-2004 |
markm |
Remove clause 3 from the UCB licenses.
OK'ed by: imp, core
|
#
124780 |
|
21-Jan-2004 |
des |
Replace home-grown dup2() implementation with actual dup2() calls. This should slightly reduce the number of system calls in critical portions of the shell, and select a more efficient path through the fdalloc code.
Reviewed by: bde
|
#
117261 |
|
05-Jul-2003 |
dds |
Changes following CScout analysis:
- Removed dead declarations - Made objects that should have been declared as static, static.
The changes use STATIC instead of static, following the existing convention in the rest of the code.
Approved by: schweikh (mentor) MFC after: 2 weeks
|
#
104554 |
|
06-Oct-2002 |
tjr |
Disallow empty condition parts of "if", "while" and "until" compound commands. Commands like "if then ... fi" and "while do ... done" are no longer accepted. Bodies of compound commands are still allowed to be empty, because even though POSIX does not allow them, most shells do.
|
#
104255 |
|
30-Sep-2002 |
tjr |
Remove bits and pieces of support for atty, which was made obsolete by adding history and vi/emacs-style line editing to the shell itself. Atty was a user-mode terminal emulator (like screen and window) that did line editing and history.
|
#
104207 |
|
30-Sep-2002 |
tjr |
Allow a left parenthesis before patterns in case blocks. POSIX requires us to accept this, but I've never seen a script that uses it.
|
#
104202 |
|
30-Sep-2002 |
tjr |
Allow empty case/esac statements; POSIX requires this, and recent versions of autoconf are generating scripts that use this feature.
PR: 43275 35879 Submitted by: Dan Nelson <dnelson@allantgroup.com>
|
#
102410 |
|
25-Aug-2002 |
charnier |
Replace various spellings with FALLTHROUGH which is lint()able
|
#
101662 |
|
11-Aug-2002 |
tjr |
Allow redirections by themselves between "&&" and "||" operators. For example, >/dev/null && echo foo
Pointed out by: FUJISHIMA Satsuki MFC after: 1 week
|
#
100483 |
|
22-Jul-2002 |
tjr |
Don't allow "||" or "&&" to be the first tokens of a command.
PR: 40386 MFC after: 2 weeks
|
#
99110 |
|
30-Jun-2002 |
obrien |
Consistently use FBSDID
|
#
98463 |
|
20-Jun-2002 |
jmallett |
Minor const cleanup.
Don't discard qualifiers we don't need to discard.
|
#
96922 |
|
19-May-2002 |
tjr |
Implement the -C (-o noclobber) option, which prevents existing regular files from being overwritten by shell redirection.
|
#
90111 |
|
02-Feb-2002 |
imp |
o __P has been reoved o Old-style K&R declarations have been converted to new C89 style o register has been removed o prototype for main() has been removed (gcc3 makes it an error) o int main(int argc, char *argv[]) is the preferred main definition. o Attempt to not break style(9) conformance for declarations more than they already are. o Change int foo() { ... to int foo(void) { ...
|
#
83675 |
|
19-Sep-2001 |
tegge |
BASESYNTAX, DQSYNTAX, SQSYNTAX and ARISYNTAX handles negative indexes. Allow those to be used to properly quote characters in the shell control character range.
|
#
75336 |
|
09-Apr-2001 |
brian |
``|'' should be more binding than ``!'' so that this isn't broken:
if ! echo bla | wc -c ; then echo broken fi
Obtained from: NetBSD
|
#
75160 |
|
04-Apr-2001 |
brian |
A much better (more correct) fix for handling ``!'' characters
Obtained from: NetBSD
|
#
75155 |
|
04-Apr-2001 |
brian |
Handle ``!'' characters when they appear as second and subsequent parts of an && or || expression.
This makes this expression work as expected:
if true && ! false; then echo yes; fi
|
#
66612 |
|
03-Oct-2000 |
brian |
Implement the <> redirection operator.
|
#
64705 |
|
16-Aug-2000 |
cracauer |
Disable part of my 8-bits fixes from December 1999.
Serious fix still needed, see discussion on -current (Subject: /bin/sh dumps core with here-document of 8bit text)
Problem in this code originally spotted by Jun Kuriyama <kuriyama@FreeBSD.org>
|
#
60593 |
|
15-May-2000 |
cracauer |
Fix parsing of string for eval command.
PR: 18447 Submitted by: Koji Mori <mori@tri.asanuma.co.jp>
|
#
59436 |
|
20-Apr-2000 |
cracauer |
Fix warnings, some of them serious because sh violated name spaces reserved by the header files it includes.
mkinit.c still produces C code with redundant declarations, although they are more harmless since they automatically derived from the right places.
|
#
57225 |
|
15-Feb-2000 |
cracauer |
Fix ${#varname} (getting length of string) when in double-quotes.
Approved-by: jkh
PR: bin/12137 Submitted by: "Danny J. Zerkel" <dzerkel@columbus.rr.com>
|
#
54679 |
|
16-Dec-1999 |
cracauer |
Second part of 8-bit fixes.
|
#
54631 |
|
15-Dec-1999 |
cracauer |
First round of 8-bit fixes.
|
#
54132 |
|
04-Dec-1999 |
cracauer |
Fix "subscript has type `char'" warnings by casting to int, as discussed on -arch.
|
#
50471 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
39137 |
|
13-Sep-1998 |
tegge |
Be more consistent with handling of quote mark control character. Don't output double-quotes inside variable expansion/arithmetic expansion region in here-documents. When leaving the arithmetic expansion syntax mode, adjust the dblquote flag according to previous syntax, in order to avoid splitting of quoted variables.
|
#
38887 |
|
06-Sep-1998 |
tegge |
Better handling of word splitting. Don't record the same region multiple times when performing nested variable expansion, and preserve some quoting information in order to avoid removing apparently empty expansion result.
|
#
36150 |
|
18-May-1998 |
charnier |
Add rcsid. Spelling.
|
#
25905 |
|
18-May-1997 |
steve |
Use the __unused attribute where warranted.
|
#
25230 |
|
28-Apr-1997 |
steve |
Revert changes from rev 1.16 to 1.17 for now. Closes PR 2879.
|
#
22988 |
|
22-Feb-1997 |
peter |
Revert $FreeBSD$ to $Id$
|
#
21673 |
|
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
20425 |
|
14-Dec-1996 |
steve |
Merge in NetBSD mods and -Wall cleaning.
Obtained from: NetBSD, me
|
#
18202 |
|
10-Sep-1996 |
peter |
Ok, lets try this again, shall we? It was definatly my mistake, not Steve's.. :-]
|
#
18200 |
|
10-Sep-1996 |
peter |
ack! back these out so I can see what I did wrong. It looks like a patch-by-hand botch, but it sig-11's during make world.
|
#
18198 |
|
09-Sep-1996 |
peter |
Fix for PR#1248, sh doesn't expand past ${9}
Submitted by: Steve Price <sprice@hiwaay.net>
|
#
18018 |
|
03-Sep-1996 |
peter |
Fix for PR#1287. This makes sh behave sensibly in case statements in the face of aliases. Note, bash doesn't do aliases while running scripts, but "real" ksh does..
Also: Reduce redundant .Nm macros in (unused) bltin/echo.1 nuke error2, it's hardly used. More -Wall cleanups dont do certain history operations if NO_HISTORY defined handle quad_t's from resource limits
Submitted by: Steve Price <sprice@hiwaay.net> (minor tweaks by me)
|
#
17987 |
|
01-Sep-1996 |
peter |
Merge of 4.4-Lite2 sh source, plus some gcc -Wall cleaning. This is a merge of parallel duplicate work by Steve Price and myself. :-]
There are some changes to the build that are my fault... mkinit.c was trying (poorly) to duplicate some of the work that make(1) is designed to do. The Makefile hackery is my fault too, the depend list was incomplete because of some explicit OBJS+= entries, so mkdep wasn't picking up their source file #includes.
This closes a pile of /bin/sh PR's, but not all of them..
Submitted by: Steve Price <steve@bonsai.hiwaay.net>, peter
|
#
13882 |
|
03-Feb-1996 |
joerg |
Fix the borokeness that crept in with rev 1.10 of parser.c, the sh didn't correctly start background jobs anymore. Strange that nobody was complaining...
Add a dummy target for `builtins' in the Makefile, to prevent it from attempting to build this file by compiling builtins.c. :-/
|
#
12733 |
|
10-Dec-1995 |
joerg |
The shell incorrectly gave & precedence over ;. This breaks the traditional behaviour, and it violates Posix.2.
Fixes PR # bin/880: /bin/sh incorrectly parse...
Fixes also an earlier problem report about the shell not evaluating loops correctly. (Not files via GNATS.)
Submitted by: nnd@itfs.nsk.su (Nickolay N. Dudorov)
|
#
10399 |
|
28-Aug-1995 |
joerg |
Sigh. This will become a never ending story. :-(
When comparing my recent parser change against the ash in 1.1.5.1, i found that a couple of other problems in the same area has been fixed there, but not in 2.2. Semicolons and EOF do also delimit words...
|
#
10354 |
|
27-Aug-1995 |
joerg |
Make the shell handle a null command in a &&/|| sequence correctly. The && and || tokens do also terminate a command, not only the newline.
While i was at it, disabled trace code by default, it served no good purpose since it required the use of a debugger anyway to be turned on. Instead, placed a hint in the Makefile on how to turn it on.
This makes the shell ~ 10 % faster and ~ 4 KB smaller. :)
Pointed out by: jan@physik.TU-Berlin.DE (Jan Riedinger)
|
#
10025 |
|
11-Aug-1995 |
joerg |
sh(1) incorrectly ignored an EOF condition when looking for the closing backquote in a `foo` substitution.
Discovered by: Martin Welk <mw@theatre.pandora.sax.de>
|
#
8855 |
|
29-May-1995 |
rgrimes |
Remove trailing whitespace.
Reviewed by: phk
|
#
5507 |
|
11-Jan-1995 |
paul |
What I think is a more correct fix for the handling of backslashes inside backquotes. Reversed my previous fix.
|
#
5458 |
|
09-Jan-1995 |
paul |
Fix a bug with handling backslash escapes inside some quotes. Should solve our problems with edit-pr.
|
#
3044 |
|
24-Sep-1994 |
dg |
Added $Id$
|
#
2760 |
|
14-Sep-1994 |
sef |
With '!' being made into a keyword (yech!), case cases didn't work properly. This should fix it (passed my test cases). Originally discovered with perl's Configure (well, in FreeBSD, I don't know how the NetBSD folks discovered it).
Reviewed by: sef Submitted by: jtc@cygnus.com Obtained from: NetBSD
|
#
1557 |
|
26-May-1994 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r1556, which included commits to RCS files with non-trunk default branches.
|
#
1556 |
|
26-May-1994 |
rgrimes |
BSD 4.4 Lite bin Sources
|