kernel32: Fix PROFILE_Load to handle mac line endings.

This commit is contained in:
Erik Inge Bolsø 2008-09-21 16:49:16 +02:00 committed by Alexandre Julliard
parent 40145952ae
commit e8754b8ea6
2 changed files with 22 additions and 11 deletions

View File

@ -405,6 +405,7 @@ static PROFILESECTION *PROFILE_Load(HANDLE hFile, ENCODING * pEncoding)
{ {
szLineStart = next_line; szLineStart = next_line;
next_line = memchrW(szLineStart, '\n', szEnd - szLineStart); next_line = memchrW(szLineStart, '\n', szEnd - szLineStart);
if (!next_line) next_line = memchrW(szLineStart, '\r', szEnd - szLineStart);
if (!next_line) next_line = szEnd; if (!next_line) next_line = szEnd;
else next_line++; else next_line++;
szLineEnd = next_line; szLineEnd = next_line;

View File

@ -428,7 +428,7 @@ static BOOL emptystr_ok(CHAR emptystr[MAX_PATH])
return TRUE; return TRUE;
} }
static void test_GetPrivateProfileString(void) static void test_GetPrivateProfileString(const char *content, const char *descript)
{ {
DWORD ret; DWORD ret;
CHAR buf[MAX_PATH]; CHAR buf[MAX_PATH];
@ -441,15 +441,10 @@ static void test_GetPrivateProfileString(void)
LPSTR tempfile; LPSTR tempfile;
static const char filename[] = ".\\winetest.ini"; static const char filename[] = ".\\winetest.ini";
static const char content[]=
"[section1]\r\n"
"name1=val1\r\n"
"name2=\"val2\"\r\n"
"name3\r\n"
"name4=a\r\n"
"[section2]\r\n";
create_test_file(filename, content, sizeof(content)); trace("test_GetPrivateProfileStringA: %s\n", descript);
create_test_file(filename, content, lstrlenA(content));
/* Run this test series with caching. Wine won't cache profile /* Run this test series with caching. Wine won't cache profile
files younger than 2.1 seconds. */ files younger than 2.1 seconds. */
@ -674,7 +669,7 @@ static void test_GetPrivateProfileString(void)
GetWindowsDirectoryA(windir, MAX_PATH); GetWindowsDirectoryA(windir, MAX_PATH);
GetTempFileNameA(windir, "pre", 0, path); GetTempFileNameA(windir, "pre", 0, path);
tempfile = strrchr(path, '\\') + 1; tempfile = strrchr(path, '\\') + 1;
create_test_file(path, content, sizeof(content)); create_test_file(path, content, lstrlenA(content));
/* only filename is used, file exists in windows directory */ /* only filename is used, file exists in windows directory */
lstrcpyA(buf, "kumquat"); lstrcpyA(buf, "kumquat");
@ -703,5 +698,20 @@ START_TEST(profile)
test_profile_existing(); test_profile_existing();
test_profile_delete_on_close(); test_profile_delete_on_close();
test_profile_refresh(); test_profile_refresh();
test_GetPrivateProfileString(); test_GetPrivateProfileString(
"[section1]\r\n"
"name1=val1\r\n"
"name2=\"val2\"\r\n"
"name3\r\n"
"name4=a\r\n"
"[section2]\r\n",
"CR+LF");
test_GetPrivateProfileString(
"[section1]\r"
"name1=val1\r"
"name2=\"val2\"\r"
"name3\r"
"name4=a\r"
"[section2]\r",
"CR only");
} }