diff --git a/.bc.metadata b/.bc.metadata new file mode 100644 index 0000000..c6bcf04 --- /dev/null +++ b/.bc.metadata @@ -0,0 +1 @@ +18717e0543b1dda779a71e6a812f11b8261a705a SOURCES/bc-1.06.95.tar.bz2 diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/bc-1.06-dc_ibase.patch b/SOURCES/bc-1.06-dc_ibase.patch new file mode 100644 index 0000000..7d5fa20 --- /dev/null +++ b/SOURCES/bc-1.06-dc_ibase.patch @@ -0,0 +1,58 @@ +--- bc-1.06/dc/numeric.c.dc_ibase 2007-08-22 08:37:57.000000000 +0200 ++++ bc-1.06/dc/numeric.c 2007-08-22 08:37:40.000000000 +0200 +@@ -285,6 +285,8 @@ dc_getnum DC_DECLARG((input, ibase, read + int digit; + int decimal; + int c; ++ int c_buff = 0; ++ int multi = 0; + + bc_init_num(&tmp); + bc_init_num(&build); +@@ -302,6 +304,9 @@ dc_getnum DC_DECLARG((input, ibase, read + } + while (isspace(c)) + c = (*input)(); ++ c_buff = (*input)(); ++ if (isdigit(c_buff) || ('A' <= c_buff && c_buff <= 'F') || c_buff == '.') ++ multi = 1; + for (;;){ + if (isdigit(c)) + digit = c - '0'; +@@ -309,10 +314,15 @@ dc_getnum DC_DECLARG((input, ibase, read + digit = 10 + c - 'A'; + else + break; +- c = (*input)(); ++ digit = multi ? (digit >= ibase ? ibase -1 : digit) : digit; + bc_int2num(&tmp, digit); + bc_multiply(result, base, &result, 0); + bc_add(result, tmp, &result, 0); ++ if (c_buff) { ++ c = c_buff; ++ c_buff = 0; ++ } else ++ c = (*input)(); + } + if (c == '.'){ + bc_free_num(&build); +@@ -321,13 +331,18 @@ dc_getnum DC_DECLARG((input, ibase, read + build = bc_copy_num(_zero_); + decimal = 0; + for (;;){ +- c = (*input)(); ++ if (c_buff) { ++ c = c_buff; ++ c_buff = 0; ++ } else ++ c = (*input)(); + if (isdigit(c)) + digit = c - '0'; + else if ('A' <= c && c <= 'F') + digit = 10 + c - 'A'; + else + break; ++ digit = digit >= ibase ? ibase -1 : digit; + bc_int2num(&tmp, digit); + bc_multiply(build, base, &build, 0); + bc_add(build, tmp, &build, 0); diff --git a/SOURCES/bc-1.06.95-doc.patch b/SOURCES/bc-1.06.95-doc.patch new file mode 100644 index 0000000..b75f56e --- /dev/null +++ b/SOURCES/bc-1.06.95-doc.patch @@ -0,0 +1,24 @@ +diff -up wrk/doc/bc.1.wrk wrk/doc/bc.1 +--- wrk/doc/bc.1.wrk 2013-10-02 13:36:52.066295450 +0200 ++++ wrk/doc/bc.1 2013-10-02 13:35:22.738553712 +0200 +@@ -174,6 +174,8 @@ The result of the expression is the sum + The result of the expression is the difference of the two expressions. + .IP "expr * expr" + The result of the expression is the product of the two expressions. ++If a and b are the scales of the two expressions, then the scale of the result is: ++min(a+b,max(scale,a,b)) + .IP "expr / expr" + The result of the expression is the quotient of the two expressions. + The scale of the result is the value of the variable \fBscale\fR. +diff -up wrk/doc/bc.texi.wrk wrk/doc/bc.texi +--- wrk/doc/bc.texi.wrk 2013-10-02 13:17:01.743765518 +0200 ++++ wrk/doc/bc.texi 2013-10-02 13:21:04.479870656 +0200 +@@ -290,6 +290,8 @@ The result of the expression is the diff + + @item expr * expr + The result of the expression is the product of the two expressions. ++If a and b are the scales of the two expressions, then the scale of the result is: ++min(a+b,max(@var{scale},a,b)) + + @item expr / expr + The result of the expression is the quotient of the two expressions. diff --git a/SOURCES/bc-1.06.95-matlib.patch b/SOURCES/bc-1.06.95-matlib.patch new file mode 100644 index 0000000..796c5e2 --- /dev/null +++ b/SOURCES/bc-1.06.95-matlib.patch @@ -0,0 +1,20 @@ +diff -urNp bc-1.06.95-orig/bc/storage.c bc-1.06.95/bc/storage.c +--- bc-1.06.95-orig/bc/storage.c 2006-09-05 04:39:31.000000000 +0200 ++++ bc-1.06.95/bc/storage.c 2010-12-22 10:26:43.805250912 +0100 +@@ -99,6 +99,7 @@ more_functions (VOID) + { + f = &functions[indx]; + f->f_defined = FALSE; ++ f->f_void = FALSE; + f->f_body = (char *) bc_malloc (BC_START_SIZE); + f->f_body_size = BC_START_SIZE; + f->f_code_size = 0; +@@ -179,7 +180,7 @@ more_arrays () + + + /* Initialize the new elements. */ +- for (; indx < v_count; indx++) ++ for (; indx < a_count; indx++) + arrays[indx] = NULL; + + /* Free the old elements. */ diff --git a/SOURCES/bc-1.06.95-memleak.patch b/SOURCES/bc-1.06.95-memleak.patch new file mode 100644 index 0000000..0b8fc5b --- /dev/null +++ b/SOURCES/bc-1.06.95-memleak.patch @@ -0,0 +1,26 @@ +diff --git a/bc/bc.y b/bc/bc.y +index 14dc4be..bd91c38 100644 +--- a/bc/bc.y ++++ b/bc/bc.y +@@ -569,6 +569,7 @@ expression : named_expression ASSIGN_OP + generate (">"); + break; + } ++ free($2); + } + | expression '+' expression + { +diff --git a/bc/util.c b/bc/util.c +index 30beaf9..26e2e85 100644 +--- a/bc/util.c ++++ b/bc/util.c +@@ -602,8 +602,7 @@ lookup (name, namekind) + case FUNCTDEF: + if (id->f_name != 0) + { +- if (namekind != FUNCT) +- free(name); ++ free(name); + /* Check to see if we are redefining a math lib function. */ + if (use_math && namekind == FUNCTDEF && id->f_name <= 6) + id->f_name = next_func++; diff --git a/SOURCES/bc-1.06.95-sigintmasking.patch b/SOURCES/bc-1.06.95-sigintmasking.patch new file mode 100644 index 0000000..c86340f --- /dev/null +++ b/SOURCES/bc-1.06.95-sigintmasking.patch @@ -0,0 +1,27 @@ +Binary files bc-1.06.95-orig/dc/.dc.c.swp and bc-1.06.95/dc/.dc.c.swp differ +diff -urNp bc-1.06.95-orig/dc/eval.c bc-1.06.95/dc/eval.c +--- bc-1.06.95-orig/dc/eval.c 2006-06-04 13:04:40.000000000 +0200 ++++ bc-1.06.95/dc/eval.c 2011-09-08 15:11:48.815060585 +0200 +@@ -661,7 +661,9 @@ dc_evalfile DC_DECLARG((fp)) + int next_negcmp = 0; + dc_data datum; + +- signal(SIGINT, dc_trap_interrupt); ++ /* Do not mask SIGINT when running from stdin */ ++ if (fp != stdin) ++ signal(SIGINT, dc_trap_interrupt); + stdin_lookahead = EOF; + for (c=getc(fp); c!=EOF; c=peekc){ + peekc = getc(fp); +diff -urNp bc-1.06.95-orig/doc/dc.texi bc-1.06.95/doc/dc.texi +--- bc-1.06.95-orig/doc/dc.texi 2006-06-11 10:15:54.000000000 +0200 ++++ bc-1.06.95/doc/dc.texi 2011-09-08 15:09:37.032059798 +0200 +@@ -126,6 +126,8 @@ To exit, use @samp{q}. + (or whatever other keystroke your system uses to generate a @code{SIGINT}) + does not exit; + it is used to abort macros that are looping, etc. ++This is not true if running on stdin to prevent accidental user confusion ++about @kbd{C-c} unfunctionality. + + A reverse-polish calculator stores numbers on a stack. + Entering a number pushes it on the stack. diff --git a/SPECS/bc.spec b/SPECS/bc.spec new file mode 100644 index 0000000..ab44a0a --- /dev/null +++ b/SPECS/bc.spec @@ -0,0 +1,304 @@ +Summary: GNU's bc (a numeric processing language) and dc (a calculator) +Name: bc +Version: 1.06.95 +Release: 11%{?dist} +License: GPLv2+ +URL: http://www.gnu.org/software/bc/ +Group: Applications/Engineering +Source: ftp://alpha.gnu.org/pub/gnu/bc/bc-%{version}.tar.bz2 +Patch1: bc-1.06-dc_ibase.patch +Patch2: bc-1.06.95-memleak.patch +Patch3: bc-1.06.95-matlib.patch +Patch4: bc-1.06.95-sigintmasking.patch +Patch5: bc-1.06.95-doc.patch +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info +Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: readline-devel, flex, bison, texinfo + +%description +The bc package includes bc and dc. Bc is an arbitrary precision +numeric processing arithmetic language. Dc is an interactive +arbitrary precision stack based calculator, which can be used as a +text mode calculator. + +Install the bc package if you need its number handling capabilities or +if you would like to use its text mode calculator. + +%prep +%setup -q +%patch1 -p1 -b .dc_ibase +%patch2 -p1 -b .memleak +%patch3 -p1 -b .matlib +%patch4 -p1 -b .sigintmask +%patch5 -p1 -b .doc + +%build +%configure --with-readline +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT +rm -f $RPM_BUILD_ROOT/%{_infodir}/dir + +%post +if [ -e %{_infodir}/bc.info.gz -a -e %{_infodir}/dc.info.gz ]; then + /sbin/install-info %{_infodir}/bc.info.gz %{_infodir}/dir \ + --entry="* bc: (bc). The GNU calculator language." || : + /sbin/install-info %{_infodir}/dc.info.gz %{_infodir}/dir \ + --entry="* dc: (dc). The GNU RPN calculator." || : +fi + +%preun +if [ $1 = 0 -a -e %{_infodir}/bc.info.gz -a -e %{_infodir}/dc.info.gz ]; then + /sbin/install-info --delete %{_infodir}/bc.info.gz %{_infodir}/dir \ + --entry="* bc: (bc). The GNU calculator language." || : + /sbin/install-info --delete %{_infodir}/dc.info.gz %{_infodir}/dir \ + --entry="* dc: (dc). The GNU RPN calculator." || : +fi + +%files +%defattr(-,root,root,-) +%doc COPYING COPYING.LIB FAQ AUTHORS NEWS README Examples/ +%{_bindir}/dc +%{_bindir}/bc +%{_mandir}/*/* +%{_infodir}/* + +%changelog +* Wed Oct 02 2013 Frantisek Kluknavsky - 1.06.95-11 +- man and info patched - clarified scale after multiplication + +* Sat Aug 03 2013 Fedora Release Engineering - 1.06.95-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Feb 13 2013 Fedora Release Engineering - 1.06.95-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Oct 20 2012 Fedora Release Engineering - 1.06.95-8 +- Minor spec cleanup + +* Wed Jul 18 2012 Fedora Release Engineering - 1.06.95-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 1.06.95-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Oct 26 2011 Fedora Release Engineering - 1.06.95-5 +- Rebuilt for glibc bug#747377 + +* Thu Sep 08 2011 Ondrej Vasik 1.06.95-4 +- do not mask SIGINT in dc when reading from stdin (#697340) + +* Mon Feb 07 2011 Fedora Release Engineering - 1.06.95-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Dec 22 2010 Ondrej Vasik 1.06.95-2 +- fix possible segfault in arrays handling(debbug #586969) +- initialize f_void to work with math lib again(#664080) + +* Thu Sep 24 2009 Ondrej Vasik 1.06.95-1 +- update to upstream alpha 1.06.95 (in use in Gentoo, Slackware + for quite a long time, marked stable there) +- removed already applied patches, fix small memory leak + (gentoo patch) +- add missing BR for bison and texinfo + +* Thu Aug 20 2009 Zdenek Prikryl 1.06-36 +- Don't complain if installing with --excludedocs (#515934) + +* Fri Jul 24 2009 Fedora Release Engineering - 1.06-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 1.06-34 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Feb 20 2008 Fedora Release Engineering - 1.06-33 +- Autorebuild for GCC 4.3 + +* Fri Jan 04 2008 Zdenek Prikryl 1.06-32 +- Added Examples directory into doc +- Added bc info file + +* Fri Dec 14 2007 Stepan Kasal 1.06-31 +- Remove bc-1.06-flex.patch +- do not run autofoo +- fix the Licence tag + +* Fri Dec 07 2007 Zdenek Prikryl 1.06-30 +- Package review (#225611) + +* Tue Sep 18 2007 Zdenek Prikryl 1.06-29 +- update of source URI + +* Wed Aug 22 2007 Zdenek Prikryl 1.06-28 +- fixed incorrect processing of decimal separator +- Resolves: #253729 + +* Thu Jul 26 2007 Zdenek Prikryl 1.06-27 +- dc accepts the input which contains wrong symbols of radix in same way like bc +- Resolves: #151844 +- Added library string.h to remove warnings. + +* Mon Feb 26 2007 Thomas Woerner 1.06-26 +- removed grep and mktemp usage from post script, also the requires + +* Mon Feb 26 2007 Karsten Hopp 1.06-25 +- flex supports -8 now (pmachata) + +* Fri Feb 23 2007 Karsten Hopp 1.06-24 +- fix buildroot +- remove trailing dot from summary +- fix post/preun requirements +- use make install DESTDIR=... +- convert changelog to utf-8 +- use smp flags +- use 'flex -I' instead 'flex -I8' (not supported anymore) +- run autofoo stuff to update files for current automake + +* Tue Jan 23 2007 Florian La Roche +- scripts should never fail: rhbz#223677 + +* Mon Jan 22 2007 Thomas Woerner 1.06-22 +- rebuild for ncurses + +* Wed Jul 12 2006 Jesse Keating - 1.06-21 +- rebuild +- add missing br automake + +* Tue Jun 6 2006 Thomas Woerner 1.06-20 +- added missing flex build require + +* Fri Feb 10 2006 Jesse Keating - 1.06-19.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 1.06-19.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Mon Nov 21 2005 Thomas Woerner 1.06-19 +- fixed rpm macro usage in chengelog (#137800) + +* Wed Jan 12 2005 Tim Waugh 1.06-18 +- Rebuilt for new readline. + +* Fri Oct 8 2004 Thomas Woerner 1.06-17.1 +- added BuildRequires for readline-devel (#134699) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Aug 14 2003 Thomas Woerner 1.06-15 +- fixed incorrect capitalization in bc info page (#89851) + +* Tue Jun 17 2003 Thomas Woerner 1.06-14 +- rebuild + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Dec 11 2002 Tim Powers 1.06-11 +- rebuild on all arches + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Tue Feb 26 2002 Trond Eivind Glomsrød 1.06-8 +- Rebuild + +* Mon Feb 4 2002 Trond Eivind Glomsrød 1.06-7 +- s/Copyright/License/ +- The %%doc file AUTHOR should be AUTHORS + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Wed Sep 9 2001 Phil Knirsch 1.06-5 +- Fixed a variable initialization problem in load.c which broke badly on S390. + +* Fri May 11 2001 Preston Brown 1.06-4 +- use mktemp, not the pid shell variable, in rpm scriptlets + +* Fri May 11 2001 Bernhard Rosenkraenzer 1.06-3 +- rebuild with new readline +- Add patch to fix compilation with recent readline versions + +* Fri Dec 01 2000 Trond Eivind Glomsrød +- Add COPYING, COPYING.LIB, FAQ, AUTHORS, NEWS, README + +* Sun Nov 19 2000 Florian La Roche +- update to bc 1.06 + +* Fri Jul 21 2000 Trond Eivind Glomsrød +- rebuild + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Tue Jun 06 2000 Trond Eivind Glomsrød +- use %%makeinstall, %%configure, %%{_mandir}, %%{_infodir} + and %%{_tmppath} + +* Wed May 10 2000 Trond Eivind Glomsrød +- added URL +- let build system handle man page gzipping + +* Thu Apr 06 2000 Trond Eivind Glomsrød +- fixed bug 7145 (long commands -> coredump) +- removed explicit stripping, it does this by itself anyway +- gzipped man-pages + +* Thu Mar 30 2000 Bernhard Rosenkraenzer +- Rebuild with new readline (4.1) + +* Fri Mar 24 2000 Bernhard Rosenkraenzer +- Rebuild with new readline (4.0) +- fix Source URL +- some spec file cleanups + +* Mon Feb 7 2000 Bill Nottingham +- handle compressed manpages + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 4) + +* Thu Jan 21 1999 Jeff Johnson +- use %%configure + +* Fri Sep 11 1998 Jeff Johnson +- update to 1.05a. + +* Sun Jun 07 1998 Prospector System +- translations modified for de + +* Thu Jun 04 1998 Jeff Johnson +- updated to 1.05 with build root. + +* Fri Apr 24 1998 Prospector System +- translations modified for de, fr, tr + +* Tue Apr 21 1998 Erik Troan +- got upgrades of info entry working (I hope) + +* Sun Apr 05 1998 Erik Troan +- fixed incorrect info entry + +* Wed Oct 15 1997 Donnie Barnes +- added install-info support + +* Thu Sep 11 1997 Donald Barnes +- upgraded from 1.03 to 1.04 + +* Mon Jun 02 1997 Erik Troan +- built against glibc