msi: Add support for localizable strings in MsiDatabaseImport.

This commit is contained in:
James Hawkins 2006-10-23 18:07:04 -07:00 committed by Alexandre Julliard
parent 53f68ae3e6
commit 5b19cc79bd
2 changed files with 13 additions and 7 deletions

View File

@ -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;

View File

@ -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);