build: Add -Werror=undef by default, fix fallout
The main thing here is that a ton of stuff has happened in gnulib since we imported `parse-datetime.y`. I cherry-picked a little bit of it, but that upstream doesn't seem to build with `-Wundef`, so I just deleted some hunks. (Note I reindented the warnings consistently) Update submodule: libglnx Closes: #1320 Approved by: jlebon
This commit is contained in:
parent
2e9fea8fa5
commit
7296bf3dcc
|
|
@ -44,6 +44,7 @@ CC_CHECK_FLAGS_APPEND([WARN_CFLAGS], [CFLAGS], [\
|
||||||
-Werror=overflow \
|
-Werror=overflow \
|
||||||
-Werror=int-conversion \
|
-Werror=int-conversion \
|
||||||
-Werror=parenthesis \
|
-Werror=parenthesis \
|
||||||
|
-Werror=undef \
|
||||||
-Werror=incompatible-pointer-types \
|
-Werror=incompatible-pointer-types \
|
||||||
-Werror=misleading-indentation \
|
-Werror=misleading-indentation \
|
||||||
-Werror=missing-include-dirs -Werror=aggregate-return \
|
-Werror=missing-include-dirs -Werror=aggregate-return \
|
||||||
|
|
@ -83,6 +84,9 @@ AC_SUBST([OSTREE_FEATURES])
|
||||||
GLIB_TESTS
|
GLIB_TESTS
|
||||||
LIBGLNX_CONFIGURE
|
LIBGLNX_CONFIGURE
|
||||||
|
|
||||||
|
dnl These bits attempt to mirror https://github.com/coreutils/gnulib/blob/e369b04cca4da1534c98628b8ee4648bfca2bb3a/m4/parse-datetime.m4#L27
|
||||||
|
AC_CHECK_FUNCS([nanotime clock_gettime])
|
||||||
|
AC_STRUCT_TIMEZONE
|
||||||
AC_CHECK_HEADER([sys/xattr.h],,[AC_MSG_ERROR([You must have sys/xattr.h from glibc])])
|
AC_CHECK_HEADER([sys/xattr.h],,[AC_MSG_ERROR([You must have sys/xattr.h from glibc])])
|
||||||
|
|
||||||
AS_IF([test "$YACC" != "bison -y"], [AC_MSG_ERROR([bison not found but required])])
|
AS_IF([test "$YACC" != "bison -y"], [AC_MSG_ERROR([bison not found but required])])
|
||||||
|
|
|
||||||
2
libglnx
2
libglnx
|
|
@ -1 +1 @@
|
||||||
Subproject commit d15a3790074fd982f2611a5b450dea61052dfc0b
|
Subproject commit b36606b366d39c7ddb90ee21d622c0cb1da118ed
|
||||||
|
|
@ -18,9 +18,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _GNU_SOURCE
|
#include "config.h"
|
||||||
#define _GNU_SOURCE
|
|
||||||
#endif
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "ostree-enumtypes.h"
|
#include "ostree-enumtypes.h"
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
/* There's no need to extend the stack, so there's no need to involve
|
/* There's no need to extend the stack, so there's no need to involve
|
||||||
alloca. */
|
alloca. */
|
||||||
|
|
@ -54,11 +55,11 @@ xmemdup (void const *p, size_t s)
|
||||||
static void
|
static void
|
||||||
gettime (struct timespec *ts)
|
gettime (struct timespec *ts)
|
||||||
{
|
{
|
||||||
#if HAVE_NANOTIME
|
#ifdef HAVE_NANOTIME
|
||||||
nanotime (ts);
|
nanotime (ts);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
# if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME
|
# if defined(CLOCK_REALTIME) && defined(HAVE_CLOCK_GETTIME)
|
||||||
if (clock_gettime (CLOCK_REALTIME, ts) == 0)
|
if (clock_gettime (CLOCK_REALTIME, ts) == 0)
|
||||||
return;
|
return;
|
||||||
# endif
|
# endif
|
||||||
|
|
@ -134,13 +135,6 @@ gettime (struct timespec *ts)
|
||||||
|
|
||||||
#define HOUR(x) ((x) * 60)
|
#define HOUR(x) ((x) * 60)
|
||||||
|
|
||||||
/* long_time_t is a signed integer type that contains all time_t values. */
|
|
||||||
#if TIME_T_FITS_IN_LONG_INT
|
|
||||||
typedef long int long_time_t;
|
|
||||||
#else
|
|
||||||
typedef time_t long_time_t;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Convert a possibly-signed character to an unsigned character. This is
|
/* Convert a possibly-signed character to an unsigned character. This is
|
||||||
a bit safer than casting to unsigned char, since it catches some type
|
a bit safer than casting to unsigned char, since it catches some type
|
||||||
errors that the cast doesn't. */
|
errors that the cast doesn't. */
|
||||||
|
|
@ -180,15 +174,11 @@ typedef struct
|
||||||
long int day;
|
long int day;
|
||||||
long int hour;
|
long int hour;
|
||||||
long int minutes;
|
long int minutes;
|
||||||
long_time_t seconds;
|
intmax_t seconds;
|
||||||
long int ns;
|
int ns;
|
||||||
} relative_time;
|
} relative_time;
|
||||||
|
|
||||||
#if HAVE_COMPOUND_LITERALS
|
|
||||||
#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
|
#define RELATIVE_TIME_0 ((relative_time) { 0, 0, 0, 0, 0, 0, 0 })
|
||||||
#else
|
|
||||||
static relative_time const RELATIVE_TIME_0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Information passed to and from the parser. */
|
/* Information passed to and from the parser. */
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
@ -955,7 +945,8 @@ lookup_zone (parser_control const *pc, char const *name)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ! HAVE_TM_GMTOFF
|
// #if ! HAVE_TM_GMTOFF
|
||||||
|
#if 1 // Always true for us
|
||||||
/* Yield the difference between *A and *B,
|
/* Yield the difference between *A and *B,
|
||||||
measured in seconds, ignoring leap seconds.
|
measured in seconds, ignoring leap seconds.
|
||||||
The body of this function is taken directly from the GNU C Library;
|
The body of this function is taken directly from the GNU C Library;
|
||||||
|
|
@ -1580,10 +1571,10 @@ parse_datetime (struct timespec *result, char const *p,
|
||||||
time_t t1 = t0 + d1;
|
time_t t1 = t0 + d1;
|
||||||
long int d2 = 60 * pc.rel.minutes;
|
long int d2 = 60 * pc.rel.minutes;
|
||||||
time_t t2 = t1 + d2;
|
time_t t2 = t1 + d2;
|
||||||
long_time_t d3 = pc.rel.seconds;
|
intmax_t d3 = pc.rel.seconds;
|
||||||
long_time_t t3 = t2 + d3;
|
intmax_t t3 = t2 + d3;
|
||||||
long int d4 = (sum_ns - normalized_ns) / BILLION;
|
long int d4 = (sum_ns - normalized_ns) / BILLION;
|
||||||
long_time_t t4 = t3 + d4;
|
intmax_t t4 = t3 + d4;
|
||||||
time_t t5 = t4;
|
time_t t5 = t4;
|
||||||
|
|
||||||
if ((d1 / (60 * 60) ^ pc.rel.hour)
|
if ((d1 / (60 * 60) ^ pc.rel.hour)
|
||||||
|
|
@ -1611,39 +1602,3 @@ parse_datetime (struct timespec *result, char const *p,
|
||||||
free (tz0);
|
free (tz0);
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if TEST
|
|
||||||
|
|
||||||
int
|
|
||||||
main (int ac, char **av)
|
|
||||||
{
|
|
||||||
char buff[BUFSIZ];
|
|
||||||
|
|
||||||
printf ("Enter date, or blank line to exit.\n\t> ");
|
|
||||||
fflush (stdout);
|
|
||||||
|
|
||||||
buff[BUFSIZ - 1] = '\0';
|
|
||||||
while (fgets (buff, BUFSIZ - 1, stdin) && buff[0])
|
|
||||||
{
|
|
||||||
struct timespec d;
|
|
||||||
struct tm const *tm;
|
|
||||||
if (! parse_datetime (&d, buff, NULL))
|
|
||||||
printf ("Bad format - couldn't convert.\n");
|
|
||||||
else if (! (tm = localtime (&d.tv_sec)))
|
|
||||||
{
|
|
||||||
long int sec = d.tv_sec;
|
|
||||||
printf ("localtime (%ld) failed\n", sec);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int ns = d.tv_nsec;
|
|
||||||
printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n",
|
|
||||||
tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday,
|
|
||||||
tm->tm_hour, tm->tm_min, tm->tm_sec, ns);
|
|
||||||
}
|
|
||||||
printf ("\t> ");
|
|
||||||
fflush (stdout);
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* TEST */
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue