MCPcopy Create free account
hub / github.com/Genivia/ugrep / csv

Method csv

src/output.cpp:2052–2117  ·  view source on GitHub ↗

output quoted string in CSV

Source from the content-addressed store, hash-verified

2050
2051// output quoted string in CSV
2052void Output::csv(const char *data, size_t size)
2053{
2054 const char *s = data;
2055 const char *e = data + size;
2056 const char *t = s;
2057
2058 chr('"');
2059
2060 while (s < e)
2061 {
2062 int c = *s;
2063
2064 if ((c & 0x80) == 0)
2065 {
2066 if (c == '"')
2067 {
2068 str(t, s - t);
2069 t = s + 1;
2070 str("\"\"", 2);
2071 }
2072 else if ((c < 0x20 && c != '\t') || c == '\\')
2073 {
2074 str(t, s - t);
2075 t = s + 1;
2076
2077 switch (c)
2078 {
2079 case '\b':
2080 c = 'b';
2081 break;
2082
2083 case '\f':
2084 c = 'f';
2085 break;
2086
2087 case '\n':
2088 c = 'n';
2089 break;
2090
2091 case '\r':
2092 c = 'r';
2093 break;
2094
2095 case '\t':
2096 c = 't';
2097 break;
2098 }
2099
2100 if (c > 0x20)
2101 {
2102 chr('\\');
2103 chr(c);
2104 }
2105 else
2106 {
2107 str("\\x", 2);
2108 hex(c, 2);
2109 }

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected