forked from Imagelibrary/binutils-gdb
* rclex.l: Add casts and change types to avoid warnings.
* rcparse.y: Likewise. * resbin.c: Likewise. * rescoff.c: Likewise. * resrc.c: Likewise. * Makefile.am: Rebuild dependencies. (HFILES): Remove readelf.h. * Makefile.in: Rebuild. Based on patches from Andrew Kozin <Andrew.Kozin@p14.f960.n5020.z2.fidonet.org>: * winduni.h: New file, from windres.h. * winduni.c: New file, from windres.c. * windres.c: Move Unicode functions into winduni.c. * windres.h: Move Unicode declarations into winduni.h. Include winduni.h. (RT_ACCELERATOR): Rename from RT_ACCELERATORS to match Windows macro. Change all uses. (RT_PLUGPLAY, RT_VXD): Correct values. * Makefile.am (HFILES): Add windres.h. (CFILES): Add winduni.c. (windres_SOURCES): Add winduni.c.
This commit is contained in:
@@ -24,6 +24,8 @@
|
||||
/* This is the header file for the windres program. It defines
|
||||
structures and declares functions used within the program. */
|
||||
|
||||
#include "winduni.h"
|
||||
|
||||
/* We represent resources internally as a tree, similar to the tree
|
||||
used in the .rsrc section of a COFF file. The root is a
|
||||
res_directory structure. */
|
||||
@@ -55,9 +57,9 @@ struct res_id
|
||||
struct
|
||||
{
|
||||
/* Length of the name. */
|
||||
unsigned short length;
|
||||
int length;
|
||||
/* Pointer to the name, which is a Unicode string. */
|
||||
unsigned short *name;
|
||||
unichar *name;
|
||||
} n;
|
||||
/* If the named field is zero, this is the ID. */
|
||||
unsigned long id;
|
||||
@@ -162,7 +164,7 @@ struct res_resource
|
||||
struct
|
||||
{
|
||||
unsigned long length;
|
||||
unsigned char *data;
|
||||
const unsigned char *data;
|
||||
} data;
|
||||
struct accelerator *acc;
|
||||
struct cursor *cursor;
|
||||
@@ -170,10 +172,10 @@ struct res_resource
|
||||
struct dialog *dialog;
|
||||
struct fontdir *fontdir;
|
||||
struct group_icon *group_icon;
|
||||
struct menuitem *menu;
|
||||
struct rcdata_data *rcdata;
|
||||
struct menu *menu;
|
||||
struct rcdata_item *rcdata;
|
||||
struct stringtable *stringtable;
|
||||
struct rcdata_data *userdata;
|
||||
struct rcdata_item *userdata;
|
||||
struct versioninfo *versioninfo;
|
||||
} u;
|
||||
/* Information from a res file. */
|
||||
@@ -200,15 +202,15 @@ struct res_resource
|
||||
#define RT_STRING 6
|
||||
#define RT_FONTDIR 7
|
||||
#define RT_FONT 8
|
||||
#define RT_ACCELERATORS 9
|
||||
#define RT_ACCELERATOR 9
|
||||
#define RT_RCDATA 10
|
||||
#define RT_MESSAGETABLE 11
|
||||
#define RT_GROUP_CURSOR 12
|
||||
#define RT_GROUP_ICON 14
|
||||
#define RT_VERSION 16
|
||||
#define RT_DLGINCLUDE 17
|
||||
#define RT_PLUGPLAY 18
|
||||
#define RT_VXD 19
|
||||
#define RT_PLUGPLAY 19
|
||||
#define RT_VXD 20
|
||||
#define RT_ANICURSOR 21
|
||||
#define RT_ANIICON 22
|
||||
|
||||
@@ -247,7 +249,7 @@ struct cursor
|
||||
/* Length of bitmap data. */
|
||||
unsigned long length;
|
||||
/* Data. */
|
||||
unsigned char *data;
|
||||
const unsigned char *data;
|
||||
};
|
||||
|
||||
/* A group_cursor resource is a list of group_cursor structures. */
|
||||
@@ -291,11 +293,11 @@ struct dialog
|
||||
/* Class name. */
|
||||
struct res_id class;
|
||||
/* Caption. */
|
||||
char *caption;
|
||||
unichar *caption;
|
||||
/* Font point size. */
|
||||
unsigned short pointsize;
|
||||
/* Font name. */
|
||||
char *font;
|
||||
unichar *font;
|
||||
/* Extended information for a dialogex. */
|
||||
struct dialog_ex *ex;
|
||||
/* Controls. */
|
||||
@@ -491,7 +493,7 @@ struct dialog_control
|
||||
/* Associated text. */
|
||||
struct res_id text;
|
||||
/* Extra data for the window procedure. */
|
||||
struct rcdata_data *data;
|
||||
struct rcdata_item *data;
|
||||
/* Help ID. Only used in an extended dialog. */
|
||||
unsigned long help;
|
||||
};
|
||||
@@ -516,7 +518,7 @@ struct fontdir
|
||||
/* Length of font information. */
|
||||
unsigned long length;
|
||||
/* Font information. */
|
||||
unsigned char *data;
|
||||
const unsigned char *data;
|
||||
};
|
||||
|
||||
/* A group_icon resource is a list of group_icon structures. */
|
||||
@@ -541,6 +543,17 @@ struct group_icon
|
||||
unsigned short index;
|
||||
};
|
||||
|
||||
/* A menu resource. */
|
||||
|
||||
struct menu
|
||||
{
|
||||
/* List of menuitems. */
|
||||
struct menuitem *items;
|
||||
/* Help ID. I don't think there is any way to set this in an rc
|
||||
file, but it can appear in the binary format. */
|
||||
unsigned long help;
|
||||
};
|
||||
|
||||
/* A menu resource is a list of menuitem structures. */
|
||||
|
||||
struct menuitem
|
||||
@@ -554,8 +567,8 @@ struct menuitem
|
||||
unsigned long state;
|
||||
/* Id. */
|
||||
unsigned short id;
|
||||
/* Text. */
|
||||
char *text;
|
||||
/* Unicode text. */
|
||||
unichar *text;
|
||||
/* Popup menu items for a popup. */
|
||||
struct menuitem *popup;
|
||||
/* Help ID. This is only used in a menuex. */
|
||||
@@ -573,19 +586,11 @@ struct menuitem
|
||||
#define MENUITEM_POPUP 0x010
|
||||
#define MENUITEM_MENUBARBREAK 0x020
|
||||
#define MENUITEM_MENUBREAK 0x040
|
||||
#define MENUITEM_ENDMENU 0x080
|
||||
#define MENUITEM_HELP 0x4000
|
||||
|
||||
/* An rcdata resource is a pointer to an rcdata_data structure. */
|
||||
|
||||
struct rcdata_data
|
||||
{
|
||||
/* First data item. */
|
||||
struct rcdata_item *first;
|
||||
/* Last data item. */
|
||||
struct rcdata_item *last;
|
||||
};
|
||||
|
||||
/* For an rcdata resource we keep a list of rcdata_item structures. */
|
||||
/* An rcdata resource is a pointer to a list of rcdata_item
|
||||
structures. */
|
||||
|
||||
struct rcdata_item
|
||||
{
|
||||
@@ -604,12 +609,20 @@ struct rcdata_item
|
||||
{
|
||||
unsigned int word;
|
||||
unsigned long dword;
|
||||
char *string;
|
||||
unsigned short *wstring;
|
||||
struct
|
||||
{
|
||||
unsigned long length;
|
||||
unsigned char *data;
|
||||
const char *s;
|
||||
} string;
|
||||
struct
|
||||
{
|
||||
unsigned long length;
|
||||
const unichar *w;
|
||||
} wstring;
|
||||
struct
|
||||
{
|
||||
unsigned long length;
|
||||
const unsigned char *data;
|
||||
} buffer;
|
||||
} u;
|
||||
};
|
||||
@@ -622,9 +635,9 @@ struct stringtable
|
||||
struct
|
||||
{
|
||||
/* Length of string. */
|
||||
unsigned short length;
|
||||
int length;
|
||||
/* String data if length > 0. */
|
||||
unsigned short *string;
|
||||
unichar *string;
|
||||
} strings[16];
|
||||
};
|
||||
|
||||
@@ -677,7 +690,7 @@ struct ver_info
|
||||
struct
|
||||
{
|
||||
/* Language. */
|
||||
unsigned short *language;
|
||||
unichar *language;
|
||||
/* Strings. */
|
||||
struct ver_stringinfo *strings;
|
||||
} string;
|
||||
@@ -685,7 +698,7 @@ struct ver_info
|
||||
struct
|
||||
{
|
||||
/* Key. */
|
||||
unsigned short *key;
|
||||
unichar *key;
|
||||
/* Values. */
|
||||
struct ver_varinfo *var;
|
||||
} var;
|
||||
@@ -699,9 +712,9 @@ struct ver_stringinfo
|
||||
/* Next string. */
|
||||
struct ver_stringinfo *next;
|
||||
/* Key. */
|
||||
unsigned short *key;
|
||||
unichar *key;
|
||||
/* Value. */
|
||||
unsigned short *value;
|
||||
unichar *value;
|
||||
};
|
||||
|
||||
/* A list of variable version information. */
|
||||
@@ -716,6 +729,19 @@ struct ver_varinfo
|
||||
unsigned short charset;
|
||||
};
|
||||
|
||||
/* This structure is used when converting resource information to
|
||||
binary. */
|
||||
|
||||
struct bindata
|
||||
{
|
||||
/* Next data. */
|
||||
struct bindata *next;
|
||||
/* Length of data. */
|
||||
unsigned long length;
|
||||
/* Data. */
|
||||
unsigned char *data;
|
||||
};
|
||||
|
||||
/* Function declarations. */
|
||||
|
||||
extern struct res_directory *read_rc_file
|
||||
@@ -730,9 +756,16 @@ extern void write_res_file
|
||||
extern void write_coff_file
|
||||
PARAMS ((const char *, const char *, const struct res_directory *));
|
||||
|
||||
extern struct res_resource *bin_to_res
|
||||
PARAMS ((struct res_id, const unsigned char *, unsigned long, int));
|
||||
extern struct bindata *res_to_bin PARAMS ((const struct res_resource *, int));
|
||||
|
||||
extern FILE *open_file_search
|
||||
PARAMS ((const char *, const char *, const char *, char **));
|
||||
|
||||
extern PTR res_alloc PARAMS ((size_t));
|
||||
extern PTR reswr_alloc PARAMS ((size_t));
|
||||
|
||||
/* Resource ID handling. */
|
||||
|
||||
extern int res_id_cmp PARAMS ((struct res_id, struct res_id));
|
||||
@@ -740,12 +773,6 @@ extern void res_id_print PARAMS ((FILE *, struct res_id, int));
|
||||
extern void res_ids_print PARAMS ((FILE *, int, const struct res_id *));
|
||||
extern void res_string_to_id PARAMS ((struct res_id *, const char *));
|
||||
|
||||
/* Unicode support. */
|
||||
|
||||
extern void unicode_from_ascii
|
||||
PARAMS ((unsigned short *, unsigned short **, const char *));
|
||||
extern void unicode_print PARAMS ((FILE *, const unsigned short *, int));
|
||||
|
||||
/* Manipulation of the resource tree. */
|
||||
|
||||
extern struct res_resource *define_resource
|
||||
@@ -754,7 +781,7 @@ extern struct res_resource *define_standard_resource
|
||||
PARAMS ((struct res_directory **, int, struct res_id, int, int));
|
||||
|
||||
extern int extended_dialog PARAMS ((const struct dialog *));
|
||||
extern int extended_menu PARAMS ((const struct menuitem *));
|
||||
extern int extended_menu PARAMS ((const struct menu *));
|
||||
|
||||
/* Communication between the rc file support and the parser and lexer. */
|
||||
|
||||
@@ -767,6 +794,9 @@ extern int yylex PARAMS ((void));
|
||||
extern void yyerror PARAMS ((const char *));
|
||||
extern void rcparse_warning PARAMS ((const char *));
|
||||
extern void rcparse_set_language PARAMS ((int));
|
||||
extern void rcparse_discard_strings PARAMS ((void));
|
||||
extern void rcparse_rcdata PARAMS ((void));
|
||||
extern void rcparse_normal PARAMS ((void));
|
||||
|
||||
extern void define_accelerator
|
||||
PARAMS ((struct res_id, const struct res_res_info *, struct accelerator *));
|
||||
@@ -777,7 +807,7 @@ extern void define_cursor
|
||||
extern void define_dialog
|
||||
PARAMS ((struct res_id, const struct res_res_info *, const struct dialog *));
|
||||
extern struct dialog_control *define_control
|
||||
PARAMS ((char *, unsigned long, unsigned long, unsigned long,
|
||||
PARAMS ((const char *, unsigned long, unsigned long, unsigned long,
|
||||
unsigned long, unsigned long, unsigned long, unsigned long,
|
||||
unsigned long));
|
||||
extern void define_font
|
||||
@@ -787,23 +817,20 @@ extern void define_icon
|
||||
extern void define_menu
|
||||
PARAMS ((struct res_id, const struct res_res_info *, struct menuitem *));
|
||||
extern struct menuitem *define_menuitem
|
||||
PARAMS ((char *, int, unsigned long, unsigned long, unsigned long,
|
||||
PARAMS ((const char *, int, unsigned long, unsigned long, unsigned long,
|
||||
struct menuitem *));
|
||||
extern void define_messagetable
|
||||
PARAMS ((struct res_id, const struct res_res_info *, const char *));
|
||||
extern void define_rcdata
|
||||
PARAMS ((struct res_id, const struct res_res_info *, struct rcdata_data *));
|
||||
extern struct rcdata_data *append_rcdata_item
|
||||
PARAMS ((struct rcdata_data *, struct rcdata_item *));
|
||||
extern struct rcdata_data *append_rcdata_string
|
||||
PARAMS ((struct rcdata_data *, char *));
|
||||
extern struct rcdata_data *append_rcdata_number
|
||||
PARAMS ((struct rcdata_data *, unsigned long, int));
|
||||
PARAMS ((struct res_id, const struct res_res_info *, struct rcdata_item *));
|
||||
extern struct rcdata_item *define_rcdata_string
|
||||
PARAMS ((const char *, unsigned long));
|
||||
extern struct rcdata_item *define_rcdata_number PARAMS ((unsigned long, int));
|
||||
extern void define_stringtable
|
||||
PARAMS ((const struct res_res_info *, unsigned long, char *));
|
||||
PARAMS ((const struct res_res_info *, unsigned long, const char *));
|
||||
extern void define_user_data
|
||||
PARAMS ((struct res_id, struct res_id, const struct res_res_info *,
|
||||
struct rcdata_data *));
|
||||
struct rcdata_item *));
|
||||
extern void define_user_file
|
||||
PARAMS ((struct res_id, struct res_id, const struct res_res_info *,
|
||||
const char *));
|
||||
@@ -811,10 +838,10 @@ extern void define_versioninfo
|
||||
PARAMS ((struct res_id, int, struct fixed_versioninfo *,
|
||||
struct ver_info *));
|
||||
extern struct ver_info *append_ver_stringfileinfo
|
||||
PARAMS ((struct ver_info *, char *, struct ver_stringinfo *));
|
||||
PARAMS ((struct ver_info *, const char *, struct ver_stringinfo *));
|
||||
extern struct ver_info *append_ver_varfileinfo
|
||||
PARAMS ((struct ver_info *, char *, struct ver_varinfo *));
|
||||
PARAMS ((struct ver_info *, const char *, struct ver_varinfo *));
|
||||
extern struct ver_stringinfo *append_verval
|
||||
PARAMS ((struct ver_stringinfo *, char *, char *));
|
||||
PARAMS ((struct ver_stringinfo *, const char *, const char *));
|
||||
extern struct ver_varinfo *append_vertrans
|
||||
PARAMS ((struct ver_varinfo *, unsigned long, unsigned long));
|
||||
|
||||
Reference in New Issue
Block a user