static json_t* escapeFieldValue (const tagEntryInfo * tag, fieldType ftype, bool returnEmptyStringAsNoValue) { const char *str = renderFieldEscaped (jsonWriter.type, ftype, tag, NO_PARSER_FIELD, NULL); if (str) return json_string (str); else if (returnEmptyStringAsNoValue) return json_string (""); else return NULL; }
static json_t* escapeFieldValue (const tagEntryInfo * tag, fieldType ftype, bool returnEmptyStringAsNoValue) { const char *str = renderFieldEscaped (jsonWriter.type, ftype, tag, NO_PARSER_FIELD, NULL); if (str) { unsigned int dt = getFieldDataType(ftype); if (dt & FIELDTYPE_STRING) { if (dt & FIELDTYPE_BOOL && str[0] == '\0') return json_false(); else return json_string (str); } else if (dt & FIELDTYPE_INTEGER) { long tmp; if (strToLong (str, 10, &tmp)) return json_integer (tmp); else return NULL; } else if (dt & FIELDTYPE_BOOL) { /* TODO: This must be fixed when new boolean field is added. Currently only `file:' field use this. */ return json_boolean (strcmp ("-", str)); /* "-" -> false */ } AssertNotReached (); return NULL; } else if (returnEmptyStringAsNoValue) return json_false(); else return NULL; }