msi: Add support for localizable strings in MsiDatabaseImport.
This commit is contained in:
parent
53f68ae3e6
commit
5b19cc79bd
|
@ -351,7 +351,7 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
|
||||||
LPCWSTR type;
|
LPCWSTR type;
|
||||||
DWORD sql_size = 1, i, len;
|
DWORD sql_size = 1, i, len;
|
||||||
WCHAR expanded[128], *ptr;
|
WCHAR expanded[128], *ptr;
|
||||||
WCHAR size[10], comma[2], extra[10];
|
WCHAR size[10], comma[2], extra[30];
|
||||||
|
|
||||||
static const WCHAR column_fmt[] = {'`','%','s','`',' ','%','s','%','s','%','s','%','s',' ',0};
|
static const WCHAR column_fmt[] = {'`','%','s','`',' ','%','s','%','s','%','s','%','s',' ',0};
|
||||||
static const WCHAR size_fmt[] = {'(','%','s',')',0};
|
static const WCHAR size_fmt[] = {'(','%','s',')',0};
|
||||||
|
@ -359,6 +359,7 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
|
||||||
static const WCHAR type_int[] = {'I','N','T',0};
|
static const WCHAR type_int[] = {'I','N','T',0};
|
||||||
static const WCHAR type_long[] = {'L','O','N','G',0};
|
static const WCHAR type_long[] = {'L','O','N','G',0};
|
||||||
static const WCHAR type_notnull[] = {' ','N','O','T',' ','N','U','L','L',0};
|
static const WCHAR type_notnull[] = {' ','N','O','T',' ','N','U','L','L',0};
|
||||||
|
static const WCHAR localizable[] = {' ','L','O','C','A','L','I','Z','A','B','L','E',0};
|
||||||
|
|
||||||
columns = msi_alloc_zero(sql_size * sizeof(WCHAR));
|
columns = msi_alloc_zero(sql_size * sizeof(WCHAR));
|
||||||
if (!columns)
|
if (!columns)
|
||||||
|
@ -376,12 +377,20 @@ static LPWSTR msi_build_createsql_columns(LPWSTR *columns_data, LPWSTR *types, D
|
||||||
|
|
||||||
ptr = &types[i][1];
|
ptr = &types[i][1];
|
||||||
len = atolW(ptr);
|
len = atolW(ptr);
|
||||||
|
extra[0] = '\0';
|
||||||
|
|
||||||
switch (types[i][0])
|
switch (types[i][0])
|
||||||
{
|
{
|
||||||
case 'l': case 's':
|
case 'l':
|
||||||
lstrcpyW(extra, type_notnull);
|
lstrcpyW(extra, type_notnull);
|
||||||
case 'L': case 'S':
|
case 'L':
|
||||||
|
lstrcatW(extra, localizable);
|
||||||
|
type = type_char;
|
||||||
|
sprintfW(size, size_fmt, ptr);
|
||||||
|
break;
|
||||||
|
case 's':
|
||||||
|
lstrcpyW(extra, type_notnull);
|
||||||
|
case 'S':
|
||||||
type = type_char;
|
type = type_char;
|
||||||
sprintfW(size, size_fmt, ptr);
|
sprintfW(size, size_fmt, ptr);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -766,13 +766,10 @@ static void test_packagecoltypes(void)
|
||||||
ok(count == 6, "Expected 6, got %d\n", count);
|
ok(count == 6, "Expected 6, got %d\n", count);
|
||||||
ok(check_record(rec, 1, "i2"), "wrong column label\n");
|
ok(check_record(rec, 1, "i2"), "wrong column label\n");
|
||||||
ok(check_record(rec, 2, "i4"), "wrong column label\n");
|
ok(check_record(rec, 2, "i4"), "wrong column label\n");
|
||||||
|
ok(check_record(rec, 3, "L64"), "wrong column label\n");
|
||||||
ok(check_record(rec, 4, "S255"), "wrong column label\n");
|
ok(check_record(rec, 4, "S255"), "wrong column label\n");
|
||||||
ok(check_record(rec, 5, "S32"), "wrong column label\n");
|
ok(check_record(rec, 5, "S32"), "wrong column label\n");
|
||||||
ok(check_record(rec, 6, "S72"), "wrong column label\n");
|
ok(check_record(rec, 6, "S72"), "wrong column label\n");
|
||||||
todo_wine
|
|
||||||
{
|
|
||||||
ok(check_record(rec, 3, "L64"), "wrong column label\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
MsiCloseHandle(rec);
|
MsiCloseHandle(rec);
|
||||||
MsiCloseHandle(view);
|
MsiCloseHandle(view);
|
||||||
|
|
Loading…
Reference in New Issue