On Sun, Jul 17, 2016 at 07:20:48PM +0200, Otto Moerbeek wrote:
> On Sun, Jul 17, 2016 at 12:51:03PM -0300, Henrique N. Lengler wrote:
> 
> > Hi,
> > 
> > I'm new on bc, I'm writing a library with some math functions I intend to 
> > use
> > on calculations.
> > I would like to use long names for variables and functions on my library
> > but also use functions from the main math library, which I do by calling bc
> > with '-l' flag. But once I start bc with '-l' I can't use any long name, 
> > why?
> > 
> > Is there a way to change this behaviour?
> > Why it works like this?
> > 
> > Regards,
> > 
> > Henrique N. Lengler
> 
> This is a bug introduced by not execing dc anymore, but calling the
> dc code as a function.
> 
> In that case getopt is called a second time for a new set of
> parameters and it has to be reinitialized,
> 
> The code below should fix it. Recompile both dc and bc after patching.
> 
>       -Otto
> 
> Index: dc.c
> ===================================================================
> RCS file: /cvs/src/usr.bin/dc/dc.c,v
> retrieving revision 1.17
> diff -u -p -r1.17 dc.c
> --- dc.c      3 Nov 2015 04:58:58 -0000       1.17
> +++ dc.c      17 Jul 2016 17:20:19 -0000
> @@ -50,6 +50,8 @@ dc_main(int argc, char *argv[])
>       if ((buf = strdup("")) == NULL)
>               err(1, NULL);
>       /* accept and ignore a single dash to be 4.4BSD dc(1) compatible */
> +     optind = 1;
> +     optreset = 1;
>       while ((ch = getopt(argc, argv, "e:x-")) != -1) {
>               switch (ch) {
>               case 'e':

Will try it, shouldn't this patch go to the repository?

Regards,

Henrique N. Lengler

Reply via email to