build: new configure option --enable-gcc-warnings
This has a similar meaning as in other GNU applications such as coreutils and Emacs. * NEWS: Document it. * .gitignore: Remove redundant build-aux. Remove gnu, since gnu/Makefile.am is now in git. Add gnu/.gitignore, gnu/charset.alias, gnu/*.h, gnu/*/ to cover autogenerated files. * bootstrap.conf (gnulib_mk): Remove. * configure.ac: Add support for --enable-gcc-warnings, taken from coreutils and simplified. * gnu/Makefile.am: New file. Formerly this was autogenerated, but the autogenerated file has been renamed to gnulib.mk, its usual name when bootstrapping from gnulib. This way, AM_CFLAGS can incorporate warning options. * gnulib.modules: Add manywarnings. * lib/Makefile.am, src/Makefile.am (AM_CFLAGS): New macro, incorporating warning options. * lib/attr-xattr.in.h (ENOATTR): New macro, if not already defined. * src/buffer.c (magic): Don't rely on incomplete initializers. * src/common.h (report_difference): Add printf format attribute. * src/system.c (sys_exec_command, sys_exec_info_script) (sys_exec_checkpoint_script): * src/tar.c (update_argv): Add casts to char * to pacify GCC warnings about using string literals in a char * context. * src/xattrs.c, src/xattrs.h (xattrs_clear_setup): Declare parameters as (void), not (). * src/xheader.c (xheader_format_name): Initialize pptr to null, to pacify GCC. Remove unnecessary test of nptr versus null.
This commit is contained in:
6
.gitignore
vendored
6
.gitignore
vendored
@@ -16,14 +16,16 @@ Makefile
|
|||||||
Makefile.in
|
Makefile.in
|
||||||
aclocal.m4
|
aclocal.m4
|
||||||
autom4te.cache
|
autom4te.cache
|
||||||
build-aux
|
|
||||||
build-aux/
|
build-aux/
|
||||||
config.h
|
config.h
|
||||||
config.h.in
|
config.h.in
|
||||||
config.log
|
config.log
|
||||||
config.status
|
config.status
|
||||||
configure
|
configure
|
||||||
gnu
|
gnu/.gitignore
|
||||||
|
gnu/charset.alias
|
||||||
|
gnu/*.h
|
||||||
|
gnu/*/
|
||||||
gnulib
|
gnulib
|
||||||
libtool
|
libtool
|
||||||
m4
|
m4
|
||||||
|
|||||||
8
NEWS
8
NEWS
@@ -1,4 +1,4 @@
|
|||||||
GNU tar NEWS - User visible changes. 2012-11-19
|
GNU tar NEWS - User visible changes. 2012-12-18
|
||||||
Please send GNU tar bug reports to <bug-tar@gnu.org>
|
Please send GNU tar bug reports to <bug-tar@gnu.org>
|
||||||
|
|
||||||
|
|
||||||
@@ -11,9 +11,7 @@ adjusted to quote 'like this' (with apostrophes) instead of `like this'
|
|||||||
(with an accent grave character and an apostrophe). This tracks
|
(with an accent grave character and an apostrophe). This tracks
|
||||||
recent changes to the GNU coding standards.
|
recent changes to the GNU coding standards.
|
||||||
|
|
||||||
* New features
|
* --owner and --group names and numbers
|
||||||
|
|
||||||
** --owner and --group names and numbers
|
|
||||||
|
|
||||||
The --owner and --group options now accept operands of the form
|
The --owner and --group options now accept operands of the form
|
||||||
NAME:NUM, so that you can specify both symbolic name and numeric ID
|
NAME:NUM, so that you can specify both symbolic name and numeric ID
|
||||||
@@ -45,6 +43,8 @@ Additionally, the options --xattrs-include and --xattrs-exclude allow
|
|||||||
you to selectively control for which files to store (or extract) the
|
you to selectively control for which files to store (or extract) the
|
||||||
extended attributes.
|
extended attributes.
|
||||||
|
|
||||||
|
* New configure option --enable-gcc-warnings, intended for debugging.
|
||||||
|
|
||||||
|
|
||||||
version 1.26 - Sergey Poznyakoff, 2011-03-12
|
version 1.26 - Sergey Poznyakoff, 2011-03-12
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
|
|
||||||
source_base=gnu
|
source_base=gnu
|
||||||
gnulib_name=libgnu
|
gnulib_name=libgnu
|
||||||
gnulib_mk=Makefile.am
|
|
||||||
|
|
||||||
# We don't need these modules, even though gnulib-tool mistakenly
|
# We don't need these modules, even though gnulib-tool mistakenly
|
||||||
# includes them because of gettext dependencies.
|
# includes them because of gettext dependencies.
|
||||||
|
|||||||
80
configure.ac
80
configure.ac
@@ -113,6 +113,86 @@ gl_INIT
|
|||||||
# paxutils modules
|
# paxutils modules
|
||||||
tar_PAXUTILS
|
tar_PAXUTILS
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([gcc-warnings],
|
||||||
|
[AS_HELP_STRING([--enable-gcc-warnings],
|
||||||
|
[turn on many GCC warnings (for developers; best with GNU make)])],
|
||||||
|
[case $enableval in
|
||||||
|
yes|no) ;;
|
||||||
|
*) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
|
||||||
|
esac
|
||||||
|
gl_gcc_warnings=$enableval],
|
||||||
|
[if test -d "$srcdir"/.git; then
|
||||||
|
gl_gcc_warnings=yes
|
||||||
|
else
|
||||||
|
gl_gcc_warnings=no
|
||||||
|
fi]
|
||||||
|
)
|
||||||
|
|
||||||
|
if test "$gl_gcc_warnings" = yes; then
|
||||||
|
gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
|
||||||
|
AC_SUBST([WERROR_CFLAGS])
|
||||||
|
|
||||||
|
nw=
|
||||||
|
# This, $nw, is the list of warnings we disable.
|
||||||
|
nw="$nw -Wformat-nonliteral" # warnings in Fedora 17 stdio.h
|
||||||
|
nw="$nw -Wvla" # warnings in gettext.h
|
||||||
|
nw="$nw -Wswitch-default" # Too many warnings for now
|
||||||
|
nw="$nw -Wunsafe-loop-optimizations" # It's OK to omit unsafe optimizations.
|
||||||
|
nw="$nw -Winline" # It's OK to not inline.
|
||||||
|
nw="$nw -Wstrict-overflow" # It's OK to optimize strictly.
|
||||||
|
nw="$nw -Wsuggest-attribute=pure" # Too many warnings for now.
|
||||||
|
|
||||||
|
gl_MANYWARN_ALL_GCC([ws])
|
||||||
|
gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
|
||||||
|
for w in $ws; do
|
||||||
|
gl_WARN_ADD([$w])
|
||||||
|
done
|
||||||
|
gl_WARN_ADD([-Wno-sign-compare]) # Too many warnings for now
|
||||||
|
gl_WARN_ADD([-Wno-type-limits]) # It's OK to optimize based on types.
|
||||||
|
gl_WARN_ADD([-Wno-unused-parameter]) # Too many warnings for now
|
||||||
|
gl_WARN_ADD([-Wno-format-nonliteral])
|
||||||
|
|
||||||
|
gl_WARN_ADD([-fdiagnostics-show-option])
|
||||||
|
gl_WARN_ADD([-funit-at-a-time])
|
||||||
|
|
||||||
|
AC_SUBST([WARN_CFLAGS])
|
||||||
|
|
||||||
|
AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
|
||||||
|
AH_VERBATIM([FORTIFY_SOURCE],
|
||||||
|
[/* Enable compile-time and run-time bounds-checking, and some warnings,
|
||||||
|
without upsetting glibc 2.15+. */
|
||||||
|
#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__
|
||||||
|
# define _FORTIFY_SOURCE 2
|
||||||
|
#endif
|
||||||
|
])
|
||||||
|
AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
|
||||||
|
|
||||||
|
# Use a slightly smaller set of warning options for lib/.
|
||||||
|
# Remove the following and save the result in GNULIB_WARN_CFLAGS.
|
||||||
|
nw=
|
||||||
|
nw="$nw -Wmissing-prototypes"
|
||||||
|
nw="$nw -Wunused-macros"
|
||||||
|
#
|
||||||
|
# These are for argp.
|
||||||
|
nw="$nw -Wmissing-field-initializers"
|
||||||
|
nw="$nw -Wshadow"
|
||||||
|
#
|
||||||
|
gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw])
|
||||||
|
|
||||||
|
# This is also for argp.
|
||||||
|
gl_WARN_ADD([-Wno-missing-field-initializers], [GNULIB_WARN_CFLAGS])
|
||||||
|
|
||||||
|
AC_SUBST([GNULIB_WARN_CFLAGS])
|
||||||
|
|
||||||
|
# For gnulib-tests, the set is slightly smaller still.
|
||||||
|
nw=
|
||||||
|
# It's not worth being this picky about test programs.
|
||||||
|
nw="$nw -Wsuggest-attribute=const"
|
||||||
|
gl_MANYWARN_COMPLEMENT([GNULIB_TEST_WARN_CFLAGS],
|
||||||
|
[$GNULIB_WARN_CFLAGS], [$nw])
|
||||||
|
AC_SUBST([GNULIB_TEST_WARN_CFLAGS])
|
||||||
|
fi
|
||||||
|
|
||||||
TAR_HEADERS_ATTR_XATTR_H
|
TAR_HEADERS_ATTR_XATTR_H
|
||||||
|
|
||||||
AC_CHECK_FUNCS_ONCE([fchmod fchown fsync lstat mkfifo readlink symlink])
|
AC_CHECK_FUNCS_ONCE([fchmod fchown fsync lstat mkfifo readlink symlink])
|
||||||
|
|||||||
3
gnu/Makefile.am
Normal file
3
gnu/Makefile.am
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Make the subset of Gnulib that GNU tar needs.
|
||||||
|
include gnulib.mk
|
||||||
|
AM_CFLAGS += $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
|
||||||
@@ -34,6 +34,7 @@ inttypes
|
|||||||
lchown
|
lchown
|
||||||
linkat
|
linkat
|
||||||
localcharset
|
localcharset
|
||||||
|
manywarnings
|
||||||
mkdtemp
|
mkdtemp
|
||||||
mkfifoat
|
mkfifoat
|
||||||
modechange
|
modechange
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ rmt-command.h : Makefile
|
|||||||
BUILT_SOURCES = rmt-command.h
|
BUILT_SOURCES = rmt-command.h
|
||||||
CLEANFILES = rmt-command.h rmt-command.h-t
|
CLEANFILES = rmt-command.h rmt-command.h-t
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/gnu -I../ -I../gnu
|
AM_CPPFLAGS = -I$(top_srcdir)/gnu -I../ -I../gnu
|
||||||
|
AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
|
||||||
|
|
||||||
noinst_HEADERS = system.h system-ioctl.h rmt.h paxlib.h stdopen.h xattr-at.h
|
noinst_HEADERS = system.h system-ioctl.h rmt.h paxlib.h stdopen.h xattr-at.h
|
||||||
libtar_a_SOURCES = \
|
libtar_a_SOURCES = \
|
||||||
@@ -44,8 +45,8 @@ attr/xattr.h: attr-xattr.in.h $(top_builddir)/config.status
|
|||||||
$(AM_V_at)$(MKDIR_P) attr
|
$(AM_V_at)$(MKDIR_P) attr
|
||||||
$(AM_V_GEN)rm -f $@-t $@ && \
|
$(AM_V_GEN)rm -f $@-t $@ && \
|
||||||
cp $(srcdir)/attr-xattr.in.h attr/xattr.h
|
cp $(srcdir)/attr-xattr.in.h attr/xattr.h
|
||||||
|
|
||||||
MOSTLYCLEANFILES = attr/xattr.h attr/xattr.h
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
MOSTLYCLEANFILES = attr/xattr.h
|
||||||
|
|
||||||
EXTRA_DIST = attr-xattr.in.h
|
EXTRA_DIST = attr-xattr.in.h
|
||||||
|
|||||||
@@ -17,6 +17,9 @@
|
|||||||
#ifndef TAR_ATTR_XATTR_H
|
#ifndef TAR_ATTR_XATTR_H
|
||||||
#define TAR_ATTR_XATTR_H
|
#define TAR_ATTR_XATTR_H
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifndef ENOATTR
|
||||||
|
# define ENOATTR ENODATA /* No such attribute */
|
||||||
|
#endif
|
||||||
|
|
||||||
/* setting */
|
/* setting */
|
||||||
static inline int setxattr (const char *path, const char *name, const void
|
static inline int setxattr (const char *path, const char *name, const void
|
||||||
@@ -55,4 +58,3 @@ static inline ssize_t flistxattr (int filedes, char *list, size_t size)
|
|||||||
{ errno = ENOTSUP; return -1; }
|
{ errno = ENOTSUP; return -1; }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ tar_SOURCES = \
|
|||||||
xattrs.c
|
xattrs.c
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib -I../lib
|
AM_CPPFLAGS = -I$(top_srcdir)/gnu -I../ -I../gnu -I$(top_srcdir)/lib -I../lib
|
||||||
|
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
|
||||||
|
|
||||||
LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV)
|
LDADD = ../lib/libtar.a ../gnu/libgnu.a $(LIBINTL) $(LIBICONV)
|
||||||
|
|
||||||
|
|||||||
@@ -289,8 +289,8 @@ struct zip_program
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct zip_magic const magic[] = {
|
static struct zip_magic const magic[] = {
|
||||||
{ ct_none, },
|
{ ct_none, 0, 0 },
|
||||||
{ ct_tar },
|
{ ct_tar, 0, 0 },
|
||||||
{ ct_compress, 2, "\037\235" },
|
{ ct_compress, 2, "\037\235" },
|
||||||
{ ct_gzip, 2, "\037\213" },
|
{ ct_gzip, 2, "\037\213" },
|
||||||
{ ct_bzip2, 3, "BZh" },
|
{ ct_bzip2, 3, "BZh" },
|
||||||
|
|||||||
@@ -781,7 +781,8 @@ void sys_exec_checkpoint_script (const char *script_name,
|
|||||||
int checkpoint_number);
|
int checkpoint_number);
|
||||||
|
|
||||||
/* Module compare.c */
|
/* Module compare.c */
|
||||||
void report_difference (struct tar_stat_info *st, const char *message, ...);
|
void report_difference (struct tar_stat_info *st, const char *message, ...)
|
||||||
|
__attribute__ ((format (printf, 2, 3)));
|
||||||
|
|
||||||
/* Module sparse.c */
|
/* Module sparse.c */
|
||||||
bool sparse_member_p (struct tar_stat_info *st);
|
bool sparse_member_p (struct tar_stat_info *st);
|
||||||
|
|||||||
12
src/system.c
12
src/system.c
@@ -722,8 +722,8 @@ sys_exec_command (char *file_name, int typechar, struct tar_stat_info *st)
|
|||||||
|
|
||||||
stat_to_env (file_name, typechar, st);
|
stat_to_env (file_name, typechar, st);
|
||||||
|
|
||||||
argv[0] = "/bin/sh";
|
argv[0] = (char *) "/bin/sh";
|
||||||
argv[1] = "-c";
|
argv[1] = (char *) "-c";
|
||||||
argv[2] = to_command_option;
|
argv[2] = to_command_option;
|
||||||
argv[3] = NULL;
|
argv[3] = NULL;
|
||||||
|
|
||||||
@@ -837,8 +837,8 @@ sys_exec_info_script (const char **archive_name, int volume_number)
|
|||||||
|
|
||||||
xclose (p[PREAD]);
|
xclose (p[PREAD]);
|
||||||
|
|
||||||
argv[0] = "/bin/sh";
|
argv[0] = (char *) "/bin/sh";
|
||||||
argv[1] = "-c";
|
argv[1] = (char *) "-c";
|
||||||
argv[2] = (char *) info_script_option;
|
argv[2] = (char *) info_script_option;
|
||||||
argv[3] = NULL;
|
argv[3] = NULL;
|
||||||
|
|
||||||
@@ -885,8 +885,8 @@ sys_exec_checkpoint_script (const char *script_name,
|
|||||||
setenv ("TAR_FORMAT",
|
setenv ("TAR_FORMAT",
|
||||||
archive_format_string (current_format == DEFAULT_FORMAT ?
|
archive_format_string (current_format == DEFAULT_FORMAT ?
|
||||||
archive_format : current_format), 1);
|
archive_format : current_format), 1);
|
||||||
argv[0] = "/bin/sh";
|
argv[0] = (char *) "/bin/sh";
|
||||||
argv[1] = "-c";
|
argv[1] = (char *) "-c";
|
||||||
argv[2] = (char *) script_name;
|
argv[2] = (char *) script_name;
|
||||||
argv[3] = NULL;
|
argv[3] = NULL;
|
||||||
|
|
||||||
|
|||||||
@@ -1287,7 +1287,7 @@ update_argv (const char *filename, struct argp_state *state)
|
|||||||
for (i = state->next, p = start; *p; p += strlen (p) + 1, i++)
|
for (i = state->next, p = start; *p; p += strlen (p) + 1, i++)
|
||||||
{
|
{
|
||||||
if (term == 0 && p[0] == '-')
|
if (term == 0 && p[0] == '-')
|
||||||
state->argv[i++] = "--add-file";
|
state->argv[i++] = (char *) "--add-file";
|
||||||
state->argv[i] = p;
|
state->argv[i] = p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -407,7 +407,7 @@ clear_mask_map (struct xattrs_mask_map *mask_map)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xattrs_clear_setup ()
|
xattrs_clear_setup (void)
|
||||||
{
|
{
|
||||||
clear_mask_map (&xattrs_setup.incl);
|
clear_mask_map (&xattrs_setup.incl);
|
||||||
clear_mask_map (&xattrs_setup.excl);
|
clear_mask_map (&xattrs_setup.excl);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
extern void xattrs_mask_add (const char *mask, bool incl);
|
extern void xattrs_mask_add (const char *mask, bool incl);
|
||||||
|
|
||||||
/* clear helping structures when tar finishes */
|
/* clear helping structures when tar finishes */
|
||||||
extern void xattrs_clear_setup ();
|
extern void xattrs_clear_setup (void);
|
||||||
|
|
||||||
extern void xattrs_acls_get (int parentfd, char const *file_name,
|
extern void xattrs_acls_get (int parentfd, char const *file_name,
|
||||||
struct tar_stat_info *st, int fd, int xisfile);
|
struct tar_stat_info *st, int fd, int xisfile);
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n)
|
|||||||
char *dir = NULL;
|
char *dir = NULL;
|
||||||
char *base = NULL;
|
char *base = NULL;
|
||||||
char pidbuf[UINTMAX_STRSIZE_BOUND];
|
char pidbuf[UINTMAX_STRSIZE_BOUND];
|
||||||
char const *pptr;
|
char const *pptr = NULL;
|
||||||
char nbuf[UINTMAX_STRSIZE_BOUND];
|
char nbuf[UINTMAX_STRSIZE_BOUND];
|
||||||
char const *nptr = NULL;
|
char const *nptr = NULL;
|
||||||
|
|
||||||
@@ -335,13 +335,10 @@ xheader_format_name (struct tar_stat_info *st, const char *fmt, size_t n)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'n':
|
case 'n':
|
||||||
if (nptr)
|
|
||||||
{
|
|
||||||
q = stpcpy (q, nptr);
|
q = stpcpy (q, nptr);
|
||||||
p += 2;
|
p += 2;
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
/* else fall through */
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
*q++ = *p++;
|
*q++ = *p++;
|
||||||
|
|||||||
Reference in New Issue
Block a user