-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Jim Meyering on 8/20/2009 7:59 AM: > Eric Blake wrote: > >> are more warnings in gnulib not worth fixing, but these looked obvious; >> meanwhile the warnings from chcon onwards halted the build since you add >> -Werror in src): >> >> CC exclude.o >> exclude.c: In function `fnmatch_pattern_has_wildcards': >> exclude.c:116: warning: initialization discards qualifiers from pointer >> target type
Assigning a string literal to non-const char*. >> exclude.c: At top level: >> exclude.c:204: warning: no previous prototype for 'new_exclude_segment' >> exclude.c:333: warning: no previous prototype for 'excluded_file_pattern_p' >> exclude.c:356: warning: no previous prototype for 'excluded_file_name_p' > > I think those are new and should be fixed. I think all three of these new functions are for internal use only; so adding static fixes the issue. > >> CC vasnprintf.o >> vasnprintf.c:143:1: warning: macro "DCHAR_SET" is not used >> vasnprintf.c:258:1: warning: macro "decimal_point_char_defined" is not used >> vasnprintf.c:261: warning: function declaration isn't a prototype >> vasnprintf.c: In function `decimal_point_char': >> vasnprintf.c:261: warning: old-style parameter declaration > > It'd be great to fix more of the ones in gnulib. > I haven't spent much time on things that belong to Bruno. > There are a few in things I could change, but for which > the only possible change appears to make matters worse. Avoiding unused macros is overkill, so I won't touch that. But the old-style declaration is easy - add an explicit void. > >> CC chcon.o >> In file included from chcon.c:28: >> ../lib/selinux-at.h:34: warning: declaration of 'dirfd' shadows a global >> declaration >> /usr/include/sys/dirent.h:68: warning: shadowed declaration is here > > This is a good one to fix. Easy, too. > Just rename the parameters via e.g., s/dirfd/dir_fd/. Done (well, I see Jim wrote an email on the same subject while I was typing this email). I'm pushing this: - -- Don't work too hard, make some time for fun as well! Eric Blake [email protected] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkqNXHsACgkQ84KuGfSFAYCF4gCglpPSx/wqYVIbtglC2EFh0LXB pr0AoLro9h/VV6etJsY4OmwF0+ROR+aQ =+fO8 -----END PGP SIGNATURE-----
From bab00aef25c236cd0b910fa70465854d94cdbf0e Mon Sep 17 00:00:00 2001 From: Eric Blake <[email protected]> Date: Thu, 20 Aug 2009 08:21:46 -0600 Subject: [PATCH] build: avoid some compiler warnings * lib/selinux-at.h: Use dir_fd, not dirfd, to avoid shadowing. * lib/exclude.c (fnmatch_pattern_has_wildcards): Use correct type. (new_exclude_segment, excluded_file_pattern_p) (excluded_file_name_p): Reduce scope. * lib/vasnprintf.c (decimal_point_char): Avoid warning on old-style declaration. Signed-off-by: Eric Blake <[email protected]> --- ChangeLog | 11 +++++++++++ lib/exclude.c | 8 ++++---- lib/selinux-at.h | 20 ++++++++++---------- lib/vasnprintf.c | 2 +- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index d50fcb0..23a9238 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2009-08-20 Eric Blake <[email protected]> + + build: avoid some compiler warnings + * lib/selinux-at.h: Use dir_fd, not dirfd, to avoid shadowing. + * lib/exclude.c (fnmatch_pattern_has_wildcards): Use correct + type. + (new_exclude_segment, excluded_file_pattern_p) + (excluded_file_name_p): Reduce scope. + * lib/vasnprintf.c (decimal_point_char): Avoid warning on + old-style declaration. + 2009-08-20 Simon Josefsson <[email protected]> * tests/test-exclude1.sh: Handle Windows EOL. diff --git a/lib/exclude.c b/lib/exclude.c index d4baab5..32f2a0a 100644 --- a/lib/exclude.c +++ b/lib/exclude.c @@ -113,7 +113,7 @@ struct exclude bool fnmatch_pattern_has_wildcards (const char *str, int options) { - char *cset = "\\?*[]"; + const char *cset = "\\?*[]"; if (options & FNM_NOESCAPE) cset++; while (*str) @@ -199,7 +199,7 @@ string_free (void *data) /* Create new exclude segment of given TYPE and OPTIONS, and attach it to the tail of list in EX */ -struct exclude_segment * +static struct exclude_segment * new_exclude_segment (struct exclude *ex, enum exclude_type type, int options) { struct exclude_segment *sp = xzalloc (sizeof (struct exclude_segment)); @@ -328,7 +328,7 @@ exclude_fnmatch (char const *pattern, char const *f, int options) /* Return true if the exclude_pattern segment SEG excludes F. */ -bool +static bool excluded_file_pattern_p (struct exclude_segment const *seg, char const *f) { size_t exclude_count = seg->v.pat.exclude_count; @@ -350,7 +350,7 @@ excluded_file_pattern_p (struct exclude_segment const *seg, char const *f) /* Return true if the exclude_hash segment SEG excludes F. BUFFER is an auxiliary storage of the same length as F (with nul terminator included) */ -bool +static bool excluded_file_name_p (struct exclude_segment const *seg, char const *f, char *buffer) { diff --git a/lib/selinux-at.h b/lib/selinux-at.h index 9716fe9..1d84c19 100644 --- a/lib/selinux-at.h +++ b/lib/selinux-at.h @@ -20,33 +20,33 @@ /* These are the dir-fd-relative variants of the functions without the "at" suffix. For example, getfileconat (AT_FDCWD, file, &c) is usually equivalent to getfilecon (file, &c). The emulation is accomplished - by first attempting getfilecon ("/proc/self/fd/DIRFD/FILE", &c). + by first attempting getfilecon ("/proc/self/fd/DIR_FD/FILE", &c). Failing that, simulate it via save_cwd/fchdir/getfilecon/restore_cwd. If either the save_cwd or the restore_cwd fails (relatively unlikely), then give a diagnostic and exit nonzero. */ /* dir-fd-relative getfilecon. Set *CON to the SELinux security context - of the file specified by DIRFD and FILE and return the length of *CON. - DIRFD and FILE are interpreted as for fstatat[*]. A non-NULL *CON + of the file specified by DIR_FD and FILE and return the length of *CON. + DIR_FD and FILE are interpreted as for fstatat[*]. A non-NULL *CON must be freed with freecon. Upon error, set *CON to NULL, set errno and return -1. [*] with flags=0 here, with flags=AT_SYMLINK_NOFOLLOW for lgetfileconat */ -int getfileconat (int dirfd, char const *file, security_context_t *con); +int getfileconat (int dir_fd, char const *file, security_context_t *con); /* dir-fd-relative lgetfilecon. This function is just like getfileconat, - except when DIRFD and FILE specify a symlink: lgetfileconat operates on + except when DIR_FD and FILE specify a symlink: lgetfileconat operates on the symlink, while getfileconat operates on the referent of the symlink. */ -int lgetfileconat (int dirfd, char const *file, security_context_t *con); +int lgetfileconat (int dir_fd, char const *file, security_context_t *con); /* dir-fd-relative setfilecon. Set the SELinux security context of - the file specified by DIRFD and FILE to CON. DIRFD and FILE are + the file specified by DIR_FD and FILE to CON. DIR_FD and FILE are interpreted as for fstatat[*]. Upon success, return 0. Otherwise, return -1 and set errno. */ -int setfileconat (int dirfd, char const *file, security_context_t con); +int setfileconat (int dir_fd, char const *file, security_context_t con); /* dir-fd-relative lsetfilecon. This function is just like setfileconat, except that rather than dereferencing a symlink, this function affects it. */ /* dir-fd-relative lsetfilecon. This function is just like setfileconat, - except when DIRFD and FILE specify a symlink: lsetfileconat operates on + except when DIR_FD and FILE specify a symlink: lsetfileconat operates on the symlink, while setfileconat operates on the referent of the symlink. */ -int lsetfileconat (int dirfd, char const *file, security_context_t con); +int lsetfileconat (int dir_fd, char const *file, security_context_t con); diff --git a/lib/vasnprintf.c b/lib/vasnprintf.c index bff204b..661445c 100644 --- a/lib/vasnprintf.c +++ b/lib/vasnprintf.c @@ -257,7 +257,7 @@ local_wcsnlen (const wchar_t *s, size_t maxlen) # ifndef decimal_point_char_defined # define decimal_point_char_defined 1 static char -decimal_point_char () +decimal_point_char (void) { const char *point; /* Determine it in a multithread-safe way. We know nl_langinfo is -- 1.6.3.3.334.g916e1
