Release 2.12.6.10

Added a patch to replaces the manual search for include files
    in $(INCDIR) in the have_*.h targets with compiler invocations.
    Thanks goes to Helmut Grohne <helmut at subdivi dot de> who
    implemented the patch and posted it to the Debian bug tracker
    and Martin Buck (m at rtin-buck dor de) for forwarding it to us.

    The check_include make rule was fixed to not assume /usr/include.

    The qprintnum() function now takes outdigits as a 3rd argument.
    Most of the time, this 3rd argument is just conf->outdigits.
    But when it comes to the experimental '%g', this value can
    change.  This avoids having to modify conf->outdigits.
This commit is contained in:
Landon Curt Noll
2018-10-19 19:33:57 -07:00
parent 2ea77e6151
commit 54a7a3f7bc
11 changed files with 56 additions and 96 deletions

18
CHANGES
View File

@@ -1,4 +1,20 @@
The following are the changes from calc version 2.12.6.9 to date: The following are the changes from calc version 2.12.6.10 to date:
Added a patch to replaces the manual search for include files
in $(INCDIR) in the have_*.h targets with compiler invocations.
Thanks goes to Helmut Grohne <helmut at subdivi dot de> who
implemented the patch and posted it to the Debian bug tracker
and Martin Buck (m at rtin-buck dor de) for forwarding it to us.
The check_include make rule was fixed to not assume /usr/include.
The qprintnum() function now takes outdigits as a 3rd argument.
Most of the time, this 3rd argument is just conf->outdigits.
But when it comes to the experimental '%g', this value can
change. This avoids having to modify conf->outdigits.
The following are the changes from calc version 2.12.6.9 to 2.12.6.9:
Fixed a number of core dump bugs related to the calculation of Fixed a number of core dump bugs related to the calculation of
tan(), cot(), sec(), csc(), tanh(), coth(), sech(), and csch(), tan(), cot(), sec(), csc(), tanh(), coth(), sech(), and csch(),

View File

