mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 06:28:19 +00:00
41 lines
793 B
C++
41 lines
793 B
C++
|
#include "csv.h"
|
||
|
|
||
|
void CsvWrite(IOHANDLE File, int NumColumns, const char *const *ppColumns)
|
||
|
{
|
||
|
for(int i = 0; i < NumColumns; i++)
|
||
|
{
|
||
|
if(i != 0)
|
||
|
{
|
||
|
io_write(File, ",", 1);
|
||
|
}
|
||
|
const char *pColumn = ppColumns[i];
|
||
|
int ColumnLength = str_length(pColumn);
|
||
|
if(!str_find(pColumn, "\"") && !str_find(pColumn, ","))
|
||
|
{
|
||
|
io_write(File, pColumn, ColumnLength);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
int Start = 0;
|
||
|
io_write(File, "\"", 1);
|
||
|
for(int j = 0; j < ColumnLength; j++)
|
||
|
{
|
||
|
if(pColumn[j] == '"')
|
||
|
{
|
||
|
if(Start != j)
|
||
|
{
|
||
|
io_write(File, pColumn + Start, j - Start);
|
||
|
}
|
||
|
Start = j + 1;
|
||
|
io_write(File, "\"\"", 2);
|
||
|
}
|
||
|
}
|
||
|
if(Start != ColumnLength)
|
||
|
{
|
||
|
io_write(File, pColumn + Start, ColumnLength - Start);
|
||
|
}
|
||
|
io_write(File, "\"", 1);
|
||
|
}
|
||
|
io_write_newline(File);
|
||
|
}
|