Files
xen/tools/libxl/libxlu_internal.h
T
Anthony PERARD a30910bfd7 libxlu: Handle += in config files
Handle += of both strings and lists.

If += is used for config options expected to be numbers, then a
warning is printed and the config option ignored (because xl ignores
config options with errors).

This is to be used for development purposes, where modifying config
option can be done on the `xl create' command line.

One could have a cmdline= in the cfg file, and specify cmdline+= on
the `xl create` command line without the need to write the whole
cmdline in `xl' command line but simply append to the one in the cfg file.
Or add an extra vif or disk by simply having "vif += [ '', ];" in the
`xl' cmdline.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
2019-09-20 12:20:02 +01:00

85 lines
1.8 KiB
C

/*
* Copyright (C) 2010 Citrix Ltd.
* Author Ian Jackson <ian.jackson@eu.citrix.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation; version 2.1 only. with the special
* exception on linking described in file LICENSE.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*/
#ifndef LIBXLU_INTERNAL_H
#define LIBXLU_INTERNAL_H
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <assert.h>
#include <regex.h>
#include "libxlutil.h"
struct XLU_ConfigList {
int avalues; /* available slots */
int nvalues; /* actual occupied slots */
XLU_ConfigValue **values;
};
typedef struct YYLTYPE
{
int first_line;
int first_column;
int last_line;
int last_column;
} YYLTYPE;
#define YYLTYPE_IS_DECLARED
struct XLU_ConfigValue {
enum XLU_ConfigValueType type;
union {
char *string;
XLU_ConfigList list;
} u;
YYLTYPE loc;
};
typedef struct XLU_ConfigSetting { /* transparent */
struct XLU_ConfigSetting *next;
char *name;
XLU_ConfigValue *value;
enum XLU_Operation op;
int lineno;
} XLU_ConfigSetting;
struct XLU_Config {
XLU_ConfigSetting *settings;
FILE *report;
char *config_source;
};
typedef struct {
XLU_Config *cfg;
int err, lexerrlineno, likely_python;
void *scanner;
} CfgParseContext;
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#endif /*LIBXLU_INTERNAL_H*/
/*
* Local variables:
* mode: C
* c-basic-offset: 4
* indent-tabs-mode: nil
* End:
*/