@@ -1054,7 +1054,7 @@ EXT=
# The default calc versions # The default calc versions
# #
VERSION= 2.12.6.9 VERSION= 2.12.6.10
# Names of shared libraries with versions # Names of shared libraries with versions
# #
@@ -2179,25 +2179,15 @@ TARGETS= ${EARLY_TARGETS} ${BLD_TYPE} ${LATE_TARGETS}
all: check_include ${BLD_TYPE} CHANGES all: check_include ${BLD_TYPE} CHANGES
check_include: check_include:
$(Q) if [ ! -d ${INCDIR} ]; then \ $(Q) if ! echo '#include <stdio.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo "ERROR: critical directory missing: /usr/include" 1>&2; \ echo "ERROR: The critical <stdio.h> include file is missing." 1>&2; \
echo "Without this critical directory, we cannot compile." 1>&2; \ echo "Without critical include files, we cannot compile." 1>&2; \
echo 1>&2; \
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \ echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
echo "For example, Apple OS X / darwin requres that XCode" 1>&2; \
echo "must be installed and that you run the command:" 1>&2; \
echo 1>&2; \ echo 1>&2; \
echo " xcode-select --install" 1>&2; \ echo "For example, Apple macOS / Darwin requres that XCode" 1>&2; \
echo "must be installed." 1>&2; \
echo 1>&2; \ echo 1>&2; \
exit 1; \ echo "Also macOS users might later to run this command:" 1>&2; \
fi
$(Q) if [ ! -f ${INCDIR}/stdio.h ]; then \
echo "ERROR: critical include files are missing" 1>&2; \
echo "Without this critical directory, we cannot compile." 1>&2; \
echo 1>&2; \
echo "Perhaps your system isn't setup to compile C source?" 1>&2; \
echo "For example, Apple OS X / darwin requres that XCode" 1>&2; \
echo "must be installed and that you run the command:" 1>&2; \
echo 1>&2; \ echo 1>&2; \
echo " xcode-select --install" 1>&2; \ echo " xcode-select --install" 1>&2; \
echo 1>&2; \ echo 1>&2; \
@@ -2477,22 +2467,13 @@ endian_calc.h: endian${EXT} ${MAKE_FILE}
${Q} echo '' >> endian_calc.h ${Q} echo '' >> endian_calc.h
${Q} echo '/* what byte order are we? */' >> endian_calc.h ${Q} echo '/* what byte order are we? */' >> endian_calc.h
-${Q} if [ X"${CALC_BYTE_ORDER}" = X ]; then \ -${Q} if [ X"${CALC_BYTE_ORDER}" = X ]; then \
if [ -f ${INCDIR}/endian.h ]; then \ if echo '#include <endian.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#include <endian.h>' >> endian_calc.h; \ echo '#include <endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \ echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
elif [ -f ${INCDIR}/machine/endian.h ]; then \ elif echo '#include <machine/endian.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#include <machine/endian.h>' >> endian_calc.h; \ echo '#include <machine/endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \ echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
elif [ -f ${INCDIR}/sys/endian.h ]; then \ elif echo '#include <sys/endian.h>' | ${CC} -E- >/dev/null 2>&1; then \
echo '#include <sys/endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
elif [ -f /usr/include/endian.h ]; then \
echo '#include <endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
elif [ -f /usr/include/machine/endian.h ]; then \
echo '#include <machine/endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
elif [ -f /usr/include/sys/endian.h ]; then \
echo '#include <sys/endian.h>' >> endian_calc.h; \ echo '#include <sys/endian.h>' >> endian_calc.h; \
echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \ echo '#define CALC_BYTE_ORDER BYTE_ORDER' >> endian_calc.h; \
else \ else \
@@ -2559,9 +2540,7 @@ have_times.h: ${MAKE_FILE}
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \ echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
elif [ X"${HAVE_TIMES_H}" = X"NO" ]; then \ elif [ X"${HAVE_TIMES_H}" = X"NO" ]; then \
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \ echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
elif [ -f ${INCDIR}/times.h ]; then \ elif echo '#include <times.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
elif [ -f /usr/include/times.h ]; then \
echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \ echo '#define HAVE_TIMES_H /* yes */' >> have_times.h; \
else \ else \
echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \ echo '#undef HAVE_TIMES_H /* no */' >> have_times.h; \
@@ -2570,9 +2549,7 @@ have_times.h: ${MAKE_FILE}
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \ echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
elif [ X"${HAVE_SYS_TIMES_H}" = X"NO" ]; then \ elif [ X"${HAVE_SYS_TIMES_H}" = X"NO" ]; then \
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \ echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
elif [ -f ${INCDIR}/sys/times.h ]; then \ elif echo '#include <sys/times.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
elif [ -f /usr/include/sys/times.h ]; then \
echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \ echo '#define HAVE_SYS_TIMES_H /* yes */' >> have_times.h; \
else \ else \
echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \ echo '#undef HAVE_SYS_TIMES_H /* no */' >> have_times.h; \
@@ -2581,9 +2558,7 @@ have_times.h: ${MAKE_FILE}
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \ echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
elif [ X"${HAVE_TIME_H}" = X"NO" ]; then \ elif [ X"${HAVE_TIME_H}" = X"NO" ]; then \
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \ echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
elif [ -f ${INCDIR}/time.h ]; then \ elif echo '#include <time.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
elif [ -f /usr/include/time.h ]; then \
echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \ echo '#define HAVE_TIME_H /* yes */' >> have_times.h; \
else \ else \
echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \ echo '#undef HAVE_TIME_H /* no */' >> have_times.h; \
@@ -2592,9 +2567,7 @@ have_times.h: ${MAKE_FILE}
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \ echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
elif [ X"${HAVE_SYS_TIME_H}" = X"NO" ]; then \ elif [ X"${HAVE_SYS_TIME_H}" = X"NO" ]; then \
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \ echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
elif [ -f ${INCDIR}/sys/time.h ]; then \ elif echo '#include <sys/time.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
elif [ -f /usr/include/sys/time.h ]; then \
echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \ echo '#define HAVE_SYS_TIME_H /* yes */' >> have_times.h; \
else \ else \
echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \ echo '#undef HAVE_SYS_TIME_H /* no */' >> have_times.h; \
@@ -2630,9 +2603,7 @@ have_stdlib.h: ${MAKE_FILE}
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \ echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
elif [ X"${HAVE_STDLIB_H}" = X"NO" ]; then \ elif [ X"${HAVE_STDLIB_H}" = X"NO" ]; then \
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \ echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
elif [ -f ${INCDIR}/stdlib.h ]; then \ elif echo '#include <stdlib.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
elif [ -f /usr/include/stdlib.h ]; then \
echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \ echo '#define HAVE_STDLIB_H /* yes */' >> have_stdlib.h; \
else \ else \
echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \ echo '#undef HAVE_STDLIB_H /* no */' >> have_stdlib.h; \
@@ -2668,9 +2639,7 @@ have_unistd.h: ${MAKE_FILE}
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \ echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
elif [ X"${HAVE_UNISTD_H}" = X"NO" ]; then \ elif [ X"${HAVE_UNISTD_H}" = X"NO" ]; then \
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \ echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
elif [ -f ${INCDIR}/unistd.h ]; then \ elif echo '#include <unistd.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
elif [ -f /usr/include/unistd.h ]; then \
echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \ echo '#define HAVE_UNISTD_H /* yes */' >> have_unistd.h; \
else \ else \
echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \ echo '#undef HAVE_UNISTD_H /* no */' >> have_unistd.h; \
@@ -2706,9 +2675,7 @@ have_string.h: ${MAKE_FILE}
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \ echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
elif [ X"${HAVE_STRING_H}" = X"NO" ]; then \ elif [ X"${HAVE_STRING_H}" = X"NO" ]; then \
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \ echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
elif [ -f ${INCDIR}/string.h ]; then \ elif echo '#include <string.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
elif [ -f /usr/include/string.h ]; then \
echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \ echo '#define HAVE_STRING_H /* yes */' >> have_string.h; \
else \ else \
echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \ echo '#undef HAVE_STRING_H /* no */' >> have_string.h; \
@@ -2748,22 +2715,12 @@ terminal.h: ${MAKE_FILE}
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \ echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \ echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \ echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
elif [ -f ${INCDIR}/termios.h ]; then \ elif echo '#include <termios.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '/* use termios */' >> terminal.h; \ echo '/* use termios */' >> terminal.h; \
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \ echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \ echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \ echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
elif [ -f ${INCDIR}/termio.h ]; then \ elif echo '#include <termio.h>' | ${CC} -E - >/dev/null 2>&1; then \
echo '/* use termio */' >> terminal.h; \
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
elif [ -f /usr/include/termios.h ]; then \
echo '/* use termios */' >> terminal.h; \
echo '#define USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#undef USE_TERMIO /* <termio.h> */' >> terminal.h; \
echo '#undef USE_SGTTY /* <sys/ioctl.h> */' >> terminal.h; \
elif [ -f /usr/include/termio.h ]; then \
echo '/* use termio */' >> terminal.h; \ echo '/* use termio */' >> terminal.h; \
echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \ echo '#undef USE_TERMIOS /* <termios.h> */' >> terminal.h; \
echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \ echo '#define USE_TERMIO /* <termio.h> */' >> terminal.h; \

