lib/kernel-args: Store kernel args as key/value entries

Define an `OstreeKernelArgsEntry` structure, which holds
both the key and the value. The kargs order array stores
entries for each key/value pair, instead of just the keys.
The hash table is used to locate entries, by storing
entries in a pointer array for each key. The same public
interface is preserved, while maintaining ordering
information of each key/value pair when
appending/replacing/deleting kargs.

Fixes: #1859
This commit is contained in:
Robert Fairley committed 2019-11-07 23:39:10 -05:00
1 parent 49513ccc1b
commit aadc4db012
4 files changed
+244 -92

No files matched your search

+29
View File
@@ -27,11 +27,40 @@
G_BEGIN_DECLS
typedef struct _OstreeKernelArgs OstreeKernelArgs;
typedef struct _OstreeKernelArgsEntry OstreeKernelArgsEntry;
GHashTable *_ostree_kernel_arg_get_kargs_table (OstreeKernelArgs *kargs);
GPtrArray *_ostree_kernel_arg_get_key_array (OstreeKernelArgs *kargs);
char *
_ostree_kernel_args_entry_get_key (const OstreeKernelArgsEntry *e);
char *
_ostree_kernel_args_entry_get_value (const OstreeKernelArgsEntry *e);
void
_ostree_kernel_args_entry_set_key (OstreeKernelArgsEntry *e,
char *key);
void
_ostree_kernel_args_entry_set_value (OstreeKernelArgsEntry *e,
char *value);
char *
_ostree_kernel_args_get_key_index (const OstreeKernelArgs *kargs,
int i);
char *
_ostree_kernel_args_get_value_index (const OstreeKernelArgs *kargs,
int i);
OstreeKernelArgsEntry *
_ostree_kernel_args_entry_new (void);
void
_ostree_kernel_args_entry_value_free (OstreeKernelArgsEntry *e);
_OSTREE_PUBLIC
void ostree_kernel_args_free (OstreeKernelArgs *kargs);