itohy
ef88b5d2bd
Fixed memory leak on old style command substitution
...
such as sh -c 'echo `echo foo`' .
The memory allocated with ckmalloc() at
parser.c:1349:readtoken1() (search for "done:" label)
was never freed.
I changed this to use 'string stack' framework of Ash.
Note that a string on string stack is properly freed on
exception and end of command parsing, and no explicit free
or signal handlings required.
See TOUR for an overview, and memalloc.[ch] for details
of string stack.
1998-09-26 20:56:33 +00:00
christos
26e51b35ac
include <stdlib.h> to get the prototype for free()
1998-09-26 19:28:12 +00:00
itohy
cc484b787f
The return value of setmode(3) is a pointer to malloc()'ed area
...
and must be freed to avoid memory leaks if called repeatedly.
The leaks occured on symbolic umask command, such as "umask go-w",
which is undocumented.
1998-09-24 17:49:48 +00:00
wrstuden
1037acbf7e
We don't generate .o's anymore for helper programs, so don't CLEANFILES them.
1998-09-12 18:58:41 +00:00
wrstuden
d10063d5c7
Patch to make sh cross-compile right. mksyntax reports unsigned char for
...
powerpc, and signed for m68k & i386.
1998-09-12 18:55:07 +00:00
mycroft
ee9e50eacb
Be more retentive about use of NOTREACHED and noreturn.
1998-07-28 11:41:40 +00:00
mycroft
9dc385beb1
Delint.
1998-07-28 05:31:22 +00:00
christos
d06f150426
PR/5848: David Holland: Use PIPE_BUF instead of hardcoding 4k
1998-07-27 17:12:45 +00:00
mycroft
5dd823ab5d
const poisoning.
1998-07-26 19:44:12 +00:00
ross
69228f8bd8
Small edit to n1>&n2 description.
1998-07-04 06:52:07 +00:00
ross
ac875dda03
Fix a set of bugs where a cd of a relative pathname or a cd through a
...
symbolic link would not set PWD.
1998-05-21 16:50:40 +00:00
christos
efee39278b
Simplify interface for general use.
1998-05-20 01:36:14 +00:00
christos
f792cdd756
Cast is*() args to unsigned chars in case the ctype macros are implemented
...
using arrays.
1998-05-20 00:32:05 +00:00
christos
96133865eb
cast pid's to longs for OS's where this is the case.
1998-05-20 00:31:11 +00:00
christos
338ea4cec8
fix bug where if moving in history during a multi-line event, the
...
append to history event would end up in the last event where the history
was moved to instead of the multi-line event; reported by Mycroft
1998-05-20 00:29:26 +00:00
christos
3d8b8b2ed2
Fix dangling else warning.
1998-05-20 00:27:56 +00:00
christos
3ebdac1759
Portability fixes for a non flex based lexical analyzer.
1998-05-18 22:50:20 +00:00
christos
c6e03280d4
Need stdlib.h
1998-05-18 22:48:53 +00:00
christos
d2ded939ef
PR/5315: Dan Winship: options parsing code should print errors to stderr.
1998-05-02 18:04:09 +00:00
cgd
2072394059
move OBJS depenency on built headers to after include of bsd.prog.mk, so
...
that things are built in the right order on 'make cleandir && make' (i.e.
so that the headers are properly built).
1998-04-19 05:22:08 +00:00
lukem
d6c354cb4b
* remove CFLAGS+=-w for powerpc (added in 1.26):
...
- it was in the wrong place
- makefiles shouldn't override CFLAGS; only CPPFLAGS and COPTS
- christos fixed unsigned char stuff in 1.33 which should
remove the need for -w anyway
* move .include <bsd.prog.mk> to EOF
1998-04-13 12:06:48 +00:00
tv
482063559a
.y.c <sys.mk> rule fixes. Don't create a y.tab.h file unless asked for,
...
and use smarter creation of the header file.
1998-04-09 00:32:31 +00:00
fair
667e4d4cd1
fix default PATH to be <paths.h> _PATH_DEFPATH
1998-04-07 21:15:33 +00:00
fair
618cca243b
Change a few things to reference /usr/include/paths.h instead of local
...
references. Fixing the default PATH is a bit more effort.
1998-04-07 10:16:04 +00:00
veego
7f307512f9
Another try to make this work again. Lets hope that the we don't need a 4th
...
fix for it.
1998-03-30 12:06:48 +00:00
mrg
6e35073fed
make this work again when . is not in $PATH
1998-03-30 10:07:16 +00:00
christos
0328c41456
Pr/5221: Jason Thorpe: Simplify sh Makefile, so that builts from other
...
directories work.
1998-03-29 09:27:40 +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
7cfc52b208
PR/5001: Tom Yu: cd ./ does not work.
1998-02-17 02:57:16 +00:00
christos
ce0d4f06a6
Previous fix broke $var quoting. Try again differently :-)
1998-02-17 00:16:16 +00:00
christos
d8a1d3710c
Re-enabled EXP_RECORD
1998-02-05 08:34:49 +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
thorpej
b65b5cae9e
Sigh, have to cast pointer diffs to long.
1998-02-04 23:49:25 +00:00
thorpej
a40a144d00
Fix printf formats so they work on the Alpha.
1998-02-04 20:10:16 +00:00
mikel
a235399817
back out last change until christos fixes EXP_RECORD; PR 4932
1998-02-04 06:25:55 +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
christos
2b259b0600
- Add gcc attributes to printf like functions
...
- Fix format strings to be const
- Fix buffer length to be size_t
- Add %p format
- Avoid code duplication in varargs/stdarg cases
1998-01-31 12:37:55 +00:00
christos
7faabd5800
Include our local includes after the system's ones.
1998-01-31 12:36:16 +00:00
christos
71868e12e2
Fix printf format.
1998-01-31 12:34:12 +00:00
christos
e3f5fb922f
BSD4_4 is a standard symbol in <sys/param.h>; make sure that files
...
that need this defined, include <sys/param.h> and don't define it in
the Makefile. Add a comment to that effect.
1998-01-21 10:47:37 +00:00
pk
5d9692a740
Define BSD4_4: quad_t's in struct rlimit;
1998-01-20 22:43:34 +00:00
christos
38c84eeda3
test for the boundary condition in the previous trailing blank fix
1998-01-16 16:26:22 +00:00
christos
2708e4180f
PR/4805: Ty Sarna: read builtin does not remove trailing blanks.
1998-01-15 19:39:11 +00:00
christos
505573954e
Unfortunately (as I expected) the previous change broke:
...
sleep
cmd='set `type "sleep"`; eval echo \$$#'
which=`eval $cmd`
echo $which
because the region did not get recorded at all, and it was interpreted as
a single word. I modified the code to keep track when the result of a
backquote expansion has been recorded to avoid recording it twice. I still
feel that this is not the right fix... More to come.
1997-12-01 14:43:20 +00:00
christos
81aad04920
Remove local declaration of getenv();
1997-12-01 14:40:16 +00:00
christos
b7e4df7784
PR/4547: Joern Clausen: Incorrect argument expansion in backquote variable
...
assignment. E.g.
echo ${foo:=`echo 1 2 3 4`}
prints:
1 2 3 1 2 3 4
because when the arquments are not quoted, the backquote result
gets recorded twice. The fix right now is to comment out the
record_region() call in expbackq(). I hope that it does not break
anything else.
1997-11-30 20:57:33 +00:00
cjs
af5956aa6b
Make this compile with -DSMALL and warnings on.
1997-11-12 03:40:55 +00:00
kleink
3780e6aa5d
Per 1003.2, the (builtin) read utility shall treat the backslash as an
...
escape character (including line continuation), unless the `-r' option
is specified:
* adopt to this behaviour, add the `-r' option to disable it;
* remove the `-e' option, which was previously necessary to get this behaviour.
1997-11-05 14:05:28 +00:00
christos
82ec25620f
pid should be pid_t and status should be int! Avoid alignment problems...
1997-10-15 13:23:10 +00:00
christos
946049095f
PR/4257: Jaromir Dolecek: Update for libedit interface change.
1997-10-14 15:06:42 +00:00
christos
e230a48b57
CFLAGS->CPPFLAGS
1997-10-10 19:47:50 +00:00
christos
7f2a271743
PR/3662: David Holland: Make /bin/sh use the symbolic macros for wait().
1997-10-08 20:31:52 +00:00
lukem
92d7aa0376
getopt returns -1 not EOF
1997-09-14 07:43:56 +00:00
thorpej
23eb2db171
Avoid a segv in bltinlookup() reported by Ronald Khoo <ronald@demon.net>
...
in PR #3929 , fix submitted by hiroy@NETCOM.COM (Hiroyuki Ito).
1997-08-26 20:09:59 +00:00
christos
23edbe3557
Remove WARNS=1 from all the subdirectory Makefiles, and add it to Makefile.inc
...
now that all /bin has been cleaned.
1997-07-20 22:36:20 +00:00
christos
c996803cad
PR/3888: Chris Demetriou: type command-with-slash prints
...
$PATH[0]/command-with-slash...
1997-07-20 21:27:35 +00:00
thorpej
d891aff808
Cast the result of pointer arithmetic to "long", and use %ld to print it.
1997-07-18 17:46:59 +00:00
christos
18ad58a639
PR/3866: bayer@informatik.uni-leipzig.de: core dump using xon script.
...
cmdenviron is pointing to varlist.list; varlist gets reset everytime
you enter evalcommand, but cmdenviron does not. The wonders of global
variables...
1997-07-15 17:49:15 +00:00
christos
1eb178df64
Fix Sparcworks warnings.
1997-07-15 17:45:53 +00:00
christos
bb5e01d099
Don't re-define setjmp/longjmp in the svr4 case
1997-07-15 17:44:32 +00:00
phil
1d304ac34c
Add a missing ) in the description of the builtin "set".
1997-07-10 23:07:04 +00:00
phil
64eb899e5a
Make code agree with man page in processing expansion of "$*".
...
Fix from PR 2647.
1997-07-07 20:41:10 +00:00
christos
5accccd051
Fix problem introduced in yesterday's commit that broke both signed and
...
unsigned character machines. So that people don't have to reverse engineer
this again:
mksyntax detects if characters are signed or not and builts a syntax
table that has a base of 129 for signed characters or 1 for unsigned
characters. This is so the largest negative signed char [-128] + the
base == 1. 0 is special and means end of file in both cases. PEOF
is -1 for the unsigned character case and -129 for the signed
character case, so that syntax[PEOF + base] == syntax[0] == CEOF
So PEOF has to be -1, but it is explicitly compared with
unsigned characters on machines where characters are unsigned.
The quick fix is to define UPEOF the (unsigned char) version of PEOF
and use that. A better fix is to always use unsigned characters
when referencing symbol table entries, but that would require
extensive changes to the shell. So to summarize
syntax[0] == CEOF, base + PEOF == 0
unsigned signed
base 1 129
PEOF -1 -129
1997-07-05 21:25:09 +00:00
christos
687f7852d9
Make the syntax tables work on machines where characters are unsigned.
1997-07-04 21:40:55 +00:00
christos
cd799663e4
Fix compiler warnings.
1997-07-04 21:01:48 +00:00
christos
28f5c57bd5
Don't roll own rules to build helper programs.
...
Add WARNS
1997-07-04 21:00:36 +00:00
christos
cbf48b75c7
PR/3827: Wolfgang Rupprecht: cd ./. core dumps
...
Warning cleanups
1997-07-04 20:59:40 +00:00
lukem
a1267d0c71
add auto-generated token.h to dependancy for ${OBJS}.
...
not everyone runs "make depend" ...
1997-06-16 02:42:38 +00:00
cjs
cddf57d923
Add documentation for ulimit command, courtsey of
...
Eric Fischer <eric@fudge.uchicago.edu>.
1997-05-23 19:40:30 +00:00
veego
3e90f9b423
Add mkinit.o mknodes.o mksyntax.o to CLEANFILES
1997-05-15 10:03:24 +00:00
mycroft
cc4a1553a1
Eliminate bogus redefinitions of standard targets.
1997-05-09 07:50:03 +00:00
gwr
10e180cc49
Back out the .PATH.c changes. The .depend problem (and others)
...
will be fixed using the new .NOPATH make feature instead.
1997-05-08 21:11:01 +00:00
gwr
012e528f2e
Use .PATH.c: ...
1997-05-06 20:44:56 +00:00
christos
fb758fd82b
PR/3452: Jerry Peek: Redirections of unopened fd to file failed.
...
for arg in a b c
do
echo hi this is $arg 1>&3
done 3> foo
1997-04-21 12:38:25 +00:00
thorpej
062f26f33b
- XXX Inhibit warnings on PowerPC for now - there are lots of
...
"char is unsigned" problems here.
- Add rules for mkinit, mknodes, and mksyntax that use the HOST_*
facilities, for cross-compiling.
1997-04-17 08:13:26 +00:00
christos
3a468199cb
#if __STDC__ -> #ifdef __STDC__
1997-04-11 23:08:40 +00:00
christos
360e930d42
Make this work on systems that don't have quads
1997-04-11 23:08:15 +00:00
christos
2c8f740e5c
__svr4__ -> __SVR4
1997-04-11 23:07:47 +00:00
christos
7ea7f895f5
Use #ifdef __STDC__ instead of #if __STDC__
1997-04-11 23:06:51 +00:00
christos
92cdde85e8
Fix so that this compiles on systems without quads and remove the double
...
inclusion of varargs/stdarg
1997-04-11 23:05:43 +00:00
christos
70bb105c67
Pointer arithmetic on void * is illegal but gcc does not care.
1997-04-11 23:03:08 +00:00
christos
23745b89db
Don't call getpwd() because if that fails the shell cannot start. (from scott)
1997-04-11 23:01:44 +00:00
christos
f726a3c453
Rename pread to preadfd
1997-04-11 23:00:40 +00:00
christos
3bddaec49b
add forward declaration of union node;
1997-04-11 22:58:40 +00:00
christos
7efa5addb4
Track $TERM and call the appropriate editline(3) routine to update the
...
terminal type.
1997-04-11 22:45:38 +00:00
christos
a0fa692d3b
PR/3352: From Hiroyuki Ito: ${#1} was not being expanded properly if there
...
was a need to allocated another stack block.
1997-03-18 18:54:40 +00:00
christos
7accaec421
NO_HISTORY->SMALL
1997-03-14 01:42:18 +00:00
christos
6042831b7e
Fix problems with -DNO_HISTORY
1997-03-13 21:57:32 +00:00
mycroft
3a59e5e8e3
Set input files to close-on-exec mode.
1997-03-13 20:07:49 +00:00
mouse
412433b44c
alternate -> alternative, per PR 2643
1997-03-08 13:26:20 +00:00
christos
6b7623a681
Fix PR/3289: upon initialization check if $PWD contains the right directory
...
and use it. We also maintain $PWD now, like the rest of the
shells.
1997-03-07 21:36:19 +00:00
christos
4a521d359f
varisset fixes:
...
- treat $0 specially since it is not in shellparams
- check the number of parameters instead of walking
the parameters array to avoid checking against the
null terminated element.
1997-03-03 19:26:18 +00:00
christos
edc5dadbab
PR/3269: Off by one in varisset(), caused variable substitution not to
...
count the last positional parameter as set.
1997-03-01 19:33:29 +00:00
christos
a5aaf55cf3
Fix PR/3258 sh -c 'echo $0' causes segmentation fault.
1997-02-25 17:51:50 +00:00
christos
680690d33c
add type builtin.
1997-02-06 23:24:52 +00:00
christos
6f224ae59f
Fix parsing problem introduced in the previous ${10} fix, where $#digit
...
or $digit# would get mis-parsed as a positional parameter.
1997-01-26 18:05:34 +00:00
christos
633ceb6db5
- varisset(): In positional arguments, take into account VSNUL so that:
...
set -- ""; echo ${1:-wwww} works.
- when expanding arithmetic, discard previous ifs recorded regions, since we
are doing our own scanning. x=ab; echo $((${#x}+1)) now works.
- in ${var#word} fix two bugs:
* if there was an exact match, there was an off-by-one bug in the
comparison of the words. x=abcd; echo ${x#abcd}
* if there was no match, the stack region was not adjusted and the rest
of the word was getting written in the wrong place. x=123; echo ${x#abc}X
1997-01-24 17:26:28 +00:00
christos
3d5f212ba8
enable parsing of multi-digit positional arguments i.e. ${10} works and it
...
is not a bad substitution.
1997-01-24 17:15:56 +00:00