1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-12-22 15:58:50 -05:00

lib/dload.c: fix compiler warnings generated by -Wfloat-equal

* introduces new macro in util.h (DOUBLE_EQ) for properly comparing
  floating point values

Signed-off-by: Dave Reisner <d@falconindy.com>
Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dave Reisner 2011-03-17 22:56:17 -04:00 committed by Dan McGee
parent db49c4a7f0
commit 768451c5e3
2 changed files with 8 additions and 3 deletions

View File

@ -92,7 +92,7 @@ static int curl_progress(void *filename, double dltotal, double dlnow,
(void)ultotal;
(void)ulnow;
if(dltotal == 0 || prevprogress == dltotal) {
if(DOUBLE_EQ(dltotal, 0) || DOUBLE_EQ(prevprogress, dltotal)) {
return 0;
}
@ -230,7 +230,7 @@ static int curl_download_internal(const char *url, const char *localpath,
/* time condition was met and we didn't download anything. we need to
* clean up the 0 byte .part file that's left behind. */
if(bytes_dl == 0 && timecond == 1) {
if(DOUBLE_EQ(bytes_dl, 0) && timecond == 1) {
ret = 1;
unlink(tempfile);
goto cleanup;
@ -249,7 +249,8 @@ static int curl_download_internal(const char *url, const char *localpath,
/* remote_size isn't necessarily the full size of the file, just what the
* server reported as remaining to download. compare it to what curl reported
* as actually being transferred during curl_easy_perform() */
if((remote_size != -1 && bytes_dl != -1) && bytes_dl != remote_size) {
if(!DOUBLE_EQ(remote_size, -1) && !DOUBLE_EQ(bytes_dl, -1) &&
!DOUBLE_EQ(bytes_dl, remote_size)) {
pm_errno = PM_ERR_RETRIEVE;
_alpm_log(PM_LOG_ERROR, _("%s appears to be truncated: %jd/%jd bytes\n"),
filename, (intmax_t)bytes_dl, (intmax_t)remote_size);

View File

@ -36,6 +36,8 @@
#include <time.h>
#include <sys/stat.h> /* struct stat */
#include <archive.h> /* struct archive */
#include <math.h> /* fabs */
#include <float.h> /* DBL_EPSILON */
#ifdef ENABLE_NLS
#include <libintl.h> /* here so it doesn't need to be included elsewhere */
@ -61,6 +63,8 @@
_alpm_log(PM_LOG_DEBUG, "returning error %d from %s : %s\n", err, __func__, alpm_strerrorlast()); \
return (ret); } while(0)
#define DOUBLE_EQ(x, y) (fabs((x) - (y)) < DBL_EPSILON)
/**
* Used as a buffer/state holder for _alpm_archive_fgets().
*/