From: Randy Dunlap <randy.dunlap@xxxxxxxxxx> * clean up code, gcc warnings (try compilation with "-Wall -Wp,-D_FORTIFY_SOURCE=2") Builds cleanly on x86_32 and x86_64. This was the first set of warnings. Correcting some of these lead to other warnings (which are not listed here). Some of these (signed char/unsigned char/char) could have been fixed in other ways. I basically forced all of these to unsigned char. mkfs.cramfs.c:211: warning: pointer targets in passing argument 2 of 'MD5Update' differ in signedness mkfs.cramfs.c:336: warning: format '%u' expects type 'unsigned int', but argument 4 has type 'size_t' mkfs.cramfs.c:355: warning: pointer targets in assignment differ in signedness mkfs.cramfs.c:448: warning: pointer targets in passing argument 1 of '__builtin___strncpy_chk' differ in signedness mkfs.cramfs.c:448: warning: pointer targets in passing argument 1 of '__strncpy_ichk' differ in signedness mkfs.cramfs.c:450: warning: pointer targets in passing argument 1 of '__builtin___strncpy_chk' differ in signedness mkfs.cramfs.c:450: warning: pointer targets in passing argument 1 of '__strncpy_ichk' differ in signedness mkfs.cramfs.c:490: warning: pointer targets in passing argument 1 of 'strlen' differ in signedness mkfs.cramfs.c:620: warning: pointer targets in passing argument 1 of 'compress' differ in signedness mkfs.cramfs.c:620: warning: pointer targets in passing argument 3 of 'compress' differ in signedness mkfs.cramfs.c:671: warning: pointer targets in passing argument 3 of 'do_compress' differ in signedness mkfs.cramfs.c:824: warning: format '%Ld' expects type 'long long int', but argument 4 has type 'loff_t' mkfs.cramfs.c:872: warning: format '%d' expects type 'int', but argument 3 has type 'ssize_t' mkfs.cramfs.c:880: warning: format '%d' expects type 'int', but argument 3 has type 'ssize_t' mkfs.cramfs.c:885: warning: format '%d' expects type 'int', but argument 3 has type 'long unsigned int' mkfs.cramfs.c:889: warning: pointer targets in passing argument 2 of 'crc32' differ in signedness mkfs.cramfs.c:896: warning: format '%Ld' expects type 'long long int', but argument 4 has type 'loff_t' mkfs.cramfs.c:896: warning: format '%d' expects type 'int', but argument 5 has type 'ssize_t' mkfs.cramfs.c:909: warning: format '%d' expects type 'int', but argument 4 has type 'ssize_t' mkfs.cramfs.c:909: warning: format '%d' expects type 'int', but argument 5 has type 'ssize_t' Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx> --- disk-utils/mkfs.cramfs.c | 60 +++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 30 deletions(-) --- util-linux-ng-2.13.orig/disk-utils/mkfs.cramfs.c +++ util-linux-ng-2.13/disk-utils/mkfs.cramfs.c @@ -154,17 +154,17 @@ xmalloc (size_t size) { return t; } -static char * +static unsigned char * do_mmap(char *path, unsigned int size, unsigned int mode){ int fd; - char *start; + unsigned char *start; if (!size) return NULL; if (S_ISLNK(mode)) { start = xmalloc(size); - if (readlink(path, start, size) < 0) { + if (readlink(path, (char *)start, size) < 0) { perror(path); warn_skip = 1; start = NULL; @@ -190,7 +190,7 @@ do_mmap(char *path, unsigned int size, u } static void -do_munmap(char *start, unsigned int size, unsigned int mode){ +do_munmap(unsigned char *start, unsigned int size, unsigned int mode){ if (S_ISLNK(mode)) free(start); else @@ -201,7 +201,7 @@ do_munmap(char *start, unsigned int size static void mdfile(struct entry *e) { MD5_CTX ctx; - char *start; + unsigned char *start; start = do_mmap(e->path, e->size, e->mode); if (start == NULL) { @@ -221,7 +221,7 @@ mdfile(struct entry *e) { but just to be sure, do the comparison */ static int identical_file(struct entry *e1, struct entry *e2){ - char *start1, *start2; + unsigned char *start1, *start2; int equal; start1 = do_mmap(e1->path, e1->size, e1->mode); @@ -334,7 +334,7 @@ static unsigned int parse_directory(stru namelen = strlen(dirent->d_name); if (namelen > MAX_INPUT_NAMELEN) { fprintf(stderr, - _("Very long (%u bytes) filename `%s' found.\n" + _("Very long (%zu bytes) filename `%s' found.\n" " Please increase MAX_INPUT_NAMELEN in " "mkcramfs.c and recompile. Exiting.\n"), namelen, dirent->d_name); @@ -352,7 +352,7 @@ static unsigned int parse_directory(stru perror(NULL); exit(8); } - entry->name = strdup(dirent->d_name); + entry->name = (unsigned char *)strdup(dirent->d_name); if (!entry->name) { perror(NULL); exit(8); @@ -420,7 +420,7 @@ static unsigned int parse_directory(stru } /* Returns sizeof(struct cramfs_super), which includes the root inode. */ -static unsigned int write_superblock(struct entry *root, char *base, int size) +static unsigned int write_superblock(struct entry *root, unsigned char *base, int size) { struct cramfs_super *super = (struct cramfs_super *) base; unsigned int offset = sizeof(struct cramfs_super) + image_length; @@ -445,9 +445,9 @@ static unsigned int write_superblock(str memset(super->name, 0x00, sizeof(super->name)); if (opt_name) - strncpy(super->name, opt_name, sizeof(super->name)); + strncpy((char *)super->name, opt_name, sizeof(super->name)); else - strncpy(super->name, "Compressed", sizeof(super->name)); + strncpy((char *)super->name, "Compressed", sizeof(super->name)); super->root.mode = root->mode; super->root.uid = root->uid; @@ -458,7 +458,7 @@ static unsigned int write_superblock(str return offset; } -static void set_data_offset(struct entry *entry, char *base, unsigned long offset) +static void set_data_offset(struct entry *entry, unsigned char *base, unsigned long offset) { struct cramfs_inode *inode = (struct cramfs_inode *) (base + entry->dir_offset); if (offset >= (1 << (2 + CRAMFS_OFFSET_WIDTH))) { @@ -474,7 +474,7 @@ static void set_data_offset(struct entry * entries, using a stack to remember the directories * we've seen. */ -static unsigned int write_directory_structure(struct entry *entry, char *base, unsigned int offset) +static unsigned int write_directory_structure(struct entry *entry, unsigned char *base, unsigned int offset) { int stack_entries = 0; int stack_size = 64; @@ -487,7 +487,7 @@ static unsigned int write_directory_stru while (entry) { struct cramfs_inode *inode = (struct cramfs_inode *) (base + offset); - size_t len = strlen(entry->name); + size_t len = strlen((const char *)entry->name); entry->dir_offset = offset; @@ -560,7 +560,7 @@ static unsigned int write_directory_stru return offset; } -static int is_zero(char const *begin, unsigned len) +static int is_zero(unsigned char const *begin, unsigned len) { if (opt_holes) /* Returns non-zero iff the first LEN bytes from BEGIN are @@ -590,12 +590,12 @@ static int is_zero(char const *begin, un * have gotten here in the first place. */ static unsigned int -do_compress(char *base, unsigned int offset, char const *name, +do_compress(unsigned char *base, unsigned int offset, unsigned char const *name, char *path, unsigned int size, unsigned int mode) { unsigned long original_size, original_offset, new_size, blocks, curr; int change; - char *p, *start; + Bytef *p, *start; /* get uncompressed data */ start = do_mmap(path, size, mode); @@ -611,13 +611,13 @@ do_compress(char *base, unsigned int off total_blocks += blocks; do { - unsigned long len = 2 * blksize; - unsigned int input = size; + uLongf len = 2 * blksize; + uLongf input = size; if (input > blksize) input = blksize; size -= input; if (!is_zero (p, input)) { - compress(base + curr, &len, p, input); + compress((Bytef *)(base + curr), &len, p, input); curr += len; } p += input; @@ -656,7 +656,7 @@ do_compress(char *base, unsigned int off * regfile). */ static unsigned int -write_data(struct entry *entry, char *base, unsigned int offset) { +write_data(struct entry *entry, unsigned char *base, unsigned int offset) { struct entry *e; for (e = entry; e; e = e->next) { @@ -676,7 +676,7 @@ write_data(struct entry *entry, char *ba return offset; } -static unsigned int write_file(char *file, char *base, unsigned int offset) +static unsigned int write_file(char *file, unsigned char *base, unsigned int offset) { int fd; char *buf; @@ -725,7 +725,7 @@ int main(int argc, char **argv) { struct stat st; /* used twice... */ struct entry *root_entry; - char *rom_image; + unsigned char *rom_image; ssize_t offset, written; int fd; /* initial guess (upper-bound) of required filesystem size */ @@ -825,7 +825,7 @@ int main(int argc, char **argv) _("warning: guestimate of required size (upper bound) " "is %LdMB, but maximum image size is %uMB. " "We might die prematurely.\n"), - fslen_ub >> 20, + (long long)fslen_ub >> 20, fslen_max >> 20); fslen_ub = fslen_max; } @@ -869,7 +869,7 @@ int main(int argc, char **argv) offset = write_directory_structure(root_entry->child, rom_image, offset); if (verbose) - printf(_("Directory data: %d bytes\n"), offset); + printf(_("Directory data: %zd bytes\n"), offset); offset = write_data(root_entry, rom_image, offset); @@ -877,12 +877,12 @@ int main(int argc, char **argv) losetup works. */ offset = ((offset - 1) | (blksize - 1)) + 1; if (verbose) - printf(_("Everything: %d kilobytes\n"), offset >> 10); + printf(_("Everything: %zd kilobytes\n"), offset >> 10); /* Write the superblock now that we can fill in all of the fields. */ write_superblock(root_entry, rom_image+opt_pad, offset); if (verbose) - printf(_("Super block: %d bytes\n"), + printf(_("Super block: %zd bytes\n"), sizeof(struct cramfs_super)); /* Put the checksum in. */ @@ -895,8 +895,8 @@ int main(int argc, char **argv) if (fslen_ub < offset) { fprintf(stderr, _("not enough space allocated for ROM image " - "(%Ld allocated, %d used)\n"), - fslen_ub, offset); + "(%Ld allocated, %zd used)\n"), + (long long)fslen_ub, offset); exit(8); } @@ -906,7 +906,7 @@ int main(int argc, char **argv) exit(8); } if (offset != written) { - fprintf(stderr, _("ROM image write failed (%d %d)\n"), + fprintf(stderr, _("ROM image write failed (%zd %zd)\n"), written, offset); exit(8); } - To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html