#endif
-#ifdef __clang__
-#define INTEGRAL_ASSIGNMENT_FITS(dest, src) \
- ({ \
- *(dest) = (src); \
- *(dest) == (src) && (*(dest) < 1) == ((src) < 1); \
- })
-#else
// Disabling sign-compare here should be fine since we're explicitly
// checking for a sign mismatch, i.e. if the signs don't match, then
// it doesn't matter what the value comparison says.
_Pragma("GCC diagnostic push"); \
_Pragma("GCC diagnostic ignored \"-Wsign-compare\""); \
*(dest) = (src); \
- *(dest) == (src) && (*(dest) < 1) == ((src) < 1); \
+ int result = *(dest) == (src) && (*(dest) < 1) == ((src) < 1); \
_Pragma("GCC diagnostic pop"); \
+ result; \
})
-#endif
// At the moment any code that calls INTEGER_TO_PY() will have to
unsigned char *buf = NULL;
Py_ssize_t sbuf_len;
PyObject *py_min_sparse_len, *py_prev_sparse_len;
- if (!PyArg_ParseTuple(args, "it#OO",
+ if (!PyArg_ParseTuple(args, "i" rbuf_argf "OO",
&fd, &buf, &sbuf_len,
&py_min_sparse_len, &py_prev_sparse_len))
return NULL;
Py_ssize_t byte;
int bit;
- if (!PyArg_ParseTuple(args, "t#t#", &buf1, &len1, &buf2, &len2))
+ if (!PyArg_ParseTuple(args, rbuf_argf rbuf_argf, &buf1, &len1, &buf2, &len2))
return NULL;
bit = 0;
memset(shabuf, 0, sizeof(shabuf));
for (i=0; i < 20/4; i++)
shabuf[i] = random();
- return Py_BuildValue("s#", shabuf, 20);
+ return Py_BuildValue(rbuf_argf, shabuf, 20);
}
PyObject *py_attr;
int fd;
- if (!PyArg_ParseTuple(args, "sO", &path, &py_attr))
+ if (!PyArg_ParseTuple(args, cstr_argf "O", &path, &py_attr))
return NULL;
if (!bup_uint_from_py(&attr, py_attr, "attr"))