diff options
Diffstat (limited to 'source/read.c')
-rw-r--r-- | source/read.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/source/read.c b/source/read.c new file mode 100644 index 0000000..0ed3808 --- /dev/null +++ b/source/read.c @@ -0,0 +1,42 @@ +/* + Copyright 2022-2023 Gabriel Bjørnager Jensen. + + This file is part of agbsum. + + agbsum is free software: you can redistribute it + and/or modify it under the terms of the GNU + Affero General Public License as published by + the Free Software Foundation, either version 3 + of the License, or (at your option) any later + version. + + agbsum 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 Affero General Public License for more + details. + + You should have received a copy of the GNU + Affero General Public License along with agbsum. + If not, see <https://www.gnu.org/licenses/>. +*/ + +#include <agbsum.h> + +#include <stdio.h> + +void +agb_read (void* const restrict buffer, FILE* restrict image) +{ + // We only need to read the part of the image + // that is used for the checksum. + fseek (image, agb_sumDataStart, SEEK_SET); + + size_t const count = agb_sumOffset + 0x1u; + + if (fread (buffer, 0x1u, count, image) != count) { + fputs ("Unable to read ROM\n", stderr); + agb_exit (agb_Cnd_Error, image); + } +} |