Commit Graph

320 Commits

Author SHA1 Message Date
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
tls 48250187e6 kill 'register' 1997-01-11 02:04:27 +00:00
cjs 5678a13f1b Re-introduce some code from 1.14 (with modifications) to make the
shell's idea of the current working directory match reality when
symlinks (or anything else we can't stat) are traversed with the
cd command. However, this does not print out the cwd after cd
traverses symlinks, as it used to, though the capability is still
there should one want to use it.
1996-12-22 08:34:34 +00:00
christos a00e49c200 Getopts bugs again (I'll never get this right).
- make sure that OPTIND is set correctly even in the absence of options.
- don't keep stale state between getopts calls.
1996-12-15 20:37:09 +00:00
christos 340077b543 - fix parsing bug reported by mycroft: ! was only recognized in the beginning
of pipelines. Now we are recognizing it everywhere like ksh, so:

	! if [ a = b ]; then ! echo c && ! true; else ! echo d; fi

  works.
1996-11-25 20:22:00 +00:00
christos 9530a32719 Fix bug in getopts code where the argument list got truncated.
From Todd Miller.
1996-11-24 20:48:01 +00:00
christos 07aeb5b266 remove a debugging printf that was left from the last POSIX error code fixes. 1996-11-09 01:04:07 +00:00
christos ccce082dd2 Fix miscellaneous getopts problems:
- the 3 argument version of getopts would not reset properly
- OPTARG did not get cleared after a non argument option was found
- OPTIND was not set properly after a non argument option.
1996-11-06 01:17:10 +00:00
christos 846dce0ee3 Fix problems that gcc -Wall found (from Todd Miller, OpenBSD) 1996-11-02 18:26:03 +00:00
christos a4ad4c0efc A correction to the previous patch from Todd Miller. 1996-11-02 18:07:08 +00:00
christos 27e15e5bbc echo ${1:-empty} did not do the substitution; from Todd Miller (OpenBSD) 1996-11-02 17:47:41 +00:00
cgd 8ba64baaaf add builtins.h to the list of (built) headers depended on by ${OBJS}, so
make from 'cleandir' works.
1996-10-22 13:22:19 +00:00
abrown e613224229 Remove leftover printf("here") from last change. 1996-10-19 02:38:36 +00:00
christos bc73cf950a PR/2808: Remove trailing whitespace (from FreeBSD) 1996-10-16 15:45:03 +00:00
christos afb80e9b13 PR/2808: Add a definition for warnx() (from FreeBSD; currently unused) 1996-10-16 15:28:10 +00:00
christos 2b0a187f34 PR/2808: Use .Nm macro properly. (from FreeBSD) 1996-10-16 15:27:03 +00:00
christos 1a523dd56b PR/2808: - Don't use p++ in macros.
- Hash using unsigned numbers.
	 (from FreeBSD)
1996-10-16 15:24:31 +00:00