Commit Graph

185 Commits

Author SHA1 Message Date
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
christos
68b1dcea6d PR/2808: Don't define DEBUG and #ifdef out functions not needed when DEBUG
is not defined (from FreeBSD).
1996-10-16 15:21:49 +00:00
christos
3b66e0cada PR/2808: Add HISTORY section and documentation of getopts. (from FreeBSD) 1996-10-16 15:20:01 +00:00
christos
da8c1311a3 PR/2808: fix redirection to the same file descriptor
better error messages for failed pipes
	 (from FreeBSD)
1996-10-16 15:16:04 +00:00
christos
d8c242f0ae PR/2808: - detect eof inside backquotes
- handle && and || shortcircuits properly
	 - tokens.def -> tokens.h
	 (from FreeBSD)
1996-10-16 14:53:23 +00:00
christos
10a76271de No need to have 2 declarations for the same constant string, one for K&R and
one for STDC...
1996-10-16 14:51:24 +00:00
christos
fd8c99438e PR/2808: POSIX 1003.2: first arg after -c cmd is $0, remainder $1...
(from FreeBSD)
1996-10-16 14:49:56 +00:00
christos
14185e5152 PR/2808: Kill use of error2() (from FreeBSD) 1996-10-16 14:49:03 +00:00
christos
71ab1d0aed PR/2808: tokens.def -> tokens.h 1996-10-16 14:47:49 +00:00
christos
03ba3cf0d6 PR/2808: Use the <ctype.h> functions instead of our homegrown tables to
determine if a character is alpha or alphanumeric, so that NLS
	 works... now if only our NLS really worked... (from FreeBSD).
1996-10-16 14:46:35 +00:00
christos
f6c00506fc PR/2808: Remove extraneous newline from error message (from FreeBSD) 1996-10-16 14:44:28 +00:00
christos
00a9e38ee8 PR/2808: #undef things that we #define to avoid duplicate definitions.
(from FreeBSD)
1996-10-16 14:43:37 +00:00
christos
a20d79429a PR/2808: Don't include <sgtty.h> unless OLD_TTY_DRIVER is defined.
Remove extraneous newline from error messages.
1996-10-16 14:42:20 +00:00
christos
435812e77d PR/2808: Remove extraneous newlines from error routines (from FreeBSD) 1996-10-16 14:40:32 +00:00
christos
4b99c4d748 PR/2808: Fix parsing of $n where n > 9 (from FreeBSD) 1996-10-16 14:38:58 +00:00
christos
2a9c11dd53 PR/287: Shell does not exit with 126/127 when permission denied/
command not found. Add extra exception type and generalize
	error handling routines to take that exception type. Use
	a global variable exerrno to keep the last exec error.
1996-10-16 14:35:42 +00:00
christos
886c875a97 PR/287: Exit with 127/126 when command is not found/permission denied.
PR/2808: don't bomb out on "set -e; false && true"
1996-10-16 14:31:57 +00:00
christos
dd6abbc5c3 PR/2808: Handle cd "". This is for systems where "" != "." 1996-10-16 14:29:42 +00:00
christos
aded8d4c14 PR/2808: tokens.def -> tokens.h 1996-10-16 14:24:56 +00:00
christos
3ec8ea2b0e PR/2808: Depend and clean fixes from FreeBSD 1996-10-16 14:23:51 +00:00
thorpej
47f181309b If getcwd() fails, dang it, I want to know _why_. 1996-09-18 22:47:48 +00:00
mycroft
c65b90450d ioctl(TIOC[GS]PGRP) -> tc[gs]etpgrp() 1996-09-17 14:44:05 +00:00
christos
4d9c694460 Apply PR#2721 from VaX#n8: make man page more lucid in places. 1996-09-02 21:28:21 +00:00
christos
29cad877cd Don't infinite loop with:
unset var
	echo ${var:=}
1996-09-02 21:25:52 +00:00
christos
beb57fb35d - Add function callback capability when variables are set.
- Add setvarsafe that returns an error instead of longjmp() to the
  error code.
1996-06-25 16:49:05 +00:00
christos
cc31700a92 - Add getoptsreset to be used as a callback function when OPTIND is set.
This is used to implement the POSIX behavior when OPTIND=1
- Call setvarsafe instead of setvar. If one ran
	"getopts optstr badvariable"
  where badvariable contained an illegal variable name, there was no way
  to recover, since setvar() would longjmp on the error.
1996-06-25 16:47:43 +00:00
christos
02b3c16118 change sethistsize() to take the history size as an argument so it can
be used directly by the new variable callback functions.
1996-06-25 16:43:33 +00:00
christos
9a738ef22d const poisoning. 1996-06-25 16:40:38 +00:00
christos
70ad20e9f1 Include header files to get function prototypes; don't use home grown ones. 1996-06-25 16:40:06 +00:00
christos
0bc88b2434 getopts fixes:
1. OPTIND value was not computed correctly when the argument was part of the
   option string (i.e. for "l:" "-l 1" was working "-l1" was not). (PR/2505).
2. OPTARG was not being unset in case of errors [in the non POSIX error case].
3. optvar could be set to random values.
4. Option string starting with a : was not treated specially as POSIX
   specifies (if the option string starts with a :, then there is no
   error printed when there are missing option arguments or illegal options,
   and OPTARG and optvar are being set specially).
5. Implemented getopts "opts" optvar [arg]. The optional argument case
   was not implemented.

To do:
- what does Posix say about resetting the getopts state? Bash does it
  by setting OPTIND=0; is that correct? Should we be doing the same thing?
- should we be using getopt(3) for everything internal to the shell? Is that
  feasible because we might need to handle multiple invocations at once.
1996-06-04 21:00:09 +00:00
christos
66824391d1 Fix PR/2504: return with no args returns 0 instead of the return value of
the previous command in functions
1996-06-03 12:21:17 +00:00
cgd
edc0ef345c Fix growstackblock() 'newlen' calculations:
(1) it needs to be ALIGNed for both halves of the 'if,' and
	(2) if you're going to claim that you now have ALIGN(newlen)
	    bytes left, you should have actually allocated
	    ALIGN(newlen), rather than just 'newlen' bytes.
1996-05-20 14:49:32 +00:00
christos
55a41e8abb Close PR/2384 backquoted backslash-newline was not eaten. 1996-05-09 19:40:08 +00:00
pk
0b9acf16f8 Return zero status if `else' clause is empty. 1996-03-06 14:49:29 +00:00
christos
b09ffc42b1 - parser.c: Fix prompting in old style backquote expansion. Fixes PR/2139
and many user complaints why the shell hangs in echo "`"
- eval.c:   Fix exitstatus invalid resetting in `if' statements were:
		if (exit 3); then
			echo foo $?
		else
			echo bar $?
		fi
	    printed 'bar 0' instead of bar 3
1996-03-05 21:03:52 +00:00
jtc
16f5230c39 Changed so that cd builtin doesn't do wierd stuff when cd'ing through
symlinks.  From Chris Demetriou <cgd@NetBSD.ORG>.  Fixes PR #1776.

Changed so that INTOFF/INTON are paired in getpwd().  From Matthias
Pfaller <leo@marco.de>.  Fixes PR #2130.
1996-03-01 01:58:58 +00:00