wrc: Use compare_name_id() for resource translations.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
2c42d8b9a5
commit
78ef8cf443
|
@ -274,18 +274,12 @@ static int compare_cursor_group(cursor_group_t *cursor_group1, cursor_group_t *c
|
||||||
|
|
||||||
static int compare_control(control_t *control1, control_t *control2) {
|
static int compare_control(control_t *control1, control_t *control2) {
|
||||||
int different = 0;
|
int different = 0;
|
||||||
char *nameid = NULL;
|
|
||||||
int ignore_style;
|
int ignore_style;
|
||||||
if(((control1 && !control2) || (!control1 && control2)))
|
if(((control1 && !control2) || (!control1 && control2)))
|
||||||
different = 1;
|
different = 1;
|
||||||
if(different || !control1 || !control2)
|
if(different || !control1 || !control2)
|
||||||
return different;
|
return different;
|
||||||
nameid = strdup(get_nameid_str(control1->ctlclass));
|
if (compare_name_id( control1->ctlclass, control2->ctlclass )) return 1;
|
||||||
if(strcmp(nameid, get_nameid_str(control2->ctlclass)))
|
|
||||||
different = 1;
|
|
||||||
free(nameid);
|
|
||||||
if (different)
|
|
||||||
return different;
|
|
||||||
|
|
||||||
/* allow the translators to set some styles */
|
/* allow the translators to set some styles */
|
||||||
ignore_style = 0;
|
ignore_style = 0;
|
||||||
|
@ -324,7 +318,6 @@ static int compare_control(control_t *control1, control_t *control2) {
|
||||||
|
|
||||||
static int compare_dialog(dialog_t *dialog1, dialog_t *dialog2) {
|
static int compare_dialog(dialog_t *dialog1, dialog_t *dialog2) {
|
||||||
int different = 0;
|
int different = 0;
|
||||||
char *nameid = NULL;
|
|
||||||
control_t *ctrl1, *ctrl2;
|
control_t *ctrl1, *ctrl2;
|
||||||
if(((dialog1->memopt != dialog2->memopt) ||
|
if(((dialog1->memopt != dialog2->memopt) ||
|
||||||
(dialog1->lvc.version != dialog2->lvc.version) ||
|
(dialog1->lvc.version != dialog2->lvc.version) ||
|
||||||
|
@ -355,14 +348,9 @@ static int compare_dialog(dialog_t *dialog1, dialog_t *dialog2) {
|
||||||
((dialog1->gothelpid && !dialog2->gothelpid) ||
|
((dialog1->gothelpid && !dialog2->gothelpid) ||
|
||||||
(!dialog1->gothelpid && dialog2->gothelpid)))
|
(!dialog1->gothelpid && dialog2->gothelpid)))
|
||||||
different = 1;
|
different = 1;
|
||||||
nameid = strdup(get_nameid_str(dialog1->menu));
|
|
||||||
if(!different && strcmp(nameid, get_nameid_str(dialog2->menu)))
|
if (!different && compare_name_id( dialog1->menu, dialog2->menu )) return 1;
|
||||||
different = 1;
|
if (!different && compare_name_id( dialog1->dlgclass, dialog2->dlgclass )) return 1;
|
||||||
free(nameid);
|
|
||||||
nameid = strdup(get_nameid_str(dialog1->dlgclass));
|
|
||||||
if(!different && strcmp(nameid, get_nameid_str(dialog2->dlgclass)))
|
|
||||||
different = 1;
|
|
||||||
free(nameid);
|
|
||||||
|
|
||||||
ctrl1 = dialog1->controls;
|
ctrl1 = dialog1->controls;
|
||||||
ctrl2 = dialog2->controls;
|
ctrl2 = dialog2->controls;
|
||||||
|
@ -570,15 +558,11 @@ static int compare_stringtable(stringtable_t *stringtable1, stringtable_t *strin
|
||||||
|
|
||||||
static int compare_user(user_t *user1, user_t *user2) {
|
static int compare_user(user_t *user1, user_t *user2) {
|
||||||
int different = 0;
|
int different = 0;
|
||||||
char *nameid = NULL;
|
|
||||||
if(((user1->memopt != user2->memopt) ||
|
if(((user1->memopt != user2->memopt) ||
|
||||||
(user1->data->lvc.version != user2->data->lvc.version) ||
|
(user1->data->lvc.version != user2->data->lvc.version) ||
|
||||||
(user1->data->lvc.characts != user2->data->lvc.characts)))
|
(user1->data->lvc.characts != user2->data->lvc.characts)))
|
||||||
different = 1;
|
different = 1;
|
||||||
nameid = strdup(get_nameid_str(user1->type));
|
if (!different) different = compare_name_id( user1->type, user2->type );
|
||||||
if(!different && strcmp(nameid, get_nameid_str(user2->type)))
|
|
||||||
different = 1;
|
|
||||||
free(nameid);
|
|
||||||
return different;
|
return different;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -153,6 +153,19 @@ int compare_striW( const WCHAR *str1, const WCHAR *str2 )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int compare_striAW( const char *str1, const WCHAR *str2 )
|
||||||
|
{
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
/* only the A-Z range is case-insensitive */
|
||||||
|
WCHAR ch1 = (*str1 >= 'a' && *str1 <= 'z') ? *str1 + 'A' - 'a' : (unsigned char)*str1;
|
||||||
|
WCHAR ch2 = (*str2 >= 'a' && *str2 <= 'z') ? *str2 + 'A' - 'a' : *str2;
|
||||||
|
if (!ch1 || ch1 != ch2) return ch1 - ch2;
|
||||||
|
str1++;
|
||||||
|
str2++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
* Function : compare_name_id
|
* Function : compare_name_id
|
||||||
|
@ -165,30 +178,21 @@ int compare_striW( const WCHAR *str1, const WCHAR *str2 )
|
||||||
*/
|
*/
|
||||||
int compare_name_id(const name_id_t *n1, const name_id_t *n2)
|
int compare_name_id(const name_id_t *n1, const name_id_t *n2)
|
||||||
{
|
{
|
||||||
switch (n1->type)
|
if (n1->type != n2->type) return n1->type == name_ord ? 1 : -1;
|
||||||
{
|
if (n1->type == name_ord) return n1->name.i_name - n2->name.i_name;
|
||||||
case name_ord:
|
|
||||||
if (n2->type == name_ord) return n1->name.i_name - n2->name.i_name;
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
case name_str:
|
if (n1->name.s_name->type == str_char)
|
||||||
if (n2->type == name_str)
|
{
|
||||||
{
|
if (n2->name.s_name->type == str_char)
|
||||||
if(n1->name.s_name->type == str_char
|
return compare_striA(n1->name.s_name->str.cstr, n2->name.s_name->str.cstr);
|
||||||
&& n2->name.s_name->type == str_char)
|
return compare_striAW(n1->name.s_name->str.cstr, n2->name.s_name->str.wstr);
|
||||||
{
|
}
|
||||||
return compare_striA(n1->name.s_name->str.cstr, n2->name.s_name->str.cstr);
|
else
|
||||||
}
|
{
|
||||||
else
|
if (n2->name.s_name->type == str_char)
|
||||||
{
|
return -compare_striAW(n2->name.s_name->str.cstr, n1->name.s_name->str.wstr);
|
||||||
assert( n1->name.s_name->type == str_unicode );
|
return compare_striW(n1->name.s_name->str.wstr, n2->name.s_name->str.wstr);
|
||||||
assert( n2->name.s_name->type == str_unicode );
|
|
||||||
return compare_striW(n1->name.s_name->str.wstr, n2->name.s_name->str.wstr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
return 0; /* Keep the compiler happy */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
Loading…
Reference in New Issue