tsutsui
49ee47d09d
Use %zu in printf format for size_t value.
2009-11-27 10:50:04 +00:00
lukem
c6144e484f
fix -Wsign-compare issues
2009-01-18 00:24:29 +00:00
christos
271febebf6
use EXP_CASE only when trimming and unquoted.
2008-12-21 17:15:09 +00:00
christos
26edf84a4b
PR/36954: Roland Illig: don't eat backlash escapes in variable patterns.
...
Makes ${line%%\**} work.
2008-12-20 20:36:44 +00:00
dholland
7fb5a8c68e
The field width passed for a %.*s printf format is supposed to be int, not
...
ptrdiff_t; on 64-bit platforms the latter will be too wide.
Adjust accordingly.
2008-10-16 17:58:29 +00:00
apb
91ce988bec
Make /bin/sh use intmax_t (instead of int) for arithmetic in $((...)).
2007-03-25 06:29:26 +00:00
wiz
5c056f6785
s/apparant/apparent/, from Zafer.
2006-11-24 22:54:47 +00:00
dsl
c58b829dda
Set the 'not a parameter' flag when we skip initial whitespace.
...
Otherwise:
./sh -c 'x=" "; for a in $x; do echo a${a}a; done'
is processed as a single empty parameter (instead of no parameters).
Should fix the breakage I introdiced in rev 1.75 and PR/34256 and PR/34254
2006-08-22 18:11:42 +00:00
dsl
413b7762c2
Rework the code changes from revisions 1.69, 1.70 and 1.74 so that the code
...
behaves correctly.
As far as I can tell, "x$@y" now expands correctly, as does IFS=:; set -$IFS.
Fixes PR/33472 (again) and PR/33956
2006-08-21 21:30:14 +00:00
dsl
0e765f005a
When expanding "$@" add a \0 byte after the last argument (as well as all
...
the earlier ones) so that a separator is added before it when it is empty.
This wasn't needed before a recent change that chenged the behaviour of
trailing whitespace IFS characters.
Fixed PR/33472
2006-05-20 13:57:27 +00:00
christos
3e359756c9
Coverity CID 620: Remove dead code.
2006-03-18 05:25:56 +00:00
dsl
ea2078818f
TOG require that 'set +o' output the options in a form suitable for
...
restoring them - make it so.
2005-12-13 17:44:18 +00:00
lukem
5166671bc3
appease gcc -Wuninitialized
2005-06-01 15:41:19 +00:00
dsl
328c436518
Check quoting before merging ifs regions.
...
sh -c 'set -- a; x="b c"; set -- "$@"$x'
now correctly gives $1=ab, $2=c
2005-03-19 16:38:27 +00:00
dsl
2078d2c0ca
Don't merge ifs regions with different quoting requirements
2005-03-19 15:02:58 +00:00
dsl
f712e70aee
expbackq() was incorrectly backing up a temporary buffer when removing \n
...
from the end of output of commands inside $(...) substitutions.
If the program output is n*128+1 bytes long (ending in a \n) then the code
checks buf[-1] for another \n - looking an uninitialised stack.
On a big-endian system an integer of value 10 will satisfy this (unlikely
on little endian) and can happen depending on the last code path to use
a lot of stack!
This caused the problem with newvers.sh on sparc64 after ', 2005' was
added to the date list.
Fixed PR/28852
2005-02-14 20:46:26 +00:00
seb
cf788c3115
Add new builtin `wordexp' to support wordexp(3).
...
From FreeBSD.
Provided in PR lib/26123.
Approved by kleink@.
2004-07-13 15:05:59 +00:00
dsl
c6cbc16d26
Correctly apply IFS to unquoted text in ${x-text}.
...
Fixes PR/26058 and the 'for i in ${x-a b c}; do ...' and ${x-'a b' c}.
I can't find a PR for the latter problem.
Regression test goind in shortly.
2004-06-26 22:09:49 +00:00
dsl
97e8f81436
Remove a broken optimistion that crept in earlier today.
2004-06-26 20:48:44 +00:00
dsl
8e940884ca
Kill a diagnostic I accidentally left in.
2004-06-26 14:21:29 +00:00
dsl
e4a2a056d2
No functional changes (intended).
...
Rename some variables, add some comments, and restructure a little.
In preparation for fixing "set ${x-a b c}" and friends.
2004-06-26 14:09:58 +00:00
christos
cf19966782
Undo previous fix, breaks:
...
#!/bin/sh
echo ${1+"$@"}
./sh.new foo.sh a b c
a b c b c
I'll revisit this when I have some more time.
2004-06-09 12:17:36 +00:00
christos
fc5d411571
"for i in ${x-a b c}; do echo $i; done" should print "a\nb\nc\n" not "a b c\n"
...
like other shells do. mark the expansion for ifs splitting. XXX: linux has a
very complicated fix for this. I wonder why.
2004-06-08 03:29:51 +00:00
jdolecek
30651d6b04
minor optimization in evalvar()
...
change sent in bin/23813 by VaX#n8
2003-12-21 08:32:39 +00:00
dsl
b17e1b5c12
Fix 'set "*" b; case "* b" in "$@") ...' and 'set "*"; case 1 in "${#1}") ...'
...
Which got broken by the previous fix.
2003-09-22 12:17:24 +00:00
christos
4dcb41ae2c
PR/22640: Paul Jarc: sh mishandles positional parameters in case. Fixed
...
from FreeBSD PR 56147.
2003-09-17 16:01:19 +00:00
agc
b5b2954259
Move UCB-licensed code from 4-clause to 3-clause licence.
...
Patches provided by Joel Baker in PR 22249, verified by myself.
2003-08-07 09:05:01 +00:00
christos
c02b3bbdf4
Fixes from David Laight:
...
- ansification
- format of output of jobs command (etc)
- job identiers %+, %- etc
- $? and $(...)
- correct quoting of output of set, export -p and readonly -p
- differentiation between nornal and 'posix special' builtins
- correct behaviour (posix) for errors on builtins and special builtins
- builtin printf and kill
- set -o debug (if compiled with DEBUG)
- cd src obj (as ksh - too useful to do without)
- unset -e name, remove non-readonly variable from export list.
(so I could unset -e PS1 before running the test shell...)
2002-11-24 22:35:38 +00:00
christos
4783843fdc
Revert previous change. No need to save rootshell. It is only affecting
...
the non-vfork case. Having said that, it would be nice if pipelines of
simple commands were vforked too. Right now they are not.
Explain that setpgid() might fail because we are doing it both in the
parent and the child case, because we don't know which one will come
first.
Suspending a pipeline prints %1 Suspended n times where n is the number
of processes, but that was there before. It is easy to fix, but I'll
leave the code alone for now.
2002-09-28 01:25:01 +00:00
christos
6f48233483
Deal with rootshell not being maintained correctly in the vfork() case.
...
Propagate isroot, throughout the eval process and maintain it properly.
Fixes sleep 10 | cat^C not exiting because sleep and cat ended up in
their own process groups, because wasroot was always true in the children.
2002-09-27 22:56:24 +00:00
christos
eac955176d
Implement unset variable error messages from Ben Harris.
2002-05-15 14:59:21 +00:00
itojun
31952d578f
make sure we do not truncate arith expresssion > 10 digits.
...
freebsd bin/sh/expand.c revision 1.15. NetBSD PR 13943.
2001-09-19 06:38:19 +00:00
mycroft
59771e308b
Globbing should match broken symlinks. stat()->lstat() to fix this.
2001-03-30 17:45:00 +00:00
christos
3380980447
remove redundant declarations and nexted externs.
2001-02-04 19:52:06 +00:00
soren
1594850f00
Fix doubled 'the' in comment.
2000-03-13 22:46:59 +00:00
christos
3d42469030
compile with WARNS = 2
1999-07-09 03:05:49 +00:00
he
e97b0193be
Fix for bin/7502, from Tor Egge / FreeBSD. Their commit message:
...
> During variable expansion, the internal representation of the expression
> might be relocated. Handle this case.
1999-04-30 17:54:17 +00:00
he
4e69294c60
Correct a rather obvious typo (once Tor Egge pointed it out to me)
...
in the last change.
1999-04-06 21:05:27 +00:00
christos
28607542af
PR/7231: Havard Eidnes: Shell quoting/trimming problem
1999-03-26 15:49:34 +00:00
christos
96a46ed7b1
Fix off-by-one error in the starting point to search for an arithmetic
...
expression.
1999-02-06 17:23:09 +00:00
christos
b4c9a78425
PR/5577: Craig M. Chase: sh does not build with PARALLEL set.
...
- Added YHEADER in Makefile, removed arith.h and adjusted the sources.
1999-02-05 07:52:51 +00:00
mycroft
1fbf0781c6
Patches from Tor Egge (via Havard Eidnes) to fix various bugs in field
...
splitting and combining.
(Note: Some of this are not strictly bugs, but differences between traditional
Bourne shell and POSIX.)
1999-01-25 14:20:56 +00:00
mycroft
ee9e50eacb
Be more retentive about use of NOTREACHED and noreturn.
1998-07-28 11:41:40 +00:00
mycroft
5dd823ab5d
const poisoning.
1998-07-26 19:44:12 +00:00
mrg
a26bae1e08
- change "extern" variables into int's
...
- remove extern'd variables not actually referenced
- don't use char as an array index
1998-03-29 04:41:43 +00:00
christos
04784d87fa
Fix the VSTRIMRIGHT* bugs... The problem was not the string length computation,
...
but lack of '\0' termination. Factor this segment out as common code too, while
I am there.
1998-03-23 18:21:02 +00:00
christos
19e7771baa
off by one error in ${%%}
1998-03-10 19:11:07 +00:00
christos
ce0d4f06a6
Previous fix broke $var quoting. Try again differently :-)
1998-02-17 00:16:16 +00:00
christos
f7c8df6d68
Fix bug introduced by EXP_RECORD, where in case there was a variable expansion
...
involved in the `for' list, the list was recorded twice, leading to incorrect
argument expansion.
Introduce ifsfree() function that free's the IFS region list, GC'ing duplicated
code.
1998-02-05 08:32:00 +00:00
christos
5a36c00160
PR/4851: Benjamin Lorenz: In the "for <var> in <args>" construct <args>
...
was not marked as a region to be handled by ifsbreakup. Add EXP_RECORD
to indicate that the argument string needs to be recorded.
1998-01-31 12:45:06 +00:00