Skip to content

Commit 38daf1a

Browse files
authored
Merge pull request #17 from toddtreece/csv-parser
csv parsing fixes
2 parents 86733a8 + bf1f540 commit 38daf1a

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/AdafruitIO_Data.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,9 @@ char* AdafruitIO_Data::toCSV()
364364

365365
memset(_csv, 0, AIO_CSV_LENGTH);
366366

367-
strcpy(_csv, _value);
368-
strcat(_csv, ",");
367+
strcpy(_csv, "\"");
368+
strcat(_csv, _value);
369+
strcat(_csv, "\",");
369370
strcat(_csv, charFromDouble(_lat));
370371
strcat(_csv, ",");
371372
strcat(_csv, charFromDouble(_lon));
@@ -413,8 +414,19 @@ char* AdafruitIO_Data::charFromDouble(double d, int precision)
413414

414415
bool AdafruitIO_Data::_parseCSV()
415416
{
416-
// parse value from csv
417-
strcpy(_value, strtok(_csv, ","));
417+
char *csv = _csv;
418+
419+
if(csv[0] == '"') {
420+
// handle quoted values
421+
csv++;
422+
int end = strstr(csv, "\",") - csv;
423+
strncpy(_value, csv, end);
424+
csv += (end + 2);
425+
} else {
426+
// handle normal values
427+
strcpy(_value, strtok(csv, ","));
428+
}
429+
418430
if (! _value) return false;
419431

420432
// parse lat from csv and convert to float

0 commit comments

Comments
 (0)