Patchwork misc: clean up compiler warnings

login
register
mail settings
Submitter Andreas Dilger
Date June 10, 2011, 4:52 a.m.
Message ID <1307681558-31407-1-git-send-email-adilger@whamcloud.com>
Download mbox | patch
Permalink /patch/99841/
State Accepted
Headers show

Comments

Andreas Dilger - June 10, 2011, 4:52 a.m.
Fix several types of compiler warnings (unused variables/labels),
uninitialized variables, etc that are hit with gcc -Wall.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
---
 debugfs/debugfs.c     |    5 ++---
 debugfs/debugfs.h     |    1 +
 debugfs/dump.c        |    2 ++
 e2fsck/message.c      |    1 -
 e2fsck/pass1.c        |    5 +++--
 e2fsck/pass2.c        |    3 ++-
 e2fsck/pass5.c        |    1 -
 e2fsck/rehash.c       |    3 ++-
 e2fsprogs.spec.in     |    1 +
 lib/blkid/probe.c     |    7 ++++---
 lib/e2p/ls.c          |    4 ++--
 lib/ext2fs/ext2fs.h   |    3 ++-
 lib/ext2fs/fileio.c   |    2 +-
 lib/ext2fs/openfs.c   |    1 -
 lib/ext2fs/progress.c |    2 --
 lib/ext2fs/res_gdt.c  |    2 +-
 lib/ext2fs/unix_io.c  |    2 ++
 misc/badblocks.c      |    2 ++
 misc/e2freefrag.c     |    4 ++--
 misc/e2undo.c         |    9 ++++-----
 misc/tune2fs.c        |    5 ++---
 21 files changed, 35 insertions(+), 30 deletions(-)
Andreas Dilger - June 10, 2011, 5:06 a.m.
I'm starting to send a bunch of patches that have accumulated on the Lustre
e2fsprogs branch.  The initial ones, like this, shouldn't controversial.

They are based against the current git master branch.

On 2011-06-09, at 10:52 PM, Andreas Dilger wrote:

