URI: 
       bc: Unify local() and param() - sbase - suckless unix tools
  HTML git clone git://git.suckless.org/sbase
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit c6cbb33ef02075c21b519bb59e1c69f74ff8470f
   DIR parent ec8218c93bb19777f212addf94544ac01c3012c2
  HTML Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
       Date:   Thu, 11 Dec 2025 12:43:42 +0100
       
       bc: Unify local() and param()
       
       These functions only differentiate in a single letter, so it
       was a good opportunity to merge them. Also, it was a good idea
       to add the values in reverse order to make the output more
       similar to other bc implementations.
       
       Diffstat:
         M bc.y                                |      29 ++++++++++++++++-------------
       
       1 file changed, 16 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/bc.y b/bc.y
       @@ -88,7 +88,7 @@ int cflag, dflag, lflag, sflag;
        %token SCALE
        %token IBASE
        %token OBASE
       -%token AUTO
       +%token AUTO PARAM
        %token PRINT
        
        %type <str> item statlst scolonlst
       @@ -381,7 +381,7 @@ macro(int op)
        }
        
        static char *
       -param(char *list, char *id)
       +decl(int type, char *list, char *id)
        {
                char *i1, *i2;
        
       @@ -389,23 +389,26 @@ param(char *list, char *id)
                i2 = estrdup(id);
                free(id);
        
       -        unwind = code(unwind ? "L%ss.%s" : "L%ss.", i1, unwind);
       +        if (!unwind)
       +                unwind = estrdup("");
       +        if (!list)
       +                list = estrdup("");
       +
       +        unwind = code("%sL%ss.", unwind, i1);
        
       -        return code(list ? "S%s%s" : "S%s" , i2, list);
       +        return code((type == AUTO) ? "0S%s%s" : "S%s%s", i2, list);
        }
        
        static char *
       -local(char *list, char *id)
       +param(char *list, char *id)
        {
       -        char *i1, *i2;
       -
       -        i1 = estrdup(id);
       -        i2 = estrdup(id);
       -        free(id);
       -
       -        unwind = code(unwind ? "L%ss.%s" : "L%ss.", i1, unwind);
       +        return decl(PARAM, list, id);
       +}
        
       -        return code(list ? "0S%s%s" : "0S%s" , i2, list);
       +static char *
       +local(char *list, char *id)
       +{
       +        return decl(AUTO, list, id);
        }
        
        static char *