Without this, INTEGER_TO_PY() produces clang errrors like this on some
platforms:
_helpers.c:1019:41: error: comparison of unsigned expression >= 0 is always true
[-Werror,-Wtautological-compare]
(((st->st_uid) >= 0) ? PyLong_FromUnsignedLongLong(st->st_uid) :
PyLong_FromLongLong(st->st_uid)),
~~~~~~~~~~~~ ^ ~
Thanks to Greg Troxel <gdt@lexort.com> for the report.
Signed-off-by: Rob Browning <rlb@defaultvalue.org>
OS:=$(shell uname | sed 's/[-_].*//')
OS:=$(shell uname | sed 's/[-_].*//')
-CFLAGS := -Wall -O2 -Werror $(PYINCLUDE) $(CFLAGS)
+CFLAGS := -Wall -O2 -Werror -Wno-unknown-pragmas $(PYINCLUDE) $(CFLAGS)
SOEXT:=.so
ifeq ($(OS),CYGWIN)
SOEXT:=.so
ifeq ($(OS),CYGWIN)
+// At the moment any code that calls INTGER_TO_PY() will have to
+// disable -Wtautological-compare for clang. See below.
#define INTEGER_TO_PY(x) \
(((x) >= 0) ? PyLong_FromUnsignedLongLong(x) : PyLong_FromLongLong(x))
#define INTEGER_TO_PY(x) \
(((x) >= 0) ? PyLong_FromUnsignedLongLong(x) : PyLong_FromLongLong(x))
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wtautological-compare" // For INTEGER_TO_PY().
+
static PyObject *stat_struct_to_py(const struct stat *st,
const char *filename,
int fd)
static PyObject *stat_struct_to_py(const struct stat *st,
const char *filename,
int fd)
(long) BUP_STAT_CTIME_NS(st));
}
(long) BUP_STAT_CTIME_NS(st));
}
+#pragma clang diagnostic pop // ignored "-Wtautological-compare"
static PyObject *bup_stat(PyObject *self, PyObject *args)
{
static PyObject *bup_stat(PyObject *self, PyObject *args)
{
return;
#ifdef HAVE_UTIMENSAT
return;
#ifdef HAVE_UTIMENSAT
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wtautological-compare" // For INTEGER_TO_PY().
{
PyObject *value;
value = INTEGER_TO_PY(AT_FDCWD);
{
PyObject *value;
value = INTEGER_TO_PY(AT_FDCWD);
PyObject_SetAttrString(m, "UTIME_NOW", value);
Py_DECREF(value);
}
PyObject_SetAttrString(m, "UTIME_NOW", value);
Py_DECREF(value);
}
+#pragma clang diagnostic pop // ignored "-Wtautological-compare"
#endif
e = getenv("BUP_FORCE_TTY");
#endif
e = getenv("BUP_FORCE_TTY");