diff options
author | Nico Huber <nico.h@gmx.de> | 2021-05-14 01:07:28 +0200 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2021-06-26 15:59:34 +0000 |
commit | d855351ce708531b8bc060611a30d37294a941ac (patch) | |
tree | 821d56b897fc459e7897516a9c0f4c5892e632fc /layout.c | |
parent | 7f480531721bca467541f9471ab39937fa9c2ad5 (diff) | |
download | flashrom-d855351ce708531b8bc060611a30d37294a941ac.tar.gz flashrom-d855351ce708531b8bc060611a30d37294a941ac.tar.bz2 flashrom-d855351ce708531b8bc060611a30d37294a941ac.zip |
layout: Kill the global layout
Change-Id: Ic302e9c5faf1368e5ca244ce461e55e14f916ab8
Signed-off-by: Nico Huber <nico.h@gmx.de>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/54286
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Diffstat (limited to 'layout.c')
-rw-r--r-- | layout.c | 26 |
1 files changed, 6 insertions, 20 deletions
@@ -35,15 +35,6 @@ struct layout_include_args { struct layout_include_args *next; }; -static struct flashrom_layout *global_layout; - -struct flashrom_layout *get_global_layout(void) -{ - if (!global_layout) - flashrom_layout_new(&global_layout); - return global_layout; -} - const struct flashrom_layout *get_default_layout(const struct flashrom_flashctx *const flashctx) { return flashctx->default_layout; @@ -75,13 +66,15 @@ static struct romentry *_layout_entry_by_name( } #ifndef __LIBPAYLOAD__ -int read_romlayout(const char *name) +int layout_from_file(struct flashrom_layout **layout, const char *name) { - struct flashrom_layout *const layout = get_global_layout(); FILE *romlayout; char tempstr[256], tempname[256]; int ret = 1; + if (flashrom_layout_new(layout)) + return 1; + romlayout = fopen(name, "r"); if (!romlayout) { @@ -107,7 +100,7 @@ int read_romlayout(const char *name) msg_gerr("Error parsing layout file. Offending string: \"%s\"\n", tempstr); goto _close_ret; } - if (flashrom_layout_add_region(layout, + if (flashrom_layout_add_region(*layout, strtol(tstr1, NULL, 16), strtol(tstr2, NULL, 16), tempname)) goto _close_ret; } @@ -219,7 +212,7 @@ int process_include_args(struct flashrom_layout *l, const struct layout_include_ return 0; /* User has specified an include argument, but no layout is loaded. */ - if (!l->head) { + if (!l || !l->head) { msg_gerr("Region requested (with -i \"%s\"), " "but no layout data is available.\n", args->name); @@ -283,7 +276,6 @@ int included_regions_overlap(const struct flashrom_layout *const l) void layout_cleanup(struct layout_include_args **args) { - struct flashrom_layout *const layout = get_global_layout(); struct layout_include_args *tmp; while (*args) { @@ -293,9 +285,6 @@ void layout_cleanup(struct layout_include_args **args) free(*args); *args = tmp; } - - global_layout = NULL; - flashrom_layout_release(layout); } int layout_sanity_checks(const struct flashrom_flashctx *const flash) @@ -462,9 +451,6 @@ int flashrom_layout_include_region(struct flashrom_layout *const layout, const c */ void flashrom_layout_release(struct flashrom_layout *const layout) { - if (layout == global_layout) - return; - if (!layout) return; |