Author: jilles
Date: Wed Nov 28 20:03:53 2018
New Revision: 341164
URL: https://svnweb.freebsd.org/changeset/base/341164

Log:
  sh: Fix ${param?} default error message
  
  If word in ${param?word} is missing, the shell shall write a default error
  message. So expanding ${param?} when param is not set should write an error
  message like
  
  sh: param: parameter not set
  
  This was broken by r316417.
  
  PR:           233585

Added:
  head/bin/sh/tests/expansion/question2.0   (contents, props changed)
Modified:
  head/bin/sh/expand.c
  head/bin/sh/tests/expansion/Makefile

Modified: head/bin/sh/expand.c
==============================================================================
--- head/bin/sh/expand.c        Wed Nov 28 19:54:02 2018        (r341163)
+++ head/bin/sh/expand.c        Wed Nov 28 20:03:53 2018        (r341164)
@@ -623,10 +623,11 @@ static const char *
 subevalvar_misc(const char *p, struct nodelist **restrict argbackq,
     const char *var, int subtype, int startloc, int varflags)
 {
+       const char *end;
        char *startp;
        int amount;
 
-       p = argstr(p, argbackq, EXP_TILDE, NULL);
+       end = argstr(p, argbackq, EXP_TILDE, NULL);
        STACKSTRNUL(expdest);
        startp = stackblock() + startloc;
 
@@ -635,7 +636,7 @@ subevalvar_misc(const char *p, struct nodelist **restr
                setvar(var, startp, 0);
                amount = startp - expdest;
                STADJUST(amount, expdest);
-               return p;
+               return end;
 
        case VSQUESTION:
                if (*p != CTLENDVAR) {

Modified: head/bin/sh/tests/expansion/Makefile
==============================================================================
--- head/bin/sh/tests/expansion/Makefile        Wed Nov 28 19:54:02 2018        
(r341163)
+++ head/bin/sh/tests/expansion/Makefile        Wed Nov 28 20:03:53 2018        
(r341164)
@@ -86,6 +86,7 @@ ${PACKAGE}FILES+=     plus-minus7.0
 ${PACKAGE}FILES+=      plus-minus8.0
 ${PACKAGE}FILES+=      plus-minus9.0
 ${PACKAGE}FILES+=      question1.0
+${PACKAGE}FILES+=      question2.0
 ${PACKAGE}FILES+=      readonly1.0
 ${PACKAGE}FILES+=      redir1.0
 ${PACKAGE}FILES+=      set-u1.0

Added: head/bin/sh/tests/expansion/question2.0
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/bin/sh/tests/expansion/question2.0     Wed Nov 28 20:03:53 2018        
(r341164)
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+unset dummyvar
+msg=`(: ${dummyvar?}) 2>&1`
+r=$?
+[ "$r" != 0 ] && case $msg in
+*dummyvar?* | *?dummyvar*) : ;;
+*)
+       printf 'Bad message: [%s]\n' "$msg"
+       exit 1
+esac
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to