cvs commit: src/bin/sh exec.c exec.h

Stefan Farfeleder stefanf at FreeBSD.org
Sun Apr 9 12:21:21 UTC 2006


stefanf     2006-04-09 12:21:20 UTC

  FreeBSD src repository

  Modified files:
    bin/sh               exec.c exec.h 
  Log:
  Implement some of the differences between special built-ins and other builtins
  demanded by POSIX.
  - A redirection error is only fatal (meaning the execution of a shell script is
    terminated) for special built-ins.  Previously it was fatal for all shell
    builtins, causing problems like the one reported in PR 88845.
  - Variable assignments remain in effect for special built-ins.
  - Option or operand errors are only fatal for special built-ins.
  This change also makes errors from 'fc' non-fatal (I could not find any reasons
  for this behaviour).
  
  Somewhat independently from the above down-grade the error handling in the
  shift built-in if the operand is bigger than $# from an error() call (which is
  now fatal) to a return 1.  I'm not sure if this should be considered a POSIX
  "operand error", however this change is needed for now as we trigger that error
  while building libncurses.  Comparing with other shells, zsh does the same as
  our sh before this change (write a diagnostic, return 1), bash behaves as our
  sh after this commit (no diagnostic, return 1) and ksh93 and NetBSD's sh treat
  it as a fatal error.
  
  Revision  Changes    Path
  1.29      +11 -4     src/bin/sh/exec.c
  1.15      +2 -1      src/bin/sh/exec.h


More information about the cvs-src mailing list