diff options
-rw-r--r-- | common/expr.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/common/expr.c b/common/expr.c index 4f957ee..36f3f3d 100644 --- a/common/expr.c +++ b/common/expr.c @@ -124,10 +124,19 @@ MUST_USE static const char *parse_dollar_expression( { /* if variable is set, substitute remainer */ (*ptr)+=2; - if (parse_expression(str,ptr,'}',buffer,buflen,expander,expander_arg)==NULL) - return NULL; - if ((varvalue==NULL)||(*varvalue=='\0')) + if ((varvalue!=NULL)&&(*varvalue!='\0')) + { + /* value is set, evaluate rest of expression */ + if (parse_expression(str,ptr,'}',buffer,buflen,expander,expander_arg)==NULL) + return NULL; + } + else + { + /* value is not set, skip rest of expression and blank */ + if (parse_expression(str,ptr,'}',buffer,buflen,empty_expander,NULL)==NULL) + return NULL; buffer[0]='\0'; + } } else return NULL; |