diff options
Diffstat (limited to 'extension')
-rw-r--r-- | extension/ChangeLog | 6 | ||||
-rw-r--r-- | extension/Makefile.in | 16 | ||||
-rwxr-xr-x | extension/configure | 4 | ||||
-rw-r--r-- | extension/configure.ac | 4 | ||||
-rw-r--r-- | extension/intdiv.c | 15 |
5 files changed, 30 insertions, 15 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index 87d4358d..784daf21 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,9 @@ +2017-04-13 Arnold D. Robbins <arnold@skeeve.com> + + * configure.ac: Alphabetize function list in AC_CHECK_FUNCS. + * intdiv.c: Add descriptive comments to some functions. + (do_intdiv): Make division by zero fatal in MPFR case. + 2017-04-03 Arnold D. Robbins <arnold@skeeve.com> * inplace.c (inplace_end): Correct the function name in the diff --git a/extension/Makefile.in b/extension/Makefile.in index c386eac6..000c3b78 100644 --- a/extension/Makefile.in +++ b/extension/Makefile.in @@ -284,16 +284,16 @@ am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(filefuncs_la_SOURCES) $(fnmatch_la_SOURCES) \ $(fork_la_SOURCES) $(inplace_la_SOURCES) $(intdiv_la_SOURCES) \ - $(ordchr_la_SOURCES) $(readdir_la_SOURCES) $(readdir_test_la_SOURCES) \ - $(readfile_la_SOURCES) $(revoutput_la_SOURCES) \ - $(revtwoway_la_SOURCES) $(rwarray_la_SOURCES) \ - $(testext_la_SOURCES) $(time_la_SOURCES) + $(ordchr_la_SOURCES) $(readdir_la_SOURCES) \ + $(readdir_test_la_SOURCES) $(readfile_la_SOURCES) \ + $(revoutput_la_SOURCES) $(revtwoway_la_SOURCES) \ + $(rwarray_la_SOURCES) $(testext_la_SOURCES) $(time_la_SOURCES) DIST_SOURCES = $(filefuncs_la_SOURCES) $(fnmatch_la_SOURCES) \ $(fork_la_SOURCES) $(inplace_la_SOURCES) $(intdiv_la_SOURCES) \ - $(ordchr_la_SOURCES) $(readdir_la_SOURCES) $(readdir_test_la_SOURCES) \ - $(readfile_la_SOURCES) $(revoutput_la_SOURCES) \ - $(revtwoway_la_SOURCES) $(rwarray_la_SOURCES) \ - $(testext_la_SOURCES) $(time_la_SOURCES) + $(ordchr_la_SOURCES) $(readdir_la_SOURCES) \ + $(readdir_test_la_SOURCES) $(readfile_la_SOURCES) \ + $(revoutput_la_SOURCES) $(revtwoway_la_SOURCES) \ + $(rwarray_la_SOURCES) $(testext_la_SOURCES) $(time_la_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ diff --git a/extension/configure b/extension/configure index 580cc150..7ae66543 100755 --- a/extension/configure +++ b/extension/configure @@ -12943,8 +12943,8 @@ $as_echo "#define HAVE_MPFR 1" >>confdefs.h ;; esac -for ac_func in fdopendir fnmatch gettimeofday fmod \ - getdtablesize nanosleep select statvfs GetSystemTimeAsFileTime +for ac_func in fdopendir fmod fnmatch getdtablesize \ + gettimeofday nanosleep select statvfs GetSystemTimeAsFileTime do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/extension/configure.ac b/extension/configure.ac index 58935b69..bde6e3d3 100644 --- a/extension/configure.ac +++ b/extension/configure.ac @@ -78,8 +78,8 @@ case `uname -m` in ;; esac -AC_CHECK_FUNCS(fdopendir fnmatch gettimeofday fmod \ - getdtablesize nanosleep select statvfs GetSystemTimeAsFileTime) +AC_CHECK_FUNCS(fdopendir fmod fnmatch getdtablesize \ + gettimeofday nanosleep select statvfs GetSystemTimeAsFileTime) GAWK_FUNC_DIRFD GAWK_PREREQ_DIRFD diff --git a/extension/intdiv.c b/extension/intdiv.c index 2f446c47..bde92893 100644 --- a/extension/intdiv.c +++ b/extension/intdiv.c @@ -29,6 +29,8 @@ static const char *ext_version = "intdiv extension: version 1.0"; int plugin_is_GPL_compatible; +/* double_to_int --- get the integer part of a double */ + static double double_to_int(double d) { @@ -39,6 +41,8 @@ double_to_int(double d) return d; } +/* array_set_number --- set an array element to a numeric value */ + static void array_set_number(awk_array_t array, const char *sub, size_t sublen, double num) { @@ -49,6 +53,8 @@ array_set_number(awk_array_t array, const char *sub, size_t sublen, double num) #ifdef HAVE_MPFR +/* mpz_conv --- convert an awk_value_t to an MPZ value */ + static mpz_ptr mpz_conv(const awk_value_t *arg, mpz_ptr tmp) { @@ -71,6 +77,8 @@ mpz_conv(const awk_value_t *arg, mpz_ptr tmp) } } +/* array_set_mpz --- set an array element to an MPZ value */ + static void array_set_mpz(awk_array_t array, const char *sub, size_t sublen, mpz_ptr num) { @@ -136,8 +144,7 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused) array_set_number(array, "quotient", 8, quotient); array_set_number(array, "remainder", 9, remainder); #ifdef HAVE_MPFR - } - else { + } else { /* extended precision */ mpz_ptr numer, denom; mpz_t numer_tmp, denom_tmp; @@ -155,11 +162,13 @@ do_intdiv(int nargs, awk_value_t *result, struct awk_ext_func *unused) return make_number(-1, result); } if (mpz_sgn(denom) == 0) { - warning(ext_id, _("intdiv: division by zero attempted")); if (numer == numer_tmp) mpz_clear(numer); if (denom == denom_tmp) mpz_clear(denom); + + fatal(ext_id, _("intdiv: division by zero attempted")); + // won't get here, but keep the compiler happy return make_number(-1, result); } |