On Sun, Jul 17, 2016 at 03:23:14PM -0300, Henrique N. Lengler wrote:
> 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
Yes, in the meantime I committed it in the -current tree.
-Otto