Skip to content
Snippets Groups Projects
  1. May 17, 2018
  2. May 15, 2018
  3. May 10, 2018
  4. May 09, 2018
    • Herbert Xu's avatar
      jobs - Do not block when waiting on SIGCHLD · 9e5cd41d
      Herbert Xu authored
      
      Because of the nature of SIGCHLD, the process may have already been
      waited on and therefore we must be prepared for the case that wait
      may block.  So ensure that it doesn't by using WNOHANG.
      
      Furthermore, multiple jobs may have exited when gotsigchld is set.
      Therefore we need to wait until there are no zombies left.
      
      Lastly, waitforjob needs to be called with interrupts off and
      the original patch broke that.
      
      Fixes: 03876c07 ("eval: Reap zombies after built-in...")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      9e5cd41d
  5. May 03, 2018
  6. Apr 19, 2018
    • Herbert Xu's avatar
      eval: Variable assignments on functions are no longer persistent · 3cd57b6e
      Herbert Xu authored
      Dirk Fieldhouse <fieldhouse@gmx.net> wrote:
      >
      > In POSIX.1-2017 ("simultaneously IEEE Std 1003.1™-2017 and The Open
      > Group Technical Standard Base Specifications, Issue 7")
      > <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09
      
      >,
      > we read under '2.9.1 Simple Commands'
      >
      > "Variable assignments shall be performed as follows:
      > ...
      > -    If the command name is a standard utility implemented as a function
      > (see XBD Utility), the effect of variable assignments shall be as if the
      > utility was not implemented as a function.
      > ...
      > -    If the command name is a function that is not a standard utility
      > implemented as a function, variable assignments shall affect the current
      > execution environment during the execution of the function. It is
      > unspecified:
      >
      >     *   Whether or not the variable assignments persist after the
      > completion of the function
      >
      >     *   Whether or not the variables gain the export attribute during
      > the execution of the function
      >
      >     *   Whether or not export attributes gained as a result of the
      > variable assignments persist after the completion of the function (if
      > variable assignments persist after the completion of the function)"
      
      POSIX used to require the current dash behaviour.  However, you're
      right that this is no longer the case.
      
      This patch will remove the persistence of the variable assignment.
      
      I have considered the exporting the variables during the function
      execution but have decided against it because:
      
      1) It makes the code bigger.
      2) dash has never done this in the past.
      3) You cannot use this portably anyway.
      
      Reported-by: default avatarDirk Fieldhouse <fieldhouse@gmx.net>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      3cd57b6e
    • Herbert Xu's avatar
      parser: Fix parameter expansion inside inner double quotes · 48ca0086
      Herbert Xu authored
      
      The parsing of parameter expansion inside inner double quotes
      breaks because we never look for ENDVAR while innerdq is true.
      
      	echo "${x#"${x+''}"''}
      
      This patch fixes it by pushing the syntax stack if innerdq is
      true and we enter a new parameter expansion.
      
      This patch also fixes a corner case where a bad substitution error
      occurs within arithmetic expansion.
      
      Reported-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
      Fixes: ab1cecb4 (" parser: Add syntax stack for recursive...")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      48ca0086
    • Herbert Xu's avatar
      parser: Fix parsing of ${} · 6348e861
      Herbert Xu authored
      
      dash -c 'echo ${}' should print "Bad subtitution" but instead
      fails with "Syntax error: Missing '}'".  This is caused by us
      reading an extra character beyond the right brace.  This patch
      fixes it so that this construct only fails during expansion rather
      than during parsing.
      
      Fixes: 3df3edd1 ("[PARSER] Report substition errors at...")
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      6348e861
    • Martijn Dekker's avatar
      man: correct typos, iff -> if · 87a94a4d
      Martijn Dekker authored
      
      Op 27-03-18 om 20:23 schreef Larry Hynes:
      > Funny, I did wonder if it might be a contraction, but I did find
      > it odd that it's not mentioned or explained. I'll leave it be, if
      > you all are happy enough to keep it 'as is', or can resubmit if you
      > think it's warranted.
      
      I think the simple fact that it came up here is evidence that this is
      too jargony for a manual. Patch attached.
      
      - M.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      87a94a4d
    • Herbert Xu's avatar
      expand: Do not quote backslashes in unquoted parameter expansion · 33118165
      Herbert Xu authored
      On Mon, Mar 26, 2018 at 07:25:20PM +0200, Martijn Dekker wrote:
      > Op 26-03-18 om 17:38 schreef Harald van Dijk:
      > > And not by dash 0.5.4. Like I wrote, dash 0.5.5 had some bugs that were
      > > fixed in 0.5.6, which mostly restored the behaviour to match <0.5.5.
      >
      > Ah, sorry. dash 0.5.4 and earlier don't compile on my system, so they
      > are not included in my conveniently accessible arsenal of test shells.
      >
      > > As for my patches, that was by accident and doesn't work reliably. When
      > > the shell sees no metacharacters, pathname expansion is bypassed, and
      > > backslash isn't considered a metacharacter. Which got me to my original
      > > example of /de\v: there are no metacharacters in there, so the shell
      > > doesn't look to see if it matches anything. Which seems highly
      > > desirable: the shell shouldn't need to hit the file system for words not
      > > containing metacharacters. The only way then to get consistent behaviour
      > > is if the backslash is taken as quoted, so I'm not tempted to argue for
      > > the behaviour you're hoping for, sorry. :)
      
      Here is a better example:
      
      	a="/*/\nullx" b="/*/\null"; printf "%s\n" $a $b
      
      dash currently prints
      
      	/*/\nullx
      	/*/\null
      
      bash prints
      
      	/*/\nullx
      	/dev/null
      
      You may argue the bash behaviour is inconsistent but it actually
      makes sense.  What happens is that quote removal only applies to
      the original token as seen by the shell.  It is never applied to
      the result of parameter expansion.
      
      Now you may ask why on earth does the second line say "/dev/null"
      instead of "/dev/\null".  Well that's because it is not the quote
      removal step that removed the backslash, but the pathname expansion.
      
      The fact that the /de\v does not become /dev even though it exists
      is just the result of the optimisation to avoid unnecessarily
      calling stat(2).  I have checked POSIX and I don't see anything
      that forbids this behaviour.
      
      So going back to dash yes I think we should adopt the bash behaviour
      for pathname expansion and keep the existing case semantics.
      
      This patch does exactly that.  Note that this patch does not work
      unless you have already applied
      
      	https://patchwork.kernel.org/patch/10306507/
      
      
      
      because otherwise the optimisation mentioned above does not get
      detected correctly and we will end up doing quote removal twice.
      
      This patch also updates expmeta to handle naked backslashes at
      the end of the pattern which is now possible.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      33118165
    • Jason Bowen's avatar
      shell: Add subdir-objects to AM_INIT_AUTOMAKE · e6957747
      Jason Bowen authored
      
      I've attached a patch which adds the subdir-objects option to AM_INIT_AUTOMAKE.
      
      For a while now when I've compiled dash I received a warning from
      automake that there are source files in a subdirectory but that the
      subdir-objects automake option was not supplied. I've just been adding
      it myself, but I finally got around to submitting a patch. The code
      still compiles for now (i'm using automake 1.15.1), but warning text
      is rarely nice to see and, if the warning text is to be believed, then
      the warning will eventually become an error.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      e6957747
    • Herbert Xu's avatar
      eval: Restore input files in evalcommand · 46d5a7fc
      Herbert Xu authored
      
      When evalcommand invokes a command that modifies parsefile and
      then bails out without popping the file, we need to ensure the
      input file is restored so that the shell can continue to execute.
      
      Reported-by: default avatarMartijn Dekker <martijn@inlv.org>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      46d5a7fc
    • Herbert Xu's avatar
      eval: Reap zombies after built-in commands and functions · 03876c07
      Herbert Xu authored
      
      Currently dash does not reap dead children after built-in commands
      or functions.  This means that if you construct a loop consisting
      of solely built-in commands and functions, then zombies can hang
      around indefinitely.
      
      This patch fixes this by reaping when necessary after each built-in
      command and function.
      
      Reported-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      03876c07
    • Herbert Xu's avatar
      redir: Fix typo in noclobber code · c22e9cc6
      Herbert Xu authored
      
      The noclobber code has a typo in it that causes it to fail.  This
      patch fixes it.
      
      Reported-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      c22e9cc6
    • Herbert Xu's avatar
      expand: Fix glibc glob(3) support · 6900ff60
      Herbert Xu authored
      
      It's been a while since we disabled glob(3) support by default.
      It appears to be working now, however, we have to change our
      code to detect the no-match case correctly.
      
      In particular, we need to test for GLOB_NOMAGIC | GLOB_NOCHECK
      instead of GLOB_MAGCHAR.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      6900ff60
  7. Apr 02, 2018
    • Herbert Xu's avatar
      expand: Fix buffer overflow in expandmeta · 0f3806dd
      Herbert Xu authored
      
      The native version of expandmeta allocates a buffer that may be
      overrun for two reasons.  First of all the size is 1 byte too small
      but this is normally hidden because the minimum size is rounded
      up to 2048 bytes.  Secondly, if the directory level is deep enough,
      any buffer can be overrun.
      
      This patch fixes both problems by calling realloc when necessary.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      0f3806dd
    • Herbert Xu's avatar
      builtin: Move echo space/nl handling into print_escape_str · 325a460c
      Herbert Xu authored
      
      Currently echocmd uses print_escape_str to do everything apart
      from printing the spaces/newlines separating its arguments.  This
      patch moves the actual printing into print_escape_str as well
      using the format parameter.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      325a460c
    • Herbert Xu's avatar
      builtin: Fix echo performance regression · 42b730b0
      Herbert Xu authored
      
      The commit d6c0e1e2 ("[BUILTIN]
      Handle embedded NULs correctly in printf") caused a performance
      regression in the echo built-in because every echo call now goes
      through the printf %b slow path where the string is always printed
      twice to ensure the space padding is correct in the presence of
      NUL characters.  In fact this regression applies to printf %b as
      well.
      
      This is easily fixed by making printf %b take the fast path when
      no precision/field width modifiers are present.
      
      This patch also changes the second strchurnul call to strspn which
      generates slightly better code.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      42b730b0
    • Herbert Xu's avatar
      expand: Fix ghost fields with unquoted $@/$* · 36128c90
      Herbert Xu authored
      
      Harald van Dijk <harald@gigawatt.nl> wrote:
      > On 22/03/2018 22:38, Martijn Dekker wrote:
      >> Op 22-03-18 om 20:28 schreef Harald van Dijk:
      >>> On 22/03/2018 03:40, Martijn Dekker wrote:
      >>>> This patch fixes the bug that, given no positional parameters, unquoted
      >>>> $@ and $* incorrectly generate one empty field (they should generate no
      >>>> fields). Apparently that was a side effect of the above.
      >>>
      >>> This seems weird though. If you want to remove the recording of empty
      >>> regions because they are pointless, then how does removing them fix a
      >>> bug? Doesn't this show that empty regions do have an effect? Perhaps
      >>> they're not supposed to have any effect, perhaps it's a specific
      >>> combination of empty regions and something else that triggers some bug,
      >>> and perhaps that combination can no longer occur with your patch.
      >>
      >> The latter is my guess, but I haven't had time to investigate it.
      >
      > Looking into it again:
      >
      > When IFS is set to an empty string, sepc is set to '\0' in varvalue().
      > This then causes *quotedp to be set to true, meaning evalvar()'s quoted
      > variable is turned on. quoted is then passed to recordregion() as the
      > nulonly parameter.
      >
      > ifsp->nulonly has a bigger effect than merely selecting whether to use
      > $IFS or whether to only split on null bytes: in ifsbreakup(), nulonly
      > also causes string termination to be suppressed. That's correct: that
      > special treatment is required to preserve empty fields in "$@"
      > expansion. But it should *only* be used when $@ is quoted: ifsbreakup()
      > takes nulonly from the last IFS region, even if it's empty, so having an
      > additional zero-length region with nulonly enabled causes confusion.
      >
      > Passing quoted by value to varvalue() and not attempting to modify it
      > should therefore, and in my quick testing does, also work to fix the
      > original $@ bug.
      
      You're right.  The proper fix to this is to ensure that nulonly
      is not set in varvalue for $*.  It should only be set for $@ when
      it's inside double quotes.
      
      In fact there is another bug while we're playing with $@/$*.
      When IFS is set to a non-whitespace character such as :, $*
      outside quotes won't remove empty fields as it should.
      
      This patch fixes both problems.
      
      Reported-by: default avatarMartijn Dekker <martijn@inlv.org>
      Suggested-by: default avatarHarald van Dijk <harald@gigawatt.nl>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      36128c90
    • Herbert Xu's avatar
      parser: Allow newlines within parameter substitution · dad1cb18
      Herbert Xu authored
      
      On Fri, Mar 16, 2018 at 11:27:22AM +0800, Herbert Xu wrote:
      > On Thu, Mar 15, 2018 at 10:49:15PM +0100, Harald van Dijk wrote:
      > >
      > > Okay, it can be trivially modified to something that does work in other
      > > shells (even if it were actually executed), but gets rejected at parse time
      > > by dash:
      > >
      > >   if false; then
      > >     : ${$+
      > >   }
      > >   fi
      >
      > That's just a bug in dash's parser with ${} in general, because
      > it bombs out without the if clause too:
      >
      > 	: ${$+
      > 	}
      
      This patch fixes the parsing of newlines with parameter substitution.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      dad1cb18
    • Herbert Xu's avatar
      expand: Fix bugs with words connected to the right of $@ · f8807824
      Herbert Xu authored
      
      On Sun, Mar 04, 2018 at 12:44:59PM +0100, Harald van Dijk wrote:
      >
      > command:      set -- a ""; space=" "; printf "<%s>" "$@"$space
      > bash:         <a><>
      > dash 0.5.8:   <a>< >
      > dash 0.5.9.1: <a>< >
      > dash patched: <a><>
      
      This is actually composed of two bugs.  First of all our tracking
      of quotemark is wrong so anything after "$@" becomes quoted.  Once
      we fix that then the problem is that the first space character
      after "$@" is not recognised as an IFS.
      
      This patch fixes both.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      f8807824
  8. Mar 25, 2018
  9. Mar 21, 2018
    • Herbert Xu's avatar
      parser: Fix backquote support in here-document EOF mark · c166b718
      Herbert Xu authored
      
      Currently using backquotes in a here-document EOF mark is broken
      because dash tries to do command substitution on it.  This patch
      fixes it by checking whether we're looking for an EOF mark during
      tokenisation.
      
      Reported-by: default avatarHarald van Dijk <harald@gigawatt.nl>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      c166b718
    • Martijn Dekker's avatar
      shell: provide .gitignore · e006ef83
      Martijn Dekker authored
      
      Here's a .gitignore file for the convenience of casual git users.
      
      - M.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      e006ef83
    • Herbert Xu's avatar
      parser: Fix single-quoted patterns in here-documents · 9ee33439
      Herbert Xu authored
      
      The script
      
      	x=*
      	cat <<- EOF
      		${x#'*'}
      	EOF
      
      prints * instead of nothing as it should.  The problem is that
      when we're in sqsyntax context in a here-document, we won't add
      CTLESC as we should.  This patch fixes it:
      
      Reported-by: default avatarHarald van Dijk <harald@gigawatt.nl>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      9ee33439
    • Herbert Xu's avatar
      parser: Add syntax stack for recursive parsing · ab1cecb4
      Herbert Xu authored
      
      Without a stack of syntaxes we cannot correctly these two cases
      together:
      
              "${a#'$$'}"
              "${a#"${b-'$$'}"}"
      
      A recursive parser also helps in some other corner cases such
      as nested arithmetic expansion with paratheses.
      
      This patch adds a syntax stack allocated from the stack using
      alloca.  As a side-effect this allows us to remove the naked
      backslashes for patterns within double-quotes, which means that
      EXP_QPAT also has to go.
      
      This patch also fixes removes any backslashes that precede right
      braces when they are present within a parameter expansion context,
      and backslashes that precede double quotes within inner double
      quotes inside a parameter expansion in a here-document context.
      
      The idea of a recursive parser is based on a patch by Harald van
      Dijk.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      ab1cecb4
    • Harald van Dijk's avatar
      parser: use pgetc_eatbnl() in more places · 6bbc71d8
      Harald van Dijk authored
      
      dash has a pgetc_eatbnl function in parser.c which skips any
      backslash-newline combinations. It's not used everywhere it could be.
      There is also some duplicated backslash-newline handling elsewhere in
      parser.c. Replace most of the calls to pgetc() with calls to
      pgetc_eatbnl() and remove the duplicated backslash-newline handling.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      6bbc71d8
    • Martijn Dekker's avatar
      builtin: Greater resolution in test -nt / test -ot · fc914153
      Martijn Dekker authored
      
      Op 07-03-18 om 15:46 schreef Martijn Dekker:
      > Op 06-03-18 om 09:19 schreef Herbert Xu:
      >> On Thu, Jun 22, 2017 at 10:30:02AM +0200, Petr Skočík wrote:
      >>> would you be willing to pull something like this?
      > [...]
      >>> I could use greater resolution in `test -nt` / `test -ot`, and st_mtim
      >>> field is standardized under POSIX.1-2008 (or so stat(2) says).
      >>
      >> Sure.  But your patch is corrupted.
      >
      > Fixed patch attached.
      >
      > But I wouldn't apply it as is. My system does not have st_mtim. So I
      > think it needs a configure test and a fallback to the old method.
      
      Here's an attempt to make that happen. See attached.
      
      - M.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      fc914153
  10. Mar 10, 2018
    • Martijn Dekker's avatar
      mystring: fix "Illegal number" on FreeBSD & macOS for x=; echo $((x)) · 2b3fb53c
      Martijn Dekker authored
      
      Op 07-03-18 om 06:26 schreef Herbert Xu:
      > Martijn Dekker <martijn@inlv.org> wrote:
      >>
      >>> Since base is always a constant 0 or a constant 10, never a
      >>> user-provided value, the only error that strtoimax will ever report on
      >>> glibc systems is ERANGE. Checking only ERANGE therefore preserves the
      >>> glibc behaviour, and allows the exact same set of errors to be detected
      >>> on non-glibc systems.
      >>
      >> That makes sense, thanks.
      >
      > Could you resend your patch with this change please?
      
      OK, see below.
      
      - M.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      2b3fb53c
    • Martijn Dekker's avatar
      expand: 'nolog' and 'debug' options cause "$-" to wreak havoc · 81a501b7
      Martijn Dekker authored
      
      Op 29-03-17 om 20:02 schreef Martijn Dekker:
      > Bug: if either the 'nolog' or the 'debug' option is set, trying to
      > expand "$-" silently aborts parsing of an entire argument.
      >
      > $ dash -o nolog -c 'set -fuC; echo "|$- are the options|"; \
      > 	set +o nolog; echo "|$- are the options|"'
      > |
      > |uCf are the options|
      > $ dash -o debug -c 'set -fuC; echo "|$- are the options|"; \
      > 	set +o debug; echo "|$- are the options|"'
      > |
      > |uCf are the options|
      
      This turned out to be easy to fix. The routine producing the "$-"
      expansion failed to skip options for which there is no option letter,
      but only a long-form name. In dash, 'nolog' and 'debug' are currently
      the only two such options. Patch below.
      
      - Martijn
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      81a501b7
    • Baruch Siach's avatar
      histedit: fix build with musl libc · 523d2487
      Baruch Siach authored
      
      musl libc defines the optreset BSD extension only in getopt.h. This
      fixes the following build failure:
      
      histedit.c: In function 'histcmd':
      histedit.c:220:2: error: 'optreset' undeclared (first use in this function)
        optreset = 1; optind = 1; /* initialize getopt */
        ^~~~~~~~
      
      Signed-off-by: default avatarBaruch Siach <baruch@tkos.co.il>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      523d2487
    • Rink Springer's avatar
      expand: Remove dependency on fmatch.h if it does not exit · 556e2f03
      Rink Springer authored
      
      [ Ugh; forgot to attach patch - apologies, I need more coffee ]
      
      Dear all,
      
      Attached is a trivial patch that removes the assumption that fnmatch.h
      is available - the configure script already checks for fnmatch(3) and
      supplies its own implementation if necessary, but fnmatch.h is always
      included.
      
      Let me know what you think.
      
      Regards,
      Rink
      
      Do not assume we can include fnmatch.h
      
      Signed-off-by: default avatarRink Springer <rink@rink.nu>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      556e2f03
    • Harald van Dijk's avatar
      input: Fix here-document redirection with vi/emacs on · 7f31919c
      Harald van Dijk authored
      
      On 27/06/17 16:29, Zando Fardones wrote:
      > Hello,
      >
      > I think I've found a bug when using the here-document redirection in
      > an interactive shell. What basically happens is that you can't see the
      > command output if you set the "vi" or "emacs" options.
      
      That's not quite what happens: the here-document contents got lost, so
      there is no command output to see. Nice find.
      
      The problem is that getprompt() is implicitly called by el_gets(). This
      messes with the memory used by the parser to store the here-document's
      contents. In the non-emacs/vi case, the prompt is explicitly written by
      setprompt(), which wraps the getprompt() call in a
      pushstackmark()/popstackmark() pair to restore the state so that parsing
      can continue. But when getprompt() is called by el_gets(), it knows
      nothing about this.
      
      The whole call to el_gets() can be surrounded by another
      pushstackmark()/popstackmark() pair to solve the problem, as attached.
      
      Cheers,
      Harald van Dijk
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      7f31919c
    • Larry Hynes's avatar
      man: Small cleanup for Command Line Editing · 68dac4c5
      Larry Hynes authored
      
      Jilles Tjoelker <jilles@stack.nl> wrote:
      > On Sat, Jun 17, 2017 at 03:53:26PM +0100, Larry Hynes wrote:
      >> src/dash.1, under Command Line Editing, states:
      
      >>       It's similar to vi: typing <ESC> will throw you into command
      >>       VI command mode.
      
      >> - There appears to be no need for both occurrences of 'command'
      >> - I can't see a reason for VI to be capitalised
      >> - 'will throw you into' seems a little... enthusiastic
      
      >> Following diff changes it to
      
      >>       It's similar to vi: typing <ESC> enters vi command mode.
      
      >> diff --git a/src/dash.1 b/src/dash.1
      >> index 8b8026d..f35d89d 100644
      >> --- a/src/dash.1
      >> +++ b/src/dash.1
      >> @@ -2232,7 +2232,7 @@ enabled, sh can be switched between insert mode and command mode.
      >>  The editor is not described in full here, but will be in a later document.
      >>  It's similar to vi: typing
      >>  .Aq ESC
      >> -will throw you into command VI command mode.
      >> +enters vi command mode.
      >>  Hitting
      >>  .Aq return
      >>  while in command mode will pass the line to the shell.
      
      > I agree. If you're changing things here anyway, I suggest getting rid of
      > the contraction as well (changing It's to It is). The fairly formal
      > style of man pages avoids contractions, just like it avoids "you".
      
      > The reference to the "later document" can probably be removed as well,
      > since said document does not exist yet after many years.
      
      Hi
      
      Revised diff, below, expands the contraction, deletes reference to
      'later document' and changes 'place' to 'places' in the following:
      
      	The command ‘set -o vi’ enables vi-mode editing and place sh
      	into vi insert mode.
      
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      68dac4c5
    • Harald van Dijk's avatar
      builtin: describe_command - fix incorrect path · f19f3b39
      Harald van Dijk authored
      
      Hi,
      
      On 26/05/17 09:04, Youfu Zhang wrote:
      > $ PATH=/extra/path:/usr/sbin:/usr/bin:/sbin:/bin \
      >> sh -xc 'command -V ls; command -V ls; command -Vp ls; command -vp ls'
      > + command -V ls
      > ls is /bin/ls
      > + command -V ls
      > ls is a tracked alias for /bin/ls
      > + command -Vp ls
      > ls is a tracked alias for (null)
      > + command -vp ls
      > Segmentation fault (core dumped)
      >
      > describe_command should respect `path' argument. Looking up in the hash table
      > may gives incorrect index in entry.u.index and finally causes incorrect output
      > or SIGSEGV.
      
      True, but only when a path is passed in. If the default path is used,
      looking up in the hash table is correct, and printing tracked aliases is
      intentional.
      
      If it's desirable to drop that feature, then it should be dropped
      completely, code shouldn't be left in that can no longer be used. But
      it's possible to keep it working: how about this instead?
      
      Signed-off-by: default avatarHarald van Dijk <harald@gigawatt.nl>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      f19f3b39
    • Denys Vlasenko's avatar
      trap: Globally rename pendingsigs to pending_sig · 53dab360
      Denys Vlasenko authored
      
      This variable does not contain "sigs" (plural).
      It contains either 0 or (one) signal number of a pending signal.
      
      For someone unfamiliar with this code, "pendingsigs" name is confusing -
      it hints at being an array or bit mask of pending singnals.
      
      Signed-off-by: default avatarDenys Vlasenko <dvlasenk@redhat.com>
      CC: dash@vger.kernel.org
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      53dab360
  11. Sep 23, 2016
  12. Sep 02, 2016
Loading