View File

@@ -1182,7 +1182,7 @@ comprint(COMPLEX *c)
return; return;
} }
if (!qiszero(c->real) || qiszero(c->imag)) if (!qiszero(c->real) || qiszero(c->imag))
qprintnum(c->real, MODE_DEFAULT); qprintnum(c->real, MODE_DEFAULT, conf->outdigits);
qtmp = c->imag[0]; qtmp = c->imag[0];
if (qiszero(&qtmp)) if (qiszero(&qtmp))
return; return;
@@ -1192,7 +1192,7 @@ comprint(COMPLEX *c)
math_chr('-'); math_chr('-');
qtmp.num.sign = 0; qtmp.num.sign = 0;
} }
qprintnum(&qtmp, MODE_DEFAULT); qprintnum(&qtmp, MODE_DEFAULT, conf->outdigits);
math_chr('i'); math_chr('i');
} }

View File

@@ -348,7 +348,7 @@ EXT=
# The default calc versions # The default calc versions
# #
VERSION= 2.12.6.9 VERSION= 2.12.6.10
# Names of shared libraries with versions # Names of shared libraries with versions
# #

View File

@@ -348,7 +348,7 @@ EXT=
# The default calc versions # The default calc versions
# #
VERSION= 2.12.6.9 VERSION= 2.12.6.10
# Names of shared libraries with versions # Names of shared libraries with versions
# #

