an easter calculating script that uses dc, output does not stop

Karl Young karly at kipshouse.org
Wed Mar 31 21:38:52 UTC 2021


Antonio Olivares(olivares14031 at gmail.com)@2021.03.31 15:53:58 -0500:
> On Wed, Mar 31, 2021 at 3:44 PM Antonio Olivares
> <olivares14031 at gmail.com> wrote:
> >
> > On Wed, Mar 31, 2021 at 3:33 PM Paul Procacci <pprocacci at gmail.com> wrote:
> > >
> > > It does not output continuously for me.
> > >
> > > # uname -a
> > > FreeBSD nas.myhome 12.2-RELEASE-p4 FreeBSD 12.2-RELEASE-p4 r369444 GENERIC  amd64
> > >
> > > On Wed, Mar 31, 2021 at 4:30 PM Antonio Olivares <olivares14031 at gmail.com> wrote:
> > >>
> > >> Dear kind FreeBSD users,
> > >>
> > >> I found a script which I will attach inline.  It uses dc *to do the
> > >> math*, but the output runs indefinitely on FreeBSD machines.
> > >>
> > >> From
> > >> https://forums.opensuse.org/showthread.php/435983-Easter-program
> > >>
> > >> <----- script follows ----->
> > >>
> > >> #!/bin/sh
> > >> if test $# -lt 1
> > >> then
> > >>         echo usage: $0 year
> > >>         exit 1
> > >> fi
> > >> echo $* '[ddsf[lfp[too early
> > >> ]Pq]s at 1583>@
> > >> ddd19%1+sg100/1+d3*4/12-sx8*5+25/5-sz5*4/lx-10-sdlg11*20+lz+lx-30%
> > >> d[30+]s at 0>@d[[1+]s at lg11<@]s at 25=@d[1+]s at 24=@se44le-d[30+]s at 21>@dld+7%-7+
> > >> [March ]smd[31-[April ]sm]s at 31<@psnlmPpsn1z>p]splpx' | dc | tr '\012' ' '
> > >> echo ''
> > >>
> > >> <----- end of script ------>
> > >>
> > >> I ran the script successfully during prior versions of FreeBSD, but it
> > >> is now running infinitely( infinite loop).  See run:
> > >>
> > >> ...
> > >> to run we put
> > >> $ sh easterdc.sh
> > >> and the year
> > >> olivares at deepcool:~/Downloads/kerTeX/Documents $ sh easterdc.sh
> > >> usage: easterdc.sh year
> > >> olivares at deepcool:~/Downloads/kerTeX/Documents $ sh easterdc.sh 2021
> > >> ........
> > >> 4 April April  4 April April  4 April April  4 April April  4 April
> > >> April  4 April April  4 April April  4 April April  4 April April  4
> > >> April April  4 April April  4 April April  4 April April  4 April
> > >> April  4 April April  4 April April  ^C
> > >>
> > >> ....
> > >>
> > >> How can I fix this to just output 4 April and stop.  Thanks in Advance.
> > >>
> > >> Regards,
> > >>
> > >>
> > >> Antonio
> > >> _______________________________________________
> > >> freebsd-questions at freebsd.org mailing list
> > >> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
> > >> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
> > >
> > >
> > >
> > > --
> > > __________________
> > >
> > > :(){ :|:& };:
> >
> > olivares at e154-1$ sh easterdc.sh
> > usage: easterdc.sh year
> > olivares at e154-1$ uname -a
> > FreeBSD e154-1 12.2-RELEASE-p4 FreeBSD 12.2-RELEASE-p4 GENERIC  amd64
> > olivares at e154-1$ sh easterdc.sh
> > usage: easterdc.sh year
> > olivares at e154-1$ sh easterdc.sh 2021
> > 4 April 2021
> > olivares at e154-1$
> >
> > On 13.0RC4 it goes infiintely :(
> >
> > Best Regards,
> >
> >
> > Antonio
> 
> I am looking at the specifics to find out what changed, I have found this:
> 
> https://cgit.freebsd.org/src/commit/?id=c41fef90a7d
> 
> Contributed Software
> 
> Replaced the bc(1) and dc(1) utilities with the version developed by
> Gavin D. Howard. The new versions do not depend on an external large
> number library, offer GNU bc extensions, are much faster than and fix
> POSIX compliance issues of the programs they replace. They support
> POSIX message catalogs and come with localized messages in Chinese,
> Dutch, English, French, German, Japanese, Polish, Portugueze, and
> Russian. The previous implementation is still available in FreeBSD-13
> and can be selected instead of the new one by the build option
> WITHOUT_GH_BC. c41fef90a7d
> 
> 
> I like to use bc and dc with some scripts to calculate things and used
> this script.  I do not mind the changes, all I would like to see if it
> is possible to add something to script so it can stop like it used to
> before.
> 
> Best Regards,
> 
> 
> Antonio

Antonio

That's some opaque code there.  You could try reverting to the older
dc/bc code, as the commit message says, or you can try breaking the
script up to find out what's broken.

Gavin Howard does have page about his work:

https://gavinhoward.com/2019/12/bc/dc-tips-and-tricks/

He mentions infinite loops, and also mentions some changes in strings
and register names, so that would be a good place to start.  You might
also email him and ask him to take a look, especially if you find it
works when you use WITHOUT_GH_BC.

Good luck

-karl



> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"


More information about the freebsd-questions mailing list