icoutils/0016-icotool-Fix-const-correctness-of-handling-in-and-out.patch
Richard W.M. Jones 86a1ed311e Add a series of upstream patches to enable compiler warnings and
fix multiple issues.

Revert one of the checks which breaks processing of PE binaries.

Removed the 'Group' line, not needed with modern Fedora/RPM.
2017-03-10 12:18:04 +00:00

109 lines
4.0 KiB
Diff

From eb26a4fa5432a0bd16b36663d80c7469bce603f8 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Thu, 9 Mar 2017 14:20:57 +0000
Subject: [PATCH 16/26] icotool: Fix const-correctness of handling in and out
filenames.
This change is mostly straightforward, but I had to change the
prototype of the 'extract_outfile_gen' function so that it doesn't try
to overload the meaning of the 'char **outname_ptr' parameter. The
(const) input name is placed in a separate parameter.
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
---
icotool/extract.c | 8 +++-----
icotool/icotool.h | 4 ++--
icotool/main.c | 10 ++++------
3 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/icotool/extract.c b/icotool/extract.c
index cb8b5dc..8bbf5c7 100644
--- a/icotool/extract.c
+++ b/icotool/extract.c
@@ -95,7 +95,7 @@ static void png_read_mem (png_structp png, png_bytep data, png_size_t size)
int
-extract_icons(FILE *in, char *inname, bool listmode, ExtractNameGen outfile_gen, ExtractFilter filter)
+extract_icons(FILE *in, const char *inname, bool listmode, ExtractNameGen outfile_gen, ExtractFilter filter)
{
Win32CursorIconFileDir dir;
Win32CursorIconFileDirEntry *entries = NULL;
@@ -191,8 +191,7 @@ extract_icons(FILE *in, char *inname, bool listmode, ExtractNameGen outfile_gen,
printf(_(" --hotspot-x=%d --hotspot-y=%d"), entries[c].hotspot_x, entries[c].hotspot_y);
printf("\n");
} else {
- outname = inname;
- out = outfile_gen(&outname, width, height, bit_count, completed);
+ out = outfile_gen(inname, &outname, width, height, bit_count, completed);
restore_message_header();
set_message_header(outname);
@@ -296,8 +295,7 @@ extract_icons(FILE *in, char *inname, bool listmode, ExtractNameGen outfile_gen,
goto done;
}
- outname = inname;
- out = outfile_gen(&outname, width, height, bitmap.bit_count, completed);
+ out = outfile_gen(inname, &outname, width, height, bitmap.bit_count, completed);
restore_message_header();
set_message_header(outname);
diff --git a/icotool/icotool.h b/icotool/icotool.h
index ba2fbbd..35c2a45 100644
--- a/icotool/icotool.h
+++ b/icotool/icotool.h
@@ -36,9 +36,9 @@ uint32_t palette_lookup(Palette *palette, uint8_t r, uint8_t g, uint8_t b);
uint32_t palette_count(Palette *palette);
/* extract.c */
-typedef FILE *(*ExtractNameGen)(char **outname, int width, int height, int bitcount, int index);
+typedef FILE *(*ExtractNameGen)(const char *inname, char **outname, int width, int height, int bitcount, int index);
typedef bool (*ExtractFilter)(int index, int width, int height, int bitdepth, int palettesize, bool icon, int hotspot_x, int hotspot_y);
-int extract_icons(FILE *in, char *inname, bool listmode, ExtractNameGen outfile_gen, ExtractFilter filter);
+int extract_icons(FILE *in, const char *inname, bool listmode, ExtractNameGen outfile_gen, ExtractFilter filter);
/* create.c */
typedef FILE *(*CreateNameGen)(char **outname);
diff --git a/icotool/main.c b/icotool/main.c
index 271a5ee..01e62f5 100644
--- a/icotool/main.c
+++ b/icotool/main.c
@@ -127,13 +127,11 @@ create_outfile_gen(char **out)
}
static FILE *
-extract_outfile_gen(char **outname_ptr, int w, int h, int bc, int i)
+extract_outfile_gen(const char *inname, char **outname_ptr, int w, int h, int bc, int i)
{
- char *inname = *outname_ptr;
-
if (output == NULL || is_directory(output)) {
StrBuf *outname;
- char *inbase;
+ const char *inbase;
outname = strbuf_new();
if (output != NULL) {
@@ -192,7 +190,7 @@ display_help(void)
}
static bool
-open_file_or_stdin(char *name, FILE **outfile, char **outname)
+open_file_or_stdin(char *name, FILE **outfile, const char **outname)
{
if (strcmp(name, "-") == 0) {
*outfile = stdin;
@@ -216,7 +214,7 @@ main(int argc, char **argv)
bool extract_mode = false;
bool create_mode = false;
FILE *in;
- char *inname;
+ const char *inname;
size_t raw_filec = 0;
char** raw_filev = 0;
--
2.10.2