Makefile.in
aclocal.m4
autom4te.cache
-build-aux
build-aux/
config.h
config.h.in
config.log
config.status
configure
-gnu
+gnu/.gitignore
+gnu/charset.alias
+gnu/*.h
+gnu/*/
gnulib
libtool
m4
-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>
\f
(with an accent grave character and an apostrophe). This tracks
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
NAME:NUM, so that you can specify both symbolic name and numeric ID
you to selectively control for which files to store (or extract) the
extended attributes.
+* New configure option --enable-gcc-warnings, intended for debugging.
+
\f
version 1.26 - Sergey Poznyakoff, 2011-03-12
source_base=gnu
gnulib_name=libgnu
-gnulib_mk=Makefile.am
# We don't need these modules, even though gnulib-tool mistakenly
# includes them because of gettext dependencies.
# paxutils modules
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
AC_CHECK_FUNCS_ONCE([fchmod fchown fsync lstat mkfifo readlink symlink])
--- /dev/null
+# Make the subset of Gnulib that GNU tar needs.
+include gnulib.mk
+AM_CFLAGS += $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS)
lchown
linkat
localcharset
+manywarnings
mkdtemp
mkfifoat
modechange
BUILT_SOURCES = rmt-command.h
CLEANFILES = rmt-command.h rmt-command.h-t
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
libtar_a_SOURCES = \
$(AM_V_at)$(MKDIR_P) attr
$(AM_V_GEN)rm -f $@-t $@ && \
cp $(srcdir)/attr-xattr.in.h attr/xattr.h
-
-MOSTLYCLEANFILES = attr/xattr.h attr/xattr.h
endif
+MOSTLYCLEANFILES = attr/xattr.h
+
EXTRA_DIST = attr-xattr.in.h
#ifndef TAR_ATTR_XATTR_H
#define TAR_ATTR_XATTR_H
#include <errno.h>
+#ifndef ENOATTR
+# define ENOATTR ENODATA /* No such attribute */
+#endif
/* setting */
static inline int setxattr (const char *path, const char *name, const void
{ errno = ENOTSUP; return -1; }
#endif
-
xattrs.c
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)
};
static struct zip_magic const magic[] = {
- { ct_none, },
- { ct_tar },
+ { ct_none, 0, 0 },
+ { ct_tar, 0, 0 },
{ ct_compress, 2, "\037\235" },
{ ct_gzip, 2, "\037\213" },
{ ct_bzip2, 3, "BZh" },
int checkpoint_number);
/* 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 */
bool sparse_member_p (struct tar_stat_info *st);
stat_to_env (file_name, typechar, st);
- argv[0] = "/bin/sh";
- argv[1] = "-c";
+ argv[0] = (char *) "/bin/sh";
+ argv[1] = (char *) "-c";
argv[2] = to_command_option;
argv[3] = NULL;
xclose (p[PREAD]);
- argv[0] = "/bin/sh";
- argv[1] = "-c";
+ argv[0] = (char *) "/bin/sh";
+ argv[1] = (char *) "-c";
argv[2] = (char *) info_script_option;
argv[3] = NULL;
setenv ("TAR_FORMAT",
archive_format_string (current_format == DEFAULT_FORMAT ?
archive_format : current_format), 1);
- argv[0] = "/bin/sh";
- argv[1] = "-c";
+ argv[0] = (char *) "/bin/sh";
+ argv[1] = (char *) "-c";
argv[2] = (char *) script_name;
argv[3] = NULL;
for (i = state->next, p = start; *p; p += strlen (p) + 1, i++)
{
if (term == 0 && p[0] == '-')
- state->argv[i++] = "--add-file";
+ state->argv[i++] = (char *) "--add-file";
state->argv[i] = p;
}
}
case OLD_ARCHIVE_OPTION:
set_archive_format ("v7");
break;
-
+
case OVERWRITE_DIR_OPTION:
old_files_option = DEFAULT_OLD_FILES;
break;
skip_to_ext_fields (char *ptr)
{
/* skip tag name (user/group/default/mask) */
- ptr += strcspn (ptr, ":,\n");
+ ptr += strcspn (ptr, ":,\n");
if (*ptr != ':')
return ptr;
xattrs__acls_set (struct tar_stat_info const *st,
char const *file_name, int type,
char *ptr, size_t len, bool def)
-{
+{
acl_t acl;
if (ptr)
xattrs__acls_get_a (int parentfd, const char *file_name,
struct tar_stat_info *st,
char **ret_ptr, size_t * ret_len)
-{
+{
char *val = NULL;
ssize_t len;
acl_t acl;
xattrs__acls_get_d (int parentfd, char const *file_name,
struct tar_stat_info *st,
char **ret_ptr, size_t * ret_len)
-{
+{
char *val = NULL;
ssize_t len;
acl_t acl;
}
void
-xattrs_clear_setup ()
+xattrs_clear_setup (void)
{
clear_mask_map (&xattrs_setup.incl);
clear_mask_map (&xattrs_setup.excl);
xattrs_masked_out (const char *kw, bool archiving)
{
return xattrs_kw_included (kw, archiving) ?
- xattrs_kw_excluded (kw, archiving) : true;
+ xattrs_kw_excluded (kw, archiving) : true;
}
void
if (xattrs_option && st->xattr_map_size)
{
int i;
-
+
for (i = 0; i < st->xattr_map_size; ++i)
{
char *keyword = st->xattr_map[i].xkey + strlen ("SCHILY.xattr.");
extern void xattrs_mask_add (const char *mask, bool incl);
/* 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,
struct tar_stat_info *st, int fd, int xisfile);
char *dir = NULL;
char *base = NULL;
char pidbuf[UINTMAX_STRSIZE_BOUND];
- char const *pptr;
+ char const *pptr = NULL;
char nbuf[UINTMAX_STRSIZE_BOUND];
char const *nptr = NULL;
break;
case 'n':
- if (nptr)
- {
- q = stpcpy (q, nptr);
- p += 2;
- break;
- }
- /* else fall through */
+ q = stpcpy (q, nptr);
+ p += 2;
+ break;
+
default:
*q++ = *p++;