/** * virConfSaveValue: * @buf: output buffer * @val: a value * * Serialize the value to the buffer * * Returns 0 in case of success, -1 in case of error. */ static int virConfSaveValue(virBufferPtr buf, virConfValuePtr val) { if (val == NULL) return -1; switch (val->type) { case VIR_CONF_NONE: return -1; case VIR_CONF_LLONG: virBufferAsprintf(buf, "%lld", val->l); break; case VIR_CONF_ULLONG: virBufferAsprintf(buf, "%llu", val->l); break; case VIR_CONF_STRING: if (strchr(val->str, '\n') != NULL) { virBufferAsprintf(buf, "\"\"\"%s\"\"\"", val->str); } else if (strchr(val->str, '"') == NULL) { virBufferAsprintf(buf, "\"%s\"", val->str); } else if (strchr(val->str, '\'') == NULL) { virBufferAsprintf(buf, "'%s'", val->str); } else { virBufferAsprintf(buf, "\"\"\"%s\"\"\"", val->str); } break; case VIR_CONF_LIST: { virConfValuePtr cur; cur = val->list; virBufferAddLit(buf, "[ "); if (cur != NULL) { virConfSaveValue(buf, cur); cur = cur->next; while (cur != NULL) { virBufferAddLit(buf, ", "); virConfSaveValue(buf, cur); cur = cur->next; } } virBufferAddLit(buf, " ]"); break; } default: return -1; } return 0; }
/** * virConfSaveEntry: * @buf: output buffer * @cur: a conf entry * * Serialize the entry to the buffer * * Returns 0 in case of success, -1 in case of error. */ static int virConfSaveEntry(virBufferPtr buf, virConfEntryPtr cur) { if (cur->name != NULL) { virBufferAdd(buf, cur->name, -1); virBufferAddLit(buf, " = "); virConfSaveValue(buf, cur->value); if (cur->comment != NULL) { virBufferAddLit(buf, " #"); virBufferAdd(buf, cur->comment, -1); } } else if (cur->comment != NULL) { virBufferAddLit(buf, "#"); virBufferAdd(buf, cur->comment, -1); } virBufferAddLit(buf, "\n"); return 0; }