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