From d0b7fa9da7539847ebfc6960ff2aedc762218c1d Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 1 Apr 2022 12:58:15 +0200 Subject: [PATCH] wrc: Store version and characteristics as simple integers. Signed-off-by: Alexandre Julliard --- tools/wrc/genres.c | 12 ++++++------ tools/wrc/newstruc.c | 26 -------------------------- tools/wrc/newstruc.h | 4 ---- tools/wrc/parser.y | 32 ++++++++++++++++---------------- tools/wrc/po.c | 4 ++-- tools/wrc/wrctypes.h | 8 ++++---- 6 files changed, 28 insertions(+), 58 deletions(-) diff --git a/tools/wrc/genres.c b/tools/wrc/genres.c index 5282c809f85..81e7a52c9a9 100644 --- a/tools/wrc/genres.c +++ b/tools/wrc/genres.c @@ -247,17 +247,17 @@ static void put_name_id(name_id_t *nid, int upcase, language_t lang) static void put_lvc(lvc_t *lvc) { if(lvc) + { put_word(lvc->language); + put_dword(lvc->version); + put_dword(lvc->characts); + } else + { put_word(0); /* Neutral */ - if(lvc && lvc->version) - put_dword(*lvc->version); - else put_dword(0); - if(lvc && lvc->characts) - put_dword(*lvc->characts); - else put_dword(0); + } } /* diff --git a/tools/wrc/newstruc.c b/tools/wrc/newstruc.c index b1cd9183640..9602cdfbf92 100644 --- a/tools/wrc/newstruc.c +++ b/tools/wrc/newstruc.c @@ -196,32 +196,6 @@ resource_t *new_resource(enum res_e t, void *res, int memopt, language_t lan) return r; } -version_t *new_version(unsigned int v) -{ - version_t *vp = xmalloc(sizeof(version_t)); - *vp = v; - return vp; -} - -characts_t *new_characts(unsigned int c) -{ - characts_t *cp = xmalloc(sizeof(characts_t)); - *cp = c; - return cp; -} - -version_t *dup_version(version_t *v) -{ - if(!v) return NULL; - return new_version(*v); -} - -characts_t *dup_characts(characts_t *c) -{ - if(!c) return NULL; - return new_characts(*c); -} - html_t *new_html(raw_data_t *rd, int *memopt) { html_t *html = xmalloc(sizeof(html_t)); diff --git a/tools/wrc/newstruc.h b/tools/wrc/newstruc.h index dd3215eba8d..7ed386916ab 100644 --- a/tools/wrc/newstruc.h +++ b/tools/wrc/newstruc.h @@ -43,10 +43,6 @@ string_t *new_string(void); toolbar_item_t *new_toolbar_item(void); ani_any_t *new_ani_any(void); resource_t *new_resource(enum res_e t, void *res, int memopt, language_t lan); -version_t *new_version(unsigned int v); -characts_t *new_characts(unsigned int c); -version_t *dup_version(version_t *v); -characts_t *dup_characts(characts_t *c); html_t *new_html(raw_data_t *rd, int *memopt); rcdata_t *new_rcdata(raw_data_t *rd, int *memopt); font_id_t *new_font_id(int size, string_t *face, int weight, int italic); diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y index d13d89cdd41..6b362b06b6b 100644 --- a/tools/wrc/parser.y +++ b/tools/wrc/parser.y @@ -155,8 +155,8 @@ static int dont_want_id = 0; /* See language parsing for details */ /* Set to the current options of the currently scanning stringtable */ static int *tagstt_memopt; -static characts_t *tagstt_characts; -static version_t *tagstt_version; +static characts_t tagstt_characts; +static version_t tagstt_version; static const char riff[4] = "RIFF"; /* RIFF file magic for animated cursor/icon */ @@ -180,8 +180,8 @@ static event_t *add_string_event(string_t *key, int id, int flags, event_t *prev static event_t *add_event(int key, int id, int flags, event_t *prev); static name_id_t *convert_ctlclass(name_id_t *cls); static control_t *ins_ctrl(int type, int special_style, control_t *ctrl, control_t *prev); -static dialog_t *dialog_version(version_t *v, dialog_t *dlg); -static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg); +static dialog_t *dialog_version(version_t v, dialog_t *dlg); +static dialog_t *dialog_characteristics(characts_t c, dialog_t *dlg); static dialog_t *dialog_language(language_t l, dialog_t *dlg); static dialog_t *dialog_menu(name_id_t *m, dialog_t *dlg); static dialog_t *dialog_class(name_id_t *n, dialog_t *dlg); @@ -228,8 +228,8 @@ static int rsrcid_to_token(int lookahead); name_id_t *nid; font_id_t *fntid; language_t lan; - version_t *ver; - characts_t *chars; + version_t ver; + characts_t chars; event_t *event; menu_item_t *menitm; itemex_opt_t *exopt; @@ -1727,11 +1727,11 @@ opt_language ; opt_characts - : tCHARACTERISTICS expr { $$ = new_characts($2); } + : tCHARACTERISTICS expr { $$ = $2; } ; opt_version - : tVERSION expr { $$ = new_version($2); } + : tVERSION expr { $$ = $2; } ; /* ------------------------------ Raw data handling ------------------------------ */ @@ -1895,7 +1895,7 @@ static dialog_t *dialog_language(language_t l, dialog_t *dlg) return dlg; } -static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg) +static dialog_t *dialog_characteristics(characts_t c, dialog_t *dlg) { assert(dlg != NULL); if(dlg->lvc.characts) @@ -1904,7 +1904,7 @@ static dialog_t *dialog_characteristics(characts_t *c, dialog_t *dlg) return dlg; } -static dialog_t *dialog_version(version_t *v, dialog_t *dlg) +static dialog_t *dialog_version(version_t v, dialog_t *dlg) { assert(dlg != NULL); if(dlg->lvc.version) @@ -2369,8 +2369,8 @@ static resource_t *build_stt_resources(stringtable_t *stthead) int j; unsigned int andsum; unsigned int orsum; - characts_t *characts; - version_t *version; + characts_t characts; + version_t version; if(!stthead) return NULL; @@ -2401,8 +2401,8 @@ static resource_t *build_stt_resources(stringtable_t *stthead) } andsum = ~0; orsum = 0; - characts = NULL; - version = NULL; + characts = 0; + version = 0; /* Check individual memory options and get * the first characteristics/version */ @@ -2426,11 +2426,11 @@ static resource_t *build_stt_resources(stringtable_t *stthead) { if(characts && newstt->entries[j].characts - && *newstt->entries[j].characts != *characts) + && newstt->entries[j].characts != characts) warning("Stringtable's characteristics are not the same (idbase: %d)\n", newstt->idbase); if(version && newstt->entries[j].version - && *newstt->entries[j].version != *version) + && newstt->entries[j].version != version) warning("Stringtable's versions are not the same (idbase: %d)\n", newstt->idbase); } rsc = new_resource(res_stt, newstt, newstt->memopt, newstt->lvc.language); diff --git a/tools/wrc/po.c b/tools/wrc/po.c index 4d472a12a64..266dd3ec2e4 100644 --- a/tools/wrc/po.c +++ b/tools/wrc/po.c @@ -86,10 +86,10 @@ static language_t get_default_sublang( language_t lan ) } } -static version_t *get_dup_version( language_t lang ) +static version_t get_dup_version( language_t lang ) { /* English "translations" take precedence over the original rc contents */ - return new_version( is_english( lang ) ? 1 : -1 ); + return is_english( lang ) ? 1 : -1; } static name_id_t *dup_name_id( name_id_t *id ) diff --git a/tools/wrc/wrctypes.h b/tools/wrc/wrctypes.h index 2415ce5f294..b453e2fdb08 100644 --- a/tools/wrc/wrctypes.h +++ b/tools/wrc/wrctypes.h @@ -108,8 +108,8 @@ typedef unsigned int version_t; typedef struct lvc { language_t language; - version_t *version; - characts_t *characts; + version_t version; + characts_t characts; } lvc_t; typedef struct font_id { @@ -428,8 +428,8 @@ typedef struct stt_entry { string_t *str; int id; unsigned int memopt; - characts_t *characts; - version_t *version; + characts_t characts; + version_t version; } stt_entry_t; typedef struct stringtable {