On 29/12/13 14:55, Ted Zlatanov wrote:
>
> In libpromises/evalfunction.c:
>
> > @@ -4807,6 +4807,83 @@ static FnCallResult FnCallSplitString(EvalContext *ctx, FnCall *fp, Rlist *final
> >      return (FnCallResult) { FNCALL_SUCCESS, { newlist, RVAL_TYPE_LIST } };
> >  }
> >
> > +
> > +/*********************************************************************/
> > +
> > +static FnCallResult FnCallMakeFrom(EvalContext *ctx, FnCall *fp, Rlist *finalargs)
> > +{
> > +    const char *target = RlistScalarValue(finalargs);
> > +    const char *listvar = RlistScalarValue(finalargs->next);
> > +    Rlist *list = NULL;
> > +    struct stat statbuf;
> > +    bool result = false;
> > +    time_t target_time = 0;
> > +
> > +    if (!IsVarList(listvar))
> > +    {
> > +        RlistPrepend(&list, listvar, RVAL_TYPE_SCALAR);
>
> If I understand correctly, this would make it really hard to pass |x| 
> as a scalar if there's a list called |x| in scope.
>
> —
> Reply to this email directly or view it on GitHub 
> <https://github.com/cfengine/core/pull/1232/files#r8578938>.
>

Not sure I understand you, but lists and scalars cannot block one 
another. A list of source files would be clearly marked @(list)


M

-- 
Founder and CTO at CFEngine
Author of In Search of Certainty: The Science of our Information 
Infrastructure <http://markburgess.org/certainty.html>