> Fix several types of compiler warnings (unused variables/labels),
> uninitialized variables, etc that are hit with gcc -Wall.
> 
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
> ---
> debugfs/debugfs.c     |    5 ++---
> debugfs/debugfs.h     |    1 +
> debugfs/dump.c        |    2 ++
> e2fsck/message.c      |    1 -
> e2fsck/pass1.c        |    5 +++--
> e2fsck/pass2.c        |    3 ++-
> e2fsck/pass5.c        |    1 -
> e2fsck/rehash.c       |    3 ++-
> e2fsprogs.spec.in     |    1 +
> lib/blkid/probe.c     |    7 ++++---
> lib/e2p/ls.c          |    4 ++--
> lib/ext2fs/ext2fs.h   |    3 ++-
> lib/ext2fs/fileio.c   |    2 +-
> lib/ext2fs/openfs.c   |    1 -
> lib/ext2fs/progress.c |    2 --
> lib/ext2fs/res_gdt.c  |    2 +-
> lib/ext2fs/unix_io.c  |    2 ++
> misc/badblocks.c      |    2 ++
> misc/e2freefrag.c     |    4 ++--
> misc/e2undo.c         |    9 ++++-----
> misc/tune2fs.c        |    5 ++---
> 21 files changed, 35 insertions(+), 30 deletions(-)
> 
> diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
> index e441bc5..55d16af 100644
> --- a/debugfs/debugfs.c
> +++ b/debugfs/debugfs.c
> @@ -855,7 +855,7 @@ void do_stat(int argc, char *argv[])
> 	return;
> }
> 
> -void do_dump_extents(int argc, char *argv[])
> +void do_dump_extents(int argc, char **argv)
> {
> 	struct ext2_inode inode;
> 	ext2_ino_t	ino;
> @@ -876,8 +876,7 @@ void do_dump_extents(int argc, char *argv[])
> 		}
> 	}
> 
> -	if (argc != optind+1) {
> -	print_usage:
> +	if (argc != optind + 1) {
> 		com_err(0, 0, "Usage: dump_extents [-n] [-l] file");
> 		return;
> 	}
> diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
> index 4cc8a1f..f7ec8da 100644
> --- a/debugfs/debugfs.h
> +++ b/debugfs/debugfs.h
> @@ -103,6 +103,7 @@ extern void do_unlink(int argc, char **argv);
> extern void do_find_free_block(int argc, char **argv);
> extern void do_find_free_inode(int argc, char **argv);
> extern void do_stat(int argc, char **argv);
> +extern void do_dump_extents(int argc, char **argv);
> 
> extern void do_chroot(int argc, char **argv);
> extern void do_clri(int argc, char **argv);
> diff --git a/debugfs/dump.c b/debugfs/dump.c
> index ab0d68b..4cf0752 100644
> --- a/debugfs/dump.c
> +++ b/debugfs/dump.c
> @@ -5,7 +5,9 @@
>  * under the terms of the GNU Public License.
>  */
> 
> +#ifndef _GNU_SOURCE
> #define _GNU_SOURCE /* for O_LARGEFILE */
> +#endif
> 
> #include <stdio.h>
> #include <unistd.h>
> diff --git a/e2fsck/message.c b/e2fsck/message.c
> index a5f8947..d560cf8 100644
> --- a/e2fsck/message.c
> +++ b/e2fsck/message.c
> @@ -263,7 +263,6 @@ static _INLINE_ void expand_inode_expression(ext2_filsys fs, char ch,
> {
> 	struct ext2_inode	*inode;
> 	struct ext2_inode_large	*large_inode;
> -	time_t			t;
> 
> 	if (!ctx || !ctx->inode)
> 		goto no_inode;
> diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
> index 67dd986..d182d1d 100644
> --- a/e2fsck/pass1.c
> +++ b/e2fsck/pass1.c
> @@ -404,7 +404,7 @@ static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
> 	struct ext2_dir_entry 	*dirent;
> 	const char		*old_op;
> 	errcode_t		retval;
> -	blk64_t			blk, first_dir_blk;
> +	blk64_t			blk;
> 	unsigned int		i, rec_len, not_device = 0;
> 	int			extent_fs;
> 
> @@ -436,7 +436,8 @@ static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
> 	 * with it.
> 	 */
> 
> -	extent_fs = (ctx->fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS);
> +	extent_fs = (ctx->fs->super->s_feature_incompat &
> +		     EXT3_FEATURE_INCOMPAT_EXTENTS);
> 	if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) {
> 		/* extent mapped */
> 		if  (ext2fs_bmap2(ctx->fs, pctx->ino, inode, 0, 0, 0, 0,
> diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
> index 8d1cbc6..b97a0b3 100644
> --- a/e2fsck/pass2.c
> +++ b/e2fsck/pass2.c
> @@ -404,7 +404,8 @@ static int check_dotdot(e2fsck_t ctx,
> 			struct ext2_dir_entry *dirent,
> 			ext2_ino_t ino, struct problem_context *pctx)
> {
> -	int	rec_len, problem = 0;
> +	int		problem = 0;
> +	unsigned int	rec_len;
> 
> 	if (!dirent->inode)
> 		problem = PR_2_MISSING_DOT_DOT;
> diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c
> index b423d28..3d9874f 100644
> --- a/e2fsck/pass5.c
> +++ b/e2fsck/pass5.c
> @@ -77,7 +77,6 @@ static void e2fsck_discard_blocks(e2fsck_t ctx, io_manager manager,
> 				  blk64_t start, blk64_t count)
> {
> 	ext2_filsys fs = ctx->fs;
> -	int ret = 0;
> 
> 	/*
> 	 * If the filesystem has changed it means that there was an corruption
> diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
> index 5543134..e8af323 100644
> --- a/e2fsck/rehash.c
> +++ b/e2fsck/rehash.c
> @@ -430,12 +430,13 @@ static errcode_t copy_dir_entries(e2fsck_t ctx,
> 		return retval;
> 	dirent = (struct ext2_dir_entry *) block_start;
> 	prev_rec_len = 0;
> +	rec_len = 0;
> 	left = fs->blocksize;
> 	slack = fd->compress ? 12 :
> 		(fs->blocksize * ctx->htree_slack_percentage)/100;
> 	if (slack < 12)
> 		slack = 12;
> -	for (i=0; i < fd->num_array; i++) {
> +	for (i = 0; i < fd->num_array; i++) {
> 		ent = fd->harray + i;
> 		if (ent->dir->inode == 0)
> 			continue;
> diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
> index 6fc23a7..b188b75 100644
> --- a/e2fsprogs.spec.in
> +++ b/e2fsprogs.spec.in
> @@ -212,6 +212,7 @@ exit 0
> %{_includedir}/blkid
> %{_includedir}/e2p
> %{_includedir}/et
> +%{_includedir}/com_err.h
> %{_includedir}/ext2fs
> %{_includedir}/ss
> %{_includedir}/uuid
> diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
> index 6b75732..e6131fb 100644
> --- a/lib/blkid/probe.c
> +++ b/lib/blkid/probe.c
> @@ -248,7 +248,7 @@ static int linux_version_code()
> {
> #ifdef __linux__
> 	struct utsname	ut;
> -	static		version_code = -1;
> +	static int	version_code = -1;
> 	int		major, minor, rev;
> 	char		*endptr;
> 	const char 	*cp;
> @@ -1175,7 +1175,7 @@ static int probe_hfs(struct blkid_probe *probe __BLKID_ATTR((unused)),
> 		sprintf(uuid_str, "%016llX", uuid);
> 		blkid_set_tag(probe->dev, "UUID", uuid_str, 0);
> 	}
> -	blkid_set_tag(probe->dev, "LABEL", hfs->label, hfs->label_len);
> +	blkid_set_tag(probe->dev, "LABEL", (char *)hfs->label, hfs->label_len);
> 	return 0;
> }
> 
> @@ -1296,7 +1296,8 @@ static int probe_hfsplus(struct blkid_probe *probe,
> 		return 0;
> 
> 	label_len = blkid_be16(key->unicode_len) * 2;
> -	unicode_16be_to_utf8(label, sizeof(label), key->unicode, label_len);
> +	unicode_16be_to_utf8((unsigned char *)label, sizeof(label),
> +			     key->unicode, label_len);
> 	blkid_set_tag(probe->dev, "LABEL", label, 0);
> 	return 0;
> }
> diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
> index 5e560ed..0f36f40 100644
> --- a/lib/e2p/ls.c
> +++ b/lib/e2p/ls.c
> @@ -383,7 +383,7 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
> 		tm = sb->s_first_error_time;
> 		fprintf(f, "First error time:         %s", ctime(&tm));
> 		memset(buf, 0, sizeof(buf));
> -		strncpy(buf, sb->s_first_error_func,
> +		strncpy(buf, (char *)sb->s_first_error_func,
> 			sizeof(sb->s_first_error_func));
> 		fprintf(f, "First error function:     %s\n", buf);
> 		fprintf(f, "First error line #:       %u\n",
> @@ -397,7 +397,7 @@ void list_super2(struct ext2_super_block * sb, FILE *f)
> 		tm = sb->s_last_error_time;
> 		fprintf(f, "Last error time:          %s", ctime(&tm));
> 		memset(buf, 0, sizeof(buf));
> -		strncpy(buf, sb->s_last_error_func,
> +		strncpy(buf, (char *)sb->s_last_error_func,
> 			sizeof(sb->s_last_error_func));
> 		fprintf(f, "Last error function:      %s\n", buf);
> 		fprintf(f, "Last error line #:        %u\n",
> diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
> index d3eb31d..9acccf2 100644
> --- a/lib/ext2fs/ext2fs.h
> +++ b/lib/ext2fs/ext2fs.h
> @@ -1396,7 +1396,8 @@ _INLINE_ errcode_t ext2fs_get_memalign(unsigned long size,
> 
> 	if (align == 0)
> 		align = 8;
> -	if (retval = posix_memalign((void **) ptr, align, size)) {
> +	retval = posix_memalign((void **) ptr, align, size);
> +	if (retval) {
> 		if (retval == ENOMEM)
> 			return EXT2_ET_NO_MEMORY;
> 		return retval;
> diff --git a/lib/ext2fs/fileio.c b/lib/ext2fs/fileio.c
> index 4b62c2d..d62ef35 100644
> --- a/lib/ext2fs/fileio.c
> +++ b/lib/ext2fs/fileio.c
> @@ -377,7 +377,7 @@ errcode_t ext2fs_file_set_size2(ext2_file_t file, ext2_off64_t size)
> 	truncate_block = ((size + file->fs->blocksize - 1) >>
> 			  EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
> 	old_size = file->inode.i_size +
> -		((blk64_t) file->inode.i_size_high) << 32;
> +		((blk64_t)file->inode.i_size_high << 32);
> 	old_truncate = ((old_size + file->fs->blocksize - 1) >>
> 		      EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
> 
> diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
> index 90abed1..383aa72 100644
> --- a/lib/ext2fs/openfs.c
> +++ b/lib/ext2fs/openfs.c
> @@ -353,7 +353,6 @@ errcode_t ext2fs_open2(const char *name, const char *io_options,
> 	 */
> 	if (superblock > 1 && EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
> 					EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
> -		struct ext2_group_desc *gd;
> 		dgrp_t group;
> 
> 		for (group = 0; group < fs->group_desc_count; group++) {
> diff --git a/lib/ext2fs/progress.c b/lib/ext2fs/progress.c
> index ec4f553..1b9bf9c 100644
> --- a/lib/ext2fs/progress.c
> +++ b/lib/ext2fs/progress.c
> @@ -77,8 +77,6 @@ void ext2fs_numeric_progress_close(ext2_filsys fs,
> 				   struct ext2fs_numeric_progress_struct * progress,
> 				   const char *message)
> {
> -	unsigned int len;
> -
> 	if (!(fs->flags & EXT2_FLAG_PRINT_PROGRESS))
> 		return;
> 	fprintf(stdout, "%.*s", (2*progress->log_max)+1, spaces);
> diff --git a/lib/ext2fs/res_gdt.c b/lib/ext2fs/res_gdt.c
> index bf10995..f3b3969 100644
> --- a/lib/ext2fs/res_gdt.c
> +++ b/lib/ext2fs/res_gdt.c
> @@ -75,7 +75,7 @@ errcode_t ext2fs_create_resize_inode(ext2_filsys fs)
> 
> 	retval = ext2fs_get_array(2, fs->blocksize, &dindir_buf);
> 	if (retval)
> -		goto out_free;
> +		return retval;
> 	gdt_buf = (__u32 *)((char *)dindir_buf + fs->blocksize);
> 
> 	retval = ext2fs_read_inode(fs, EXT2_RESIZE_INO, &inode);
> diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
> index 82e0fe4..6e480b7 100644
> --- a/lib/ext2fs/unix_io.c
> +++ b/lib/ext2fs/unix_io.c
> @@ -17,7 +17,9 @@
> 
> #define _LARGEFILE_SOURCE
> #define _LARGEFILE64_SOURCE
> +#ifndef _GNU_SOURCE
> #define _GNU_SOURCE
> +#endif
> 
> #include <stdio.h>
> #include <string.h>
> diff --git a/misc/badblocks.c b/misc/badblocks.c
> index 8da66f8..1e7e1c8 100644
> --- a/misc/badblocks.c
> +++ b/misc/badblocks.c
> @@ -29,7 +29,9 @@
>  * 			 list.  (Work done by David Beattie)
>  */
> 
> +#ifndef _GNU_SOURCE
> #define _GNU_SOURCE /* for O_DIRECT */
> +#endif
> 
> #ifndef O_LARGEFILE
> #define O_LARGEFILE 0
> diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
> index b827a49..e6fd67e 100644
> --- a/misc/e2freefrag.c
> +++ b/misc/e2freefrag.c
> @@ -144,7 +144,7 @@ errcode_t get_chunk_info(ext2_filsys fs, struct chunk_info *info)
> 	unsigned long total_chunks;
> 	char *unitp = "KMGTPEZY";
> 	int units = 10;
> -	unsigned long start = 0, end, cum;
> +	unsigned long start = 0, end;
> 	int i, retval = 0;
> 
> 	scan_block_bitmap(fs, info);
> @@ -218,7 +218,7 @@ void close_device(char *device_name, ext2_filsys fs)
> 
> void collect_info(ext2_filsys fs, struct chunk_info *chunk_info)
> {
> -	unsigned int retval = 0, i, free_blks;
> +	unsigned int retval = 0;
> 
> 	printf("Device: %s\n", fs->device_name);
> 	printf("Blocksize: %u bytes\n", fs->blocksize);
> diff --git a/misc/e2undo.c b/misc/e2undo.c
> index b85f270..04d0b17 100644
> --- a/misc/e2undo.c
> +++ b/misc/e2undo.c
> @@ -29,12 +29,11 @@ unsigned char blksize_key[] = "filesystem BLKSIZE";
> 
> char *prg_name;
> 
> -static void usage(char *prg_name)
> +static void usage(void)
> {
> 	fprintf(stderr,
> 		_("Usage: %s <transaction file> <filesystem>\n"), prg_name);
> 	exit(1);
> -
> }
> 
> static int check_filesystem(TDB_CONTEXT *tdb, io_channel channel)
> @@ -145,12 +144,12 @@ int main(int argc, char *argv[])
> 				force = 1;
> 				break;
> 			default:
> -				usage(prg_name);
> +				usage();
> 		}
> 	}
> 
> -	if (argc != optind+2)
> -		usage(prg_name);
> +	if (argc != optind + 2)
> +		usage();
> 
> 	tdb_file = argv[optind];
> 	device_name = argv[optind+1];
> diff --git a/misc/tune2fs.c b/misc/tune2fs.c
> index bcada11..89bf6c8 100644
> --- a/misc/tune2fs.c
> +++ b/misc/tune2fs.c
> @@ -348,7 +348,6 @@ static void update_feature_set(ext2_filsys fs, char *features)
> {
> 	struct ext2_super_block *sb = fs->super;
> 	struct ext2_group_desc *gd;
> -	errcode_t	retval;
> 	__u32		old_features[3];
> 	int		i, type_err;
> 	unsigned int	mask_err;
> @@ -992,7 +991,7 @@ static void parse_extended_opts(ext2_filsys fs, const char *opts)
> 					"Extended mount options too long\n");
> 				continue;
> 			}
> -			strcpy(fs->super->s_mount_opts, arg);
> +			strcpy((char *)fs->super->s_mount_opts, arg);
> 			ext2fs_mark_super_dirty(fs);
> 		} else
> 			r_usage++;
> @@ -1097,7 +1096,7 @@ static int move_block(ext2_filsys fs, ext2fs_block_bitmap bmap)
> {
> 
> 	char *buf;
> -	dgrp_t group;
> +	dgrp_t group = 0;
> 	errcode_t retval;
> 	int meta_data = 0;
> 	blk64_t blk, new_blk, goal;
> -- 
> 1.7.3.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


Cheers, Andreas
--
Andreas Dilger 
Principal Engineer
Whamcloud, Inc.



--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Theodore Ts'o - June 11, 2011, 3:01 p.m.
On Thu, Jun 09, 2011 at 10:52:38PM -0600, Andreas Dilger wrote:
> Fix several types of compiler warnings (unused variables/labels),
> uninitialized variables, etc that are hit with gcc -Wall.
> 
> Signed-off-by: Andreas Dilger <adilger@whamcloud.com>

Applied into the "next" branch, thanks!  (As per usual, the commits
next branch will graduate into the 'master' branch in a few days.)

						- Ted
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/debugfs/debugfs.c b/debugfs/debugfs.c
index e441bc5..55d16af 100644
--- a/debugfs/debugfs.c
+++ b/debugfs/debugfs.c
@@ -855,7 +855,7 @@  void do_stat(int argc, char *argv[])
 	return;
 }
 
-void do_dump_extents(int argc, char *argv[])
+void do_dump_extents(int argc, char **argv)
 {
 	struct ext2_inode inode;
 	ext2_ino_t	ino;
@@ -876,8 +876,7 @@  void do_dump_extents(int argc, char *argv[])
 		}
 	}
 
-	if (argc != optind+1) {
-	print_usage:
+	if (argc != optind + 1) {
 		com_err(0, 0, "Usage: dump_extents [-n] [-l] file");
 		return;
 	}
diff --git a/debugfs/debugfs.h b/debugfs/debugfs.h
index 4cc8a1f..f7ec8da 100644
--- a/debugfs/debugfs.h
+++ b/debugfs/debugfs.h
@@ -103,6 +103,7 @@  extern void do_unlink(int argc, char **argv);
 extern void do_find_free_block(int argc, char **argv);
 extern void do_find_free_inode(int argc, char **argv);
 extern void do_stat(int argc, char **argv);
+extern void do_dump_extents(int argc, char **argv);
 
 extern void do_chroot(int argc, char **argv);
 extern void do_clri(int argc, char **argv);
diff --git a/debugfs/dump.c b/debugfs/dump.c
index ab0d68b..4cf0752 100644
--- a/debugfs/dump.c
+++ b/debugfs/dump.c
@@ -5,7 +5,9 @@ 
  * under the terms of the GNU Public License.
  */
 
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE /* for O_LARGEFILE */
+#endif
 
 #include <stdio.h>
 #include <unistd.h>
diff --git a/e2fsck/message.c b/e2fsck/message.c
index a5f8947..d560cf8 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -263,7 +263,6 @@  static _INLINE_ void expand_inode_expression(ext2_filsys fs, char ch,
 {
 	struct ext2_inode	*inode;
 	struct ext2_inode_large	*large_inode;
-	time_t			t;
 
 	if (!ctx || !ctx->inode)
 		goto no_inode;
diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c
index 67dd986..d182d1d 100644
--- a/e2fsck/pass1.c
+++ b/e2fsck/pass1.c
@@ -404,7 +404,7 @@  static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
 	struct ext2_dir_entry 	*dirent;
 	const char		*old_op;
 	errcode_t		retval;
-	blk64_t			blk, first_dir_blk;
+	blk64_t			blk;
 	unsigned int		i, rec_len, not_device = 0;
 	int			extent_fs;
 
@@ -436,7 +436,8 @@  static void check_is_really_dir(e2fsck_t ctx, struct problem_context *pctx,
 	 * with it.
 	 */
 
-	extent_fs = (ctx->fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS);
+	extent_fs = (ctx->fs->super->s_feature_incompat &
+		     EXT3_FEATURE_INCOMPAT_EXTENTS);
 	if (extent_fs && (inode->i_flags & EXT4_EXTENTS_FL)) {
 		/* extent mapped */
 		if  (ext2fs_bmap2(ctx->fs, pctx->ino, inode, 0, 0, 0, 0,
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 8d1cbc6..b97a0b3 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -404,7 +404,8 @@  static int check_dotdot(e2fsck_t ctx,
 			struct ext2_dir_entry *dirent,
 			ext2_ino_t ino, struct problem_context *pctx)
 {
-	int	rec_len, problem = 0;
+	int		problem = 0;
+	unsigned int	rec_len;
 
 	if (!dirent->inode)
 		problem = PR_2_MISSING_DOT_DOT;
diff --git a/e2fsck/pass5.c b/e2fsck/pass5.c
index b423d28..3d9874f 100644
--- a/e2fsck/pass5.c
+++ b/e2fsck/pass5.c
@@ -77,7 +77,6 @@  static void e2fsck_discard_blocks(e2fsck_t ctx, io_manager manager,
 				  blk64_t start, blk64_t count)
 {
 	ext2_filsys fs = ctx->fs;
-	int ret = 0;
 
 	/*
 	 * If the filesystem has changed it means that there was an corruption
diff --git a/e2fsck/rehash.c b/e2fsck/rehash.c
index 5543134..e8af323 100644
--- a/e2fsck/rehash.c
+++ b/e2fsck/rehash.c
@@ -430,12 +430,13 @@  static errcode_t copy_dir_entries(e2fsck_t ctx,
 		return retval;
 	dirent = (struct ext2_dir_entry *) block_start;
 	prev_rec_len = 0;
+	rec_len = 0;
 	left = fs->blocksize;
 	slack = fd->compress ? 12 :
 		(fs->blocksize * ctx->htree_slack_percentage)/100;
 	if (slack < 12)
 		slack = 12;
-	for (i=0; i < fd->num_array; i++) {
+	for (i = 0; i < fd->num_array; i++) {
 		ent = fd->harray + i;
 		if (ent->dir->inode == 0)
 			continue;
diff --git a/e2fsprogs.spec.in b/e2fsprogs.spec.in
index 6fc23a7..b188b75 100644
--- a/e2fsprogs.spec.in
+++ b/e2fsprogs.spec.in
@@ -212,6 +212,7 @@  exit 0
 %{_includedir}/blkid
 %{_includedir}/e2p
 %{_includedir}/et
+%{_includedir}/com_err.h
 %{_includedir}/ext2fs
 %{_includedir}/ss
 %{_includedir}/uuid
diff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
index 6b75732..e6131fb 100644
--- a/lib/blkid/probe.c
+++ b/lib/blkid/probe.c
@@ -248,7 +248,7 @@  static int linux_version_code()
 {
 #ifdef __linux__
 	struct utsname	ut;
-	static		version_code = -1;
+	static int	version_code = -1;
 	int		major, minor, rev;
 	char		*endptr;
 	const char 	*cp;
@@ -1175,7 +1175,7 @@  static int probe_hfs(struct blkid_probe *probe __BLKID_ATTR((unused)),
 		sprintf(uuid_str, "%016llX", uuid);
 		blkid_set_tag(probe->dev, "UUID", uuid_str, 0);
 	}
-	blkid_set_tag(probe->dev, "LABEL", hfs->label, hfs->label_len);
+	blkid_set_tag(probe->dev, "LABEL", (char *)hfs->label, hfs->label_len);
 	return 0;
 }
 
@@ -1296,7 +1296,8 @@  static int probe_hfsplus(struct blkid_probe *probe,
 		return 0;
 
 	label_len = blkid_be16(key->unicode_len) * 2;
-	unicode_16be_to_utf8(label, sizeof(label), key->unicode, label_len);
+	unicode_16be_to_utf8((unsigned char *)label, sizeof(label),
+			     key->unicode, label_len);
 	blkid_set_tag(probe->dev, "LABEL", label, 0);
 	return 0;
 }
diff --git a/lib/e2p/ls.c b/lib/e2p/ls.c
index 5e560ed..0f36f40 100644
--- a/lib/e2p/ls.c
+++ b/lib/e2p/ls.c
@@ -383,7 +383,7 @@  void list_super2(struct ext2_super_block * sb, FILE *f)
 		tm = sb->s_first_error_time;
 		fprintf(f, "First error time:         %s", ctime(&tm));
 		memset(buf, 0, sizeof(buf));
-		strncpy(buf, sb->s_first_error_func,
+		strncpy(buf, (char *)sb->s_first_error_func,
 			sizeof(sb->s_first_error_func));
 		fprintf(f, "First error function:     %s\n", buf);
 		fprintf(f, "First error line #:       %u\n",
@@ -397,7 +397,7 @@  void list_super2(struct ext2_super_block * sb, FILE *f)
 		tm = sb->s_last_error_time;
 		fprintf(f, "Last error time:          %s", ctime(&tm));
 		memset(buf, 0, sizeof(buf));
-		strncpy(buf, sb->s_last_error_func,
+		strncpy(buf, (char *)sb->s_last_error_func,
 			sizeof(sb->s_last_error_func));
 		fprintf(f, "Last error function:      %s\n", buf);
 		fprintf(f, "Last error line #:        %u\n",
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index d3eb31d..9acccf2 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -1396,7 +1396,8 @@  _INLINE_ errcode_t ext2fs_get_memalign(unsigned long size,
 
 	if (align == 0)
 		align = 8;
-	if (retval = posix_memalign((void **) ptr, align, size)) {
+	retval = posix_memalign((void **) ptr, align, size);
+	if (retval) {
 		if (retval == ENOMEM)
 			return EXT2_ET_NO_MEMORY;
 		return retval;
diff --git a/lib/ext2fs/fileio.c b/lib/ext2fs/fileio.c
index 4b62c2d..d62ef35 100644
--- a/lib/ext2fs/fileio.c
+++ b/lib/ext2fs/fileio.c
@@ -377,7 +377,7 @@  errcode_t ext2fs_file_set_size2(ext2_file_t file, ext2_off64_t size)
 	truncate_block = ((size + file->fs->blocksize - 1) >>
 			  EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
 	old_size = file->inode.i_size +
-		((blk64_t) file->inode.i_size_high) << 32;
+		((blk64_t)file->inode.i_size_high << 32);
 	old_truncate = ((old_size + file->fs->blocksize - 1) >>
 		      EXT2_BLOCK_SIZE_BITS(file->fs->super)) + 1;
 
diff --git a/lib/ext2fs/openfs.c b/lib/ext2fs/openfs.c
index 90abed1..383aa72 100644
--- a/lib/ext2fs/openfs.c
+++ b/lib/ext2fs/openfs.c
@@ -353,7 +353,6 @@  errcode_t ext2fs_open2(const char *name, const char *io_options,
 	 */
 	if (superblock > 1 && EXT2_HAS_RO_COMPAT_FEATURE(fs->super,
 					EXT4_FEATURE_RO_COMPAT_GDT_CSUM)) {
-		struct ext2_group_desc *gd;
 		dgrp_t group;
 
 		for (group = 0; group < fs->group_desc_count; group++) {
diff --git a/lib/ext2fs/progress.c b/lib/ext2fs/progress.c
index ec4f553..1b9bf9c 100644
--- a/lib/ext2fs/progress.c
+++ b/lib/ext2fs/progress.c
@@ -77,8 +77,6 @@  void ext2fs_numeric_progress_close(ext2_filsys fs,
 				   struct ext2fs_numeric_progress_struct * progress,
 				   const char *message)
 {
-	unsigned int len;
-
 	if (!(fs->flags & EXT2_FLAG_PRINT_PROGRESS))
 		return;
 	fprintf(stdout, "%.*s", (2*progress->log_max)+1, spaces);
diff --git a/lib/ext2fs/res_gdt.c b/lib/ext2fs/res_gdt.c
index bf10995..f3b3969 100644
--- a/lib/ext2fs/res_gdt.c
+++ b/lib/ext2fs/res_gdt.c
@@ -75,7 +75,7 @@  errcode_t ext2fs_create_resize_inode(ext2_filsys fs)
 
 	retval = ext2fs_get_array(2, fs->blocksize, &dindir_buf);
 	if (retval)
-		goto out_free;
+		return retval;
 	gdt_buf = (__u32 *)((char *)dindir_buf + fs->blocksize);
 
 	retval = ext2fs_read_inode(fs, EXT2_RESIZE_INO, &inode);
diff --git a/lib/ext2fs/unix_io.c b/lib/ext2fs/unix_io.c
index 82e0fe4..6e480b7 100644
--- a/lib/ext2fs/unix_io.c
+++ b/lib/ext2fs/unix_io.c
@@ -17,7 +17,9 @@ 
 
 #define _LARGEFILE_SOURCE
 #define _LARGEFILE64_SOURCE
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE
+#endif
 
 #include <stdio.h>
 #include <string.h>
diff --git a/misc/badblocks.c b/misc/badblocks.c
index 8da66f8..1e7e1c8 100644
--- a/misc/badblocks.c
+++ b/misc/badblocks.c
@@ -29,7 +29,9 @@ 
  * 			 list.  (Work done by David Beattie)
  */
 
+#ifndef _GNU_SOURCE
 #define _GNU_SOURCE /* for O_DIRECT */
+#endif
 
 #ifndef O_LARGEFILE
 #define O_LARGEFILE 0
diff --git a/misc/e2freefrag.c b/misc/e2freefrag.c
index b827a49..e6fd67e 100644
--- a/misc/e2freefrag.c
+++ b/misc/e2freefrag.c
@@ -144,7 +144,7 @@  errcode_t get_chunk_info(ext2_filsys fs, struct chunk_info *info)
 	unsigned long total_chunks;
 	char *unitp = "KMGTPEZY";
 	int units = 10;
-	unsigned long start = 0, end, cum;
+	unsigned long start = 0, end;
 	int i, retval = 0;
 
 	scan_block_bitmap(fs, info);
@@ -218,7 +218,7 @@  void close_device(char *device_name, ext2_filsys fs)
 
 void collect_info(ext2_filsys fs, struct chunk_info *chunk_info)
 {
-	unsigned int retval = 0, i, free_blks;
+	unsigned int retval = 0;
 
 	printf("Device: %s\n", fs->device_name);
 	printf("Blocksize: %u bytes\n", fs->blocksize);
diff --git a/misc/e2undo.c b/misc/e2undo.c
index b85f270..04d0b17 100644
--- a/misc/e2undo.c
+++ b/misc/e2undo.c
@@ -29,12 +29,11 @@  unsigned char blksize_key[] = "filesystem BLKSIZE";
 
 char *prg_name;
 
-static void usage(char *prg_name)
+static void usage(void)
 {
 	fprintf(stderr,
 		_("Usage: %s <transaction file> <filesystem>\n"), prg_name);
 	exit(1);
-
 }
 
 static int check_filesystem(TDB_CONTEXT *tdb, io_channel channel)
@@ -145,12 +144,12 @@  int main(int argc, char *argv[])
 				force = 1;
 				break;
 			default:
-				usage(prg_name);
+				usage();
 		}
 	}
 
-	if (argc != optind+2)
-		usage(prg_name);
+	if (argc != optind + 2)
+		usage();
 
 	tdb_file = argv[optind];
 	device_name = argv[optind+1];
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index bcada11..89bf6c8 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -348,7 +348,6 @@  static void update_feature_set(ext2_filsys fs, char *features)
 {
 	struct ext2_super_block *sb = fs->super;
 	struct ext2_group_desc *gd;
-	errcode_t	retval;
 	__u32		old_features[3];
 	int		i, type_err;
 	unsigned int	mask_err;
@@ -992,7 +991,7 @@  static void parse_extended_opts(ext2_filsys fs, const char *opts)
 					"Extended mount options too long\n");
 				continue;
 			}
-			strcpy(fs->super->s_mount_opts, arg);
+			strcpy((char *)fs->super->s_mount_opts, arg);
 			ext2fs_mark_super_dirty(fs);
 		} else
 			r_usage++;
@@ -1097,7 +1096,7 @@  static int move_block(ext2_filsys fs, ext2fs_block_bitmap bmap)
 {
 
 	char *buf;
-	dgrp_t group;
+	dgrp_t group = 0;
 	errcode_t retval;
 	int meta_data = 0;
 	blk64_t blk, new_blk, goal;