2
func.c
View File

@@ -335,7 +335,7 @@ f_str(VALUE *vp)
break; break;
case V_NUM: case V_NUM:
math_divertio(); math_divertio();
qprintnum(vp->v_num, MODE_DEFAULT); qprintnum(vp->v_num, MODE_DEFAULT, conf->outdigits);
cp = math_getdivertedio(); cp = math_getdivertedio();
result.v_str = makestring(cp); result.v_str = makestring(cp);
break; break;

31
qio.c
View File

@@ -183,7 +183,7 @@ qprintf(char *fmt, ...)
* Integers are always printed as themselves. * Integers are always printed as themselves.
*/ */
void void
qprintnum(NUMBER *q, int outmode) qprintnum(NUMBER *q, int outmode, LEN outdigits)
{ {
NUMBER tmpval; NUMBER tmpval;
long prec, exp; long prec, exp;
@@ -202,13 +202,13 @@ qprintnum(NUMBER *q, int outmode)
case MODE_REAL: case MODE_REAL:
prec = qdecplaces(q); prec = qdecplaces(q);
if ((prec < 0) || (prec > conf->outdigits)) { if ((prec < 0) || (prec > outdigits)) {
if (conf->tilde_ok) if (conf->tilde_ok)
PUTCHAR('~'); PUTCHAR('~');
} }
if (conf->fullzero || (prec < 0) || if (conf->fullzero || (prec < 0) ||
(prec > conf->outdigits)) (prec > outdigits))
prec = conf->outdigits; prec = outdigits;
qprintff(q, 0L, prec); qprintff(q, 0L, prec);
break; break;
@@ -225,7 +225,7 @@ qprintnum(NUMBER *q, int outmode)
tmpval.num.sign = 0; tmpval.num.sign = 0;
exp = qilog10(&tmpval); exp = qilog10(&tmpval);
if (exp == 0) { /* in range to output as real */ if (exp == 0) { /* in range to output as real */
qprintnum(q, MODE_REAL); qprintnum(q, MODE_REAL, outdigits);
return; return;
} }
tmpval.num = _one_; tmpval.num = _one_;
@@ -237,35 +237,22 @@ qprintnum(NUMBER *q, int outmode)
q = qmul(q, &tmpval); q = qmul(q, &tmpval);
zfree(tmpval.num); zfree(tmpval.num);
zfree(tmpval.den); zfree(tmpval.den);
qprintnum(q, MODE_REAL); qprintnum(q, MODE_REAL, outdigits);
qfree(q); qfree(q);
PRINTF1("e%ld", exp); PRINTF1("e%ld", exp);
break; break;
case MODE_REAL_AUTO: case MODE_REAL_AUTO:
{ {
/*
* XXX - re-write to not modify conf->outdigits
*
* Modifying the configuration value could be dangerious
* when a calculation is aborted within an opcode.
* Better to use qprintfg() use inline code that
* does not depend on changing conf->outdigits.
*/
const int P = conf->outdigits ? conf->outdigits : 1; const int P = conf->outdigits ? conf->outdigits : 1;
long olddigits;
tmpval = *q; tmpval = *q;
tmpval.num.sign = 0; tmpval.num.sign = 0;
exp = qilog10(&tmpval); exp = qilog10(&tmpval);
olddigits = conf->outdigits;
if (P > exp && exp >= -P) { if (P > exp && exp >= -P) {
conf->outdigits = P - 1 - exp; qprintnum(q, MODE_REAL, P - 1 - exp);
qprintnum(q, MODE_REAL);
} else { } else {
conf->outdigits = P - 1; qprintnum(q, MODE_EXP, P - 1);
qprintnum(q, MODE_EXP);
} }
conf->outdigits = olddigits;
break; break;
} }
@@ -288,7 +275,7 @@ qprintnum(NUMBER *q, int outmode)
if (outmode2 != MODE2_OFF) { if (outmode2 != MODE2_OFF) {
PUTSTR(" /* "); PUTSTR(" /* ");
qprintnum(q, outmode2); qprintnum(q, outmode2, outdigits);
PUTSTR(" */"); PUTSTR(" */");
} }
} }

