summaryrefslogtreecommitdiffstats
path: root/bin
Commit message (Collapse)AuthorAgeFilesLines
* sh: Fix memory leak when using a variable in arithmetic like $((x)).jilles2009-11-051-3/+23
| | | | MFC after: 3 weeks
* Increase width for %CPU, RSS and VSZ columns for now. Modern systemsdelphij2009-11-031-3/+3
| | | | tend to have larger memory, larger process, and more CPU.
* Use our canonical .Dd format.brueffer2009-11-021-1/+1
| | | | Submitted by: Ulrich Spoerlein
* sh: Exempt $@ and $* from set -ujilles2009-10-242-3/+6
| | | | | | | | This seems more useful and will likely be in the next POSIX standard. Also document more precisely in the man page what set -u does (note that $@, $* and $! are the only special parameters that can ever be unset, all the others are always set, although they may be empty).
* Check error of dlfunc(3).ume2009-10-171-0/+11
| | | | MFC after: 3 days
* sh: Show more information about syntax errors in command substitution:jilles2009-10-161-0/+5
| | | | | | | 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.)
* Removed redundant WARNS setting.ru2009-10-152-2/+0
| | | | Submitted by: Ulrich Spörlein
* ls: Make -p not inhibit following symlinks.jilles2009-10-131-1/+1
| | | | | | | | | According to the man page, when neither -H/-L nor -F/-d/-l are given, -H is implied. This agrees with POSIX, GNU ls and Solaris ls. This means that -p, although it is very similar to -F, does not prevent the implicit following of symlinks. PR: standards/128546
* Clarify quoting of word in ${v=word} in sh(1).jilles2009-10-071-0/+3
|
* sh: Send the "xyz: not found" message to redirected fd 2.jilles2009-10-062-7/+3
| | | | | | | | | | This also fixes that trying to execute a non-regular file with a command name without '/' returns 127 instead of 126. The fix is rather simplistic: treat CMDUNKNOWN as if the command were found as an external program. The resulting fork is a bit wasteful but executing unknown commands should not be very frequent. PR: bin/137659
* sh: Disallow mismatched quotes in backticks (`...`).jilles2009-10-011-7/+1
| | | | | | | | | 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
* Mention that NUL characters are not allowed in sh(1) input.jilles2009-09-201-0/+4
| | | | | | | | I do not consider this a bug because POSIX permits it and argument strings and environment variables cannot contain '\0' anyway. PR: bin/25542 MFC after: 2 weeks
* Add NFSv4 support to setfacl(1).trasz2009-09-076-221/+539
| | | | Reviewed by: rwatson
* Add NFSv4 ACL support to mv(1).trasz2009-09-041-12/+58
| | | | Reviewed by: rwatson
* Add NFSv4 ACL support to getfacl(1).trasz2009-09-042-17/+72
| | | | Reviewed by: rwatson
* Fix regression introduced in r196712 - the 'name' string needstrasz2009-09-021-5/+9
| | | | | | to be rewritten for each file we want to check ACL on. Without this change, ls(1) would check only the ACL on the first file to list.
* Add NFSv4 ACL support to cp(1) and fix a few memory leaks.trasz2009-09-021-30/+93
| | | | | | | | | Note that this changes error reporting behaviour somewhat - before, no error was reported if ACL couldn't be copied because the target filesystem doesn't support ACLs. Now, it will be reported - of course, only if there actually is an ACL to copy. Reviewed by: rwatson
* - Don't include both <sys/types.h> and <sys/param.h>trasz2009-09-021-9/+6
| | | | | | | | | | | | | | - Keep variables sorted - Fix logic error with -f and -v options - don't print the usual -v output if there was an error, whether or not we were passed -f - Don't call free(3) just before exit(2) - Whitespace fixes Submitted by: bde
* Add NFSv4 ACL support to ls(1).trasz2009-08-311-52/+54
|
* Make the code more readable and fix chmod(1) on symlinks withtrasz2009-08-311-13/+15
| | | | NFSv4 enabled.
* sh: Fix crash with empty functions (f() { }) introduced in r196483jilles2009-08-284-8/+17
| | | | | | | | | | | | Empty pairs of braces are represented by a NULL node pointer, just like empty lines at the top level. Support for empty pairs of braces may be removed later. They make the code more complex, have inconsistent behaviour (may or may not change $?), are not specified by POSIX and are not allowed by some other shells like bash, dash and ksh93. Reported by: kan
* sh: Fix crash when undefining or redefining a currently executing function.jilles2009-08-235-18/+44
| | | | | | | | Add a reference count to function definitions. Memory may leak if multiple SIGINTs arrive in interactive mode, this will be fixed later by changing SIGINT handling. PR: bin/137640
* Add the -d switch to the usage message.brian2009-07-231-1/+1
| | | | | | Submitted by: Emil Mikulic - emil at dmr dot ath dot cx Approved by: re (kib) MFC after: 1 week
* Allow creating hard links to symlinks using ln(1).jilles2009-07-192-22/+41
| | | | | | | | This implements the POSIX.1-2008 -L and -P flags. The default remains to create hard links to the target of symlinks. Approved by: re (kib), ed (mentor)
* Add manual page links to advertise procstat(1) a little better.trasz2009-07-091-1/+2
| | | | Approved by: re (kib)
* With NFSv4 ACLs, it is possible that applying a mode to an ACL whichtrasz2009-07-011-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | is identical to the mode computed from that ACL will modify the ACL. For example, mode computed from the following ACL is 0600: user:kamila:rwx--------C--:------:allow owner@:--x-----------:------:deny owner@:rw-p---A-W-Co-:------:allow group@:rwxp----------:------:deny group@:--------------:------:allow everyone@:rwxp---A-W-Co-:------:deny everyone@:------a-R-c--s:------:allow However, applying that mode (chmod 0600) changes the ACL into this: user:kamila:rwx-----------:------:deny user:kamila:rwx--------C--:------:allow owner@:--x-----------:------:deny owner@:rw-p---A-W-Co-:------:allow group@:rwxp----------:------:deny group@:--------------:------:allow everyone@:rwxp---A-W-Co-:------:deny everyone@:------a-R-c--s:------:allow In chmod(1) utility, there is an optimisation, which makes it not call chmod(2) if the mode of the file is the same as the new mode. Disable that optimisation for files which may have NFSv4 ACLs. Reviewed by: rwatson Approved by: re (kib)
* Fix some weirdnesses in the NetBSD IFS code,jilles2009-06-251-2/+3
| | | | | | | | in particular "$@"$ifschar if the final positional parameter is empty. With the NetBSD code, adding the $ifschar removes a parameter. PR: standards/79067 Approved by: ed (mentor) (implicit)
* Improve IFS expansion using code from NetBSD.jilles2009-06-251-61/+80
| | | | | | | | We now pass the ifs.sh testsuite. PR: standards/79067 Approved by: ed (mentor) (implicit) Obtained from: NetBSD
* Designate special builtins as such in command -V and type.jilles2009-06-242-3/+15
| | | | | | Also document various properties of special builtins that we implement. Approved by: ed (mentor) (implicit)
* Staticify internal routines.delphij2009-06-234-7/+7
|
* Quote -x tracing output so it is unambiguous.jilles2009-06-231-2/+17
| | | | | | It is usually but not always suitable for re-input to the shell. Approved by: ed (mentor) (implicit)
* Do not fork for a subshell if it is the last thing this shell is doingjilles2009-06-231-2/+2
| | | | | | | | | | | | | | | | | | | | | (EV_EXIT). The fork is still done as normal if any traps are active. In many cases, the fork can be avoided even without this change by using {} instead of (), but in practice many scripts use (), likely because the syntax is simpler. Example: sh -c '(/bin/sleep 10)& sleep 1;ps -p $! -o comm=' Now prints "sleep" instead of "sh". $! is more useful this way. Most shells (dash, bash, pdksh, ksh93, zsh) seem to print "sleep" for this. Example: sh -c '( ( ( (ps jT))))' Now shows no waiting shell processes instead of four. Most shells (dash, bash, pdksh, ksh93, zsh) seem to show zero or one. PR: bin/74404 Approved by: ed (mentor) (implicit)
* Usermode portion of the support for swap allocation accounting:kib2009-06-231-1/+1
| | | | | | | | | | | - update for getrlimit(2) manpage; - support for setting RLIMIT_SWAP in login class; - addition to the limits(1) and sh and csh limit-setting builtins; - tuning(7) documentation on the sysctls controlling overcommit. In collaboration with: pho Reviewed by: alc Approved by: re (kensmith)
* sh: Improve handling of setjmp/longjmp volatile:jilles2009-06-234-61/+18
| | | | | | | | | | | - 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)
* Fix race condition in noclobber option.jilles2009-06-201-7/+19
| | | | | | | | | | Formerly, it was possible for the file to be created between the check if it existed and the open; the contents would then be lost. Because this must use O_EXCL, noclobber > will not create a file through a symlink anymore. This agrees with behaviour of other shells. Approved by: ed (mentor) (implicit)
* Fix some issues with quoted output and shorten it in some cases.jilles2009-06-191-9/+15
| | | | | | | | | | | | | | Output quoted suitable for re-input to the shell occurs in various cases such as 'set', 'trap'. Bugfix: *, ? and [ must be quoted (except sole [) Bugfix: ~ and # must be quoted (really only sometimes, but keep it simple) Bugfix: space, tab and newline must always be quoted Shortening: other IFS characters do not need quoting Bugfix: send to correct output file, not hard-coded stdout Shortening: avoid unnecessary '' with \' Approved by: ed (mentor)
* Properly flush input after an error in backquotes in interactive mode.jilles2009-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | For parsing an old-style backquote substitution (`...`), a string "file" is used to store the contents of the substitution (with the special backslash processing done). If an error occurs, the shell cleans up all these files (returning to the top level) and flush the top level file. Erroneously, it first flushed the current file and then cleaned up all extra files, so that the top level file (i.e. the terminal) was not flushed. Example (in interactive mode): echo `for` echo This should not be printed Also noticeable in (in interactive mode): echo `(` The old version prints an extraneous prompt. Approved by: ed (mentor)
* Avoid leaving unnecessary waiting shells in many forms of sh -c COMMAND.jilles2009-06-135-9/+35
| | | | | | | | | | | | | | | | | | | | | | This change only affects strings passed to -c, when the -s option is not used. The approach is to check if there may be additional data in the string after parsing each command. If there is none, use the EV_EXIT flag so that a fork may be omitted in specific cases. If there are empty lines after the command, the check will not see the end and forks will not be omitted. The same thing seems to happen in bash. Example: sh -c 'ps lT' No longer shows a shell process waiting for ps to finish. PR: bin/113860 Reviewed by: stefanf Approved by: ed (mentor)
* Don't skip forking for an external command if any traps are active.jilles2009-06-133-1/+17
| | | | | | | | | | | | | | | | | Example: sh -c '(trap "echo trapped" EXIT; sleep 3)' now correctly prints "trapped". With this check, it is no longer necessary to check for -T explicitly in that case. This is a useful bugfix by itself and also important because I plan to skip forking more often. PR: bin/113860 (part of) PR: bin/74404 (part of) Reviewed by: stefanf Approved by: ed (mentor)
* Mention the range for the exit status for the exit special builtin.jilles2009-06-071-0/+1
| | | | | | | | | | | The exit status may exceed 255 in some cases (return); even though it seems unwise to rely on this, it is also unwise to assume that $? is always between 0 and 255. This resolves bin/124748 by documenting that 'exit -1' is not valid. PR: bin/124748 Approved by: ed (mentor)
* Make "human-readable" (-H/-h) output also "humanize" inode counts.simon2009-06-072-6/+37
| | | | | | | | | Base 10 is always used for the inode counts as I could not think of any reason base 2 inode counts would be useful. Minor mdoc markup fix to df(1) while here anyway. MFC after: 3 weeks
* use explicit 'unsigned int' instead of just the implicit-style 'unsigned' to ↵rse2009-06-011-1/+1
| | | | make linting tools (e.g. FlexeLint) happy, too
* align coding style with style(9) to avoid misunderstandingsrse2009-06-011-1/+2
|
* correctly test for __GNUC__ macro (non-GCC compilers do not have it defined ↵rse2009-06-013-4/+4
| | | | at all)
* be more type correct and align local ckmalloc() with its underlying ↵rse2009-06-014-5/+7
| | | | malloc(3) by using a "size_t" instead of an "int" argument
* sh: Make read's timeout (-t) apply to the entire line, not only the firstjilles2009-05-312-19/+2
| | | | | | | | | | | | | | | | character. This avoids using non-standard behaviour of the old (upto FreeBSD 7) TTY layer: it reprocesses the input queue when switching to canonical mode. The new TTY layer does not provide this functionality and so read -t worked very poorly (first character is not echoed, cannot be backspaced but is still read). This also agrees with what most other shells with read -t do. PR: bin/129566 Reviewed by: stefanf Approved by: ed (mentor)
* Fix the eval command in combination with set -e. Before this change the shellstefanf2009-05-315-9/+11
| | | | | | | | | would always terminate if eval returned with a non-zero exit status regardless if the status was actually tested. Unfortunately a new file-scope variable is needed, the alternative would only be to add a new parameter to all built-ins. PR: 134881
* rm, find -delete: fix removing symlinks with uchg/uappnd set.jilles2009-05-301-3/+3
| | | | | | | | | | | | Formerly, this tried to clear the flags on the symlink's target instead of the symlink itself. As before, this only happens for root or for the unlink(1) variant of rm. PR: bin/111226 (part of) Submitted by: Martin Kammerhofer Approved by: ed (mentor) MFC after: 3 weeks
* Preserve file flags on symlinks in cp -Rp.jilles2009-05-301-1/+1
| | | | | | | | | This reported ENOSYS before. PR: bin/111226 (part of) Submitted by: Martin Kammerhofer Approved by: ed (mentor) MFC after: 3 weeks
* Fix various cases with 3 or 4 parameters in test(1) to be POSIX compliant.jilles2009-05-262-9/+99
| | | | | | | | | | | | | | | | | | More precisely, this gives precedence to an interpretation not using the '(', ')', '-a' and '-o' in their special meaning, if possible. For example, it is now safe to write [ "$a" = "$b" ] and assume it compares the two strings. The man page already says that test(1) works this way, so does not need to be changed. Interpretation of input with more parameters tries a bit harder to find a valid parse in some cases. Add various additional test cases to TEST.sh. PR: standards/133369 Approved by: ed (mentor)
OpenPOWER on IntegriCloud