Fix ini_reader when no new line at EOF
authorlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 8 Jun 2009 16:00:34 +0000 (16:00 +0000)
committerlottaviano <lottaviano@38d2e660-2303-0410-9eaa-f027e97ec537>
Mon, 8 Jun 2009 16:00:34 +0000 (16:00 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@2711 38d2e660-2303-0410-9eaa-f027e97ec537

bertos/mware/ini_reader.c
bertos/mware/ini_reader_test.c
test/ini_reader_file.ini

index 037570dce3a8188c25be3903843c37a489fe378e..5e7c28733722cdf7dba7903797ed416209bd75a1 100644 (file)
@@ -115,14 +115,17 @@ static char *getValue(const char *line, char *value, size_t size)
  */
 static int findKey(KFile *fd, const char *key, char *line, size_t size)
 {
-       while (kfile_gets(fd, line, size) != EOF && *line != '[')
+       int err;
+       do
        {
+               err = kfile_gets(fd, line, size);
                char curr_key[30];
                getKey(line, curr_key, 30);
                /* check key */
                if (!strcmp(curr_key, key))
                        return 0;
        }
+       while (err != EOF && *line != '[');
        return EOF;
 }
 
index 495685ebc4cc84a4d2e48676a781e379defb9814..8237d970a21d91329e0e3eace30f565d2319a6aa 100644 (file)
@@ -87,6 +87,9 @@ int ini_reader_testRun(void)
 
        ASSERT(ini_getString(&kf.fd, "Long section with spaces", "value", "", buf, 30) != EOF);
        ASSERT(strcmp(buf, "long value") == 0);
+
+       ASSERT(ini_getString(&kf.fd, "Long section with spaces", "no_new_line", "", buf, 30) != EOF);
+       ASSERT(strcmp(buf, "value") == 0);
        return 0;
 }
 
index 8837e105b306f1831f77ab7b282835c7382e82a7..606c439c5f8281f9ac8a6496f3e6aba71041fad3 100644 (file)
@@ -13,3 +13,4 @@ comment = line with #comment
 
 [Long section with spaces]
 value = long value
+no_new_line = value
\ No newline at end of file