View File

@@ -67,7 +67,7 @@ E_FUNC FULL qtou(NUMBER *q);
E_FUNC SFULL qtos(NUMBER *q); E_FUNC SFULL qtos(NUMBER *q);
E_FUNC long qparse(char *str, int flags); E_FUNC long qparse(char *str, int flags);
E_FUNC void qfreenum(NUMBER *q); E_FUNC void qfreenum(NUMBER *q);
E_FUNC void qprintnum(NUMBER *q, int mode); E_FUNC void qprintnum(NUMBER *q, int mode, LEN outdigits);
E_FUNC void qprintff(NUMBER *q, long width, long precision); E_FUNC void qprintff(NUMBER *q, long width, long precision);
E_FUNC void qprintfe(NUMBER *q, long width, long precision); E_FUNC void qprintfe(NUMBER *q, long width, long precision);
E_FUNC void qprintfr(NUMBER *q, long width, BOOL force); E_FUNC void qprintfr(NUMBER *q, long width, BOOL force);

2
qmod.c
View File

@@ -404,7 +404,7 @@ showredcdata(void)
for (i = 0, rcp = redc_cache; i < MAXREDC; i++, rcp++) { for (i = 0, rcp = redc_cache; i < MAXREDC; i++, rcp++) {
if (rcp->age > 0) { if (rcp->age > 0) {
printf("%-8ld%-8ld", i, rcp->age); printf("%-8ld%-8ld", i, rcp->age);
qprintnum(rcp->rnum, 0); qprintnum(rcp->rnum, 0, conf->outdigits);
printf("\n"); printf("\n");
} }
} }

View File

@@ -2774,7 +2774,7 @@ printvalue(VALUE *vp, int flags)
} }
switch (type) { switch (type) {
case V_NUM: case V_NUM:
qprintnum(vp->v_num, MODE_DEFAULT); qprintnum(vp->v_num, MODE_DEFAULT, conf->outdigits);
if (conf->traceflags & TRACE_LINKS) if (conf->traceflags & TRACE_LINKS)
math_fmt("#%ld", vp->v_num->links); math_fmt("#%ld", vp->v_num->links);
break; break;
@@ -2835,7 +2835,7 @@ printvalue(VALUE *vp, int flags)
if (userfunc("octet_print", vp)) if (userfunc("octet_print", vp))
break; break;
qtemp = itoq((long) *vp->v_octet); qtemp = itoq((long) *vp->v_octet);
qprintnum(qtemp, MODE_DEFAULT); qprintnum(qtemp, MODE_DEFAULT, conf->outdigits);
qfree(qtemp); qfree(qtemp);
break; break;
case V_OPTR: case V_OPTR:
@@ -2888,7 +2888,7 @@ printestr(VALUE *vp)
math_chr('"'); math_chr('"');
return; return;
case V_NUM: case V_NUM:
qprintnum(vp->v_num, MODE_FRAC); qprintnum(vp->v_num, MODE_FRAC, conf->outdigits);
return; return;
case V_COM: case V_COM:
mode = math_setmode(MODE_FRAC); mode = math_setmode(MODE_FRAC);

View File

@@ -45,7 +45,7 @@ static char *program;
#define MAJOR_VER 2 /* major library version */ #define MAJOR_VER 2 /* major library version */
#define MINOR_VER 12 /* minor library version */ #define MINOR_VER 12 /* minor library version */
#define MAJOR_PATCH 6 /* major software level under library version */ #define MAJOR_PATCH 6 /* major software level under library version */
#define MINOR_PATCH 9 /* minor software level or 0 if not patched */ #define MINOR_PATCH 10 /* minor software level or 0 if not patched */
/* /*