diff options
Diffstat (limited to 'qemu/roms/seabios/src/romfile.c')
-rw-r--r-- | qemu/roms/seabios/src/romfile.c | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/qemu/roms/seabios/src/romfile.c b/qemu/roms/seabios/src/romfile.c deleted file mode 100644 index 42261a624..000000000 --- a/qemu/roms/seabios/src/romfile.c +++ /dev/null @@ -1,100 +0,0 @@ -// Access to pseudo "file" interface for configuration information. -// -// Copyright (C) 2012 Kevin O'Connor <kevin@koconnor.net> -// -// This file may be distributed under the terms of the GNU LGPLv3 license. - -#include "config.h" // CONFIG_* -#include "malloc.h" // free -#include "output.h" // dprintf -#include "romfile.h" // struct romfile_s -#include "string.h" // memcmp - -static struct romfile_s *RomfileRoot VARVERIFY32INIT; - -void -romfile_add(struct romfile_s *file) -{ - dprintf(3, "Add romfile: %s (size=%d)\n", file->name, file->size); - file->next = RomfileRoot; - RomfileRoot = file; -} - -// Search for the specified file. -static struct romfile_s * -__romfile_findprefix(const char *prefix, int prefixlen, struct romfile_s *prev) -{ - struct romfile_s *cur = RomfileRoot; - if (prev) - cur = prev->next; - while (cur) { - if (memcmp(prefix, cur->name, prefixlen) == 0) - return cur; - cur = cur->next; - } - return NULL; -} - -struct romfile_s * -romfile_findprefix(const char *prefix, struct romfile_s *prev) -{ - return __romfile_findprefix(prefix, strlen(prefix), prev); -} - -struct romfile_s * -romfile_find(const char *name) -{ - return __romfile_findprefix(name, strlen(name) + 1, NULL); -} - -// Helper function to find, malloc_tmphigh, and copy a romfile. This -// function adds a trailing zero to the malloc'd copy. -void * -romfile_loadfile(const char *name, int *psize) -{ - struct romfile_s *file = romfile_find(name); - if (!file) - return NULL; - - int filesize = file->size; - if (!filesize) - return NULL; - - char *data = malloc_tmphigh(filesize+1); - if (!data) { - warn_noalloc(); - return NULL; - } - - dprintf(5, "Copying romfile '%s' (len %d)\n", name, filesize); - int ret = file->copy(file, data, filesize); - if (ret < 0) { - free(data); - return NULL; - } - if (psize) - *psize = filesize; - data[filesize] = '\0'; - return data; -} - -// Attempt to load an integer from the given file - return 'defval' -// if unsuccessful. -u64 -romfile_loadint(const char *name, u64 defval) -{ - struct romfile_s *file = romfile_find(name); - if (!file) - return defval; - - int filesize = file->size; - if (!filesize || filesize > sizeof(u64) || (filesize & (filesize-1))) - // Doesn't look like a valid integer. - return defval; - - u64 val = 0; - int ret = file->copy(file, &val, sizeof(val)); - if (ret < 0) - return defval; - return val; -} |