First check in

This commit is contained in:
2016-09-09 14:03:25 -05:00
commit 83b8032bf3
8 changed files with 139 additions and 0 deletions

83
Makefile Normal file
View File

@@ -0,0 +1,83 @@
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation here:
# (http://www.gnu.org/licenses/gpl-2.0.html)
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
DEPENDS = ncurses,readline
ARCH = x86_64
URL = http://www.gnu.org/software/bc/
DESC = bc is an arbitrary precision numeric processing language.
SNAPVER = sr0
ARCHIVE := $(PWD)/SRC/$(shell ls SRC|egrep '(bz2|gz|tar|xz)$$'|tail -1)
TYPE := $(shell file -ib $(ARCHIVE)|cut -d';' -f1|tr -d '\n')
SRCDIR := $(shell tar -tf $(ARCHIVE)|head -1|sed 's/\/.*//')
PATCHDIR := $(PWD)/SRC/patches
VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'|sed 's/^-//')$(SNAPVER)
MAKE = make
MAKEINST = make install
SNAPHACKS =
include /usr/share/snap/Makefile.snaplinux
$(SRCDIR): $(ARCHIVE)
@if [ '$(TYPE)' == 'application/x-bzip2' ]; then \
tar -jxf $(ARCHIVE); \
elif [ '$(TYPE)' == 'application/x-gzip' ]; then \
tar -zxf $(ARCHIVE); \
elif [ '$(TYPE)' == 'application/x-tar' ]; then \
tar -xf $(ARCHIVE); \
elif [ '$(TYPE)' == 'application/x-xz' ]; then \
tar -xf $(ARCHIVE); \
else \
echo 'Unable to determine archive type'; \
exit 1; \
fi
$(SRCDIR)/config.log: $(SRCDIR)
@cd $(SRCDIR) && for patch in $(PATCHDIR)/*.patch; do \
patch --verbose -Np1 -i $$patch; \
done
@cd $(SRCDIR); \
./configure \
--prefix=/usr \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--with-readline \
--build=x86_64-snap-linux-gnu \
--host=x86_64-snap-linux-gnu \
--target=x86_64-snap-linux-gnu
$(SRCDIR)/bc/bc: $(SRCDIR)/config.log
@cd $(SRCDIR); \
$(MAKE)
$(ROOT): $(SRCDIR)/bc/bc
@if [ -d $(ROOT) ]; then \
touch $(ROOT); \
else \
mkdir -v $(ROOT); \
fi
@cd $(SRCDIR); \
$(MAKEINST) DESTDIR=$(ROOT)
@$(SNAPHACKS)
test: $(ROOT)
@cd $(SRCDIR); \
echo "quit" | ./bc/bc -l Test/checklib.b
clean:
@rm -rvf $(ROOT) \
$(SNAPINFO) \
$(MANIFEST) \
$(FILES) \
$(SRCDIR)

3
SNAP/README Normal file
View File

@@ -0,0 +1,3 @@
This is the directory where the manifest, snapinfo, and files.tar.gz
files will be created. It is also where the usher file should be
placed if it is required by the package.

BIN
SRC/bc-1.06.95.tar.bz2 Normal file

Binary file not shown.

BIN
SRC/bc-1.06.95.tar.bz2.sig Normal file

Binary file not shown.

View File

@@ -0,0 +1,16 @@
diff -purN a/bc/execute.c b/bc/execute.c
--- a/bc/execute.c 2006-09-04 21:39:31.000000000 -0500
+++ b/bc/execute.c 2016-09-09 12:57:14.756000000 -0500
@@ -133,7 +133,11 @@ execute ()
gp = functions[pc.pc_func].f_label;
l_gp = label_num >> BC_LABEL_LOG;
l_off = label_num % BC_LABEL_GROUP;
- while (l_gp-- > 0) gp = gp->l_next;
+ while (gp && l_gp-- > 0) gp = gp->l_next;
+ if (!gp) {
+ rt_error ("No label group for label %d.", label_num);
+ break;
+ }
pc.pc_addr = gp->l_adrs[l_off];
}
break;

View File

@@ -0,0 +1,24 @@
diff -purN a/bc/bc.y b/bc/bc.y
--- a/bc/bc.y 2006-09-04 21:39:31.000000000 -0500
+++ b/bc/bc.y 2016-09-09 13:02:41.476000000 -0500
@@ -569,6 +569,7 @@ expression : named_expression ASSIGN_O
generate (">");
break;
}
+ free($2);
}
| expression '+' expression
{
diff -purN a/bc/util.c b/bc/util.c
--- a/bc/util.c 2006-09-04 21:39:31.000000000 -0500
+++ b/bc/util.c 2016-09-09 13:02:41.476000000 -0500
@@ -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++;

View File

@@ -0,0 +1,11 @@
diff -purN a/bc/storage.c b/bc/storage.c
--- a/bc/storage.c 2006-09-04 21:39:31.000000000 -0500
+++ b/bc/storage.c 2016-09-09 13:05:09.720000000 -0500
@@ -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;

2
SRC/patches/README Normal file
View File

@@ -0,0 +1,2 @@
Place any patch files here and preface each with a number indicating
the order of execution. Patch files are expected to use a .patch extension.