/** * virConfReadFile: * @filename: the path to the configuration file. * @flags: combination of virConfFlag(s) * * Reads a configuration file. * * Returns a handle to lookup settings or NULL if it failed to * read or parse the file, use virConfFree() to free the data. */ virConfPtr virConfReadFile(const char *filename, unsigned int flags) { char *content; int len; virConfPtr conf = NULL; VIR_DEBUG("filename=%s", NULLSTR(filename)); if (filename == NULL) { virConfError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); return NULL; } if ((len = virFileReadAll(filename, MAX_CONFIG_FILE_SIZE, &content)) < 0) return NULL; if (len && len < MAX_CONFIG_FILE_SIZE && content[len - 1] != '\n') { VIR_DEBUG("appending newline to busted config file %s", filename); if (VIR_REALLOC_N(content, len + 1) < 0) goto cleanup; content[len++] = '\n'; content[len] = '\0'; } conf = virConfParse(filename, content, len, flags); cleanup: VIR_FREE(content); return conf; }
/** * virConfReadMem: * @memory: pointer to the content of the configuration file * @len: length in byte * @flags: combination of virConfFlag(s) * * Reads a configuration file loaded in memory. The string can be * zero terminated in which case @len can be 0 * * Returns a handle to lookup settings or NULL if it failed to * parse the content, use virConfFree() to free the data. */ virConfPtr virConfReadMem(const char *memory, int len, unsigned int flags) { if ((memory == NULL) || (len < 0)) { virConfError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); return NULL; } if (len == 0) len = strlen(memory); return virConfParse("memory conf", memory, len, flags); }
/** * virConfReadFile: * @filename: the path to the configuration file. * @flags: combination of virConfFlag(s) * * Reads a configuration file. * * Returns a handle to lookup settings or NULL if it failed to * read or parse the file, use virConfFree() to free the data. */ virConfPtr virConfReadFile(const char *filename, unsigned int flags) { char *content; int len; virConfPtr conf; if (filename == NULL) { virConfError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__); return NULL; } if ((len = virFileReadAll(filename, MAX_CONFIG_FILE_SIZE, &content)) < 0) { return NULL; } conf = virConfParse(filename, content, len, flags); VIR_FREE(content); return conf; }