File: setting.h

package info (click to toggle)
s390-tools 2.35.0-2
  • links: PTS
  • area: main
  • in suites: forky
  • size: 12,248 kB
  • sloc: ansic: 184,236; sh: 12,152; cpp: 4,954; makefile: 2,763; perl: 2,519; asm: 1,085; python: 697; xml: 29
file content (101 lines) | stat: -rw-r--r-- 3,499 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
 * zdev - Modify and display the persistent configuration of devices
 *
 * Copyright IBM Corp. 2016, 2017
 *
 * s390-tools is free software; you can redistribute it and/or modify
 * it under the terms of the MIT license. See LICENSE for details.
 */

#ifndef SETTING_H
#define SETTING_H

#include "lib/util_list.h"

#include "exit_code.h"
#include "misc.h"

struct attrib;

/**
 * struct setting - An attribute setting
 * @node: List node for adding to list
 * @attrib: Attribute definition - optional for unknown attribute settings
 * @name: Attribute name
 * @value: Attribute value
 * @values: List of values for multi-value attributes
 * @actual_value: Current attribute value
 * @actual_values: List of current values for multi-value attributes
 * @modified: Setting was modified or is new
 * @specified: User specified a value for this setting
 * @derived: The actual value was not read from the configuration
 * @removed: Setting was removed
 * @readonly: Setting cannot be written to
 */
struct setting {
	struct util_list_node node;
	struct attrib *attrib;
	char *name;
	char *value;
	struct util_list *values;
	char *actual_value;
	struct util_list *actual_values;
	unsigned int modified:1;
	unsigned int specified:1;
	unsigned int removed:1;
	unsigned int derived:1;
	unsigned int readonly:1;
};

/**
 * struct setting_list - A list of attribute settings
 * @list: List for maintaining settings
 * @modified: Indication of whether this list was modified
 */
struct setting_list {
	struct util_list list;
	unsigned int modified:1;
};

struct setting *setting_new(struct attrib *, const char *, const char *);
struct setting *setting_copy(const struct setting *);
bool setting_is_set(struct setting *);
exit_code_t setting_write(const char *, struct setting *s);
void setting_print(struct setting *, int);

struct setting_list *setting_list_new(void);
void setting_list_free(struct setting_list *);
void setting_list_clear(struct setting_list *);
void setting_list_add(struct setting_list *, struct setting *);
struct setting *setting_list_find(struct setting_list *, const char *);
void setting_list_get_bool_state(struct setting_list *, const char *, int *,
				 int *);
struct setting *setting_list_apply(struct setting_list *, struct attrib *,
				   const char *, const char *);
struct setting *setting_list_apply_specified(struct setting_list *,
					     struct attrib *, const char *,
					     const char *);

struct setting *setting_list_apply_actual(struct setting_list *,
					  struct attrib *, const char *,
					  const char *);

bool setting_list_modified(struct setting_list *);
char *setting_list_flatten(struct setting_list *);
void setting_list_print(struct setting_list *, int);
struct util_list *setting_list_get_sorted(struct setting_list *);
bool setting_list_check_conflict(struct setting_list *, config_t, err_t);

void setting_list_apply_defaults(struct setting_list *, struct attrib **, bool);
void setting_list_merge(struct setting_list *, struct setting_list *, bool,
			bool);
struct setting_list *setting_list_copy(struct setting_list *);
void setting_list_map_values(struct setting_list *);
void setting_list_mark_default_derived(struct setting_list *);
int setting_list_count_set(struct setting_list *);
void setting_list_remove_derived(struct setting_list *);
char *setting_get_changes(struct setting_list *act, struct setting_list *pers,
			  struct setting_list *ac);
bool setting_match_value(struct setting *, const char *);

#endif /* SETTING_H */