Upgraded GRUB2 to 2.00 release.
[AROS.git] / arch / all-pc / boot / grub2-aros / grub-core / loader / aout.c
blob69bf6e6adb9efdb7bc3af692f7cd024741ca6544
1 /*
2 * Copyright (C) 2008 Free Software Foundation, Inc.
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 #include <grub/file.h>
19 #include <grub/err.h>
20 #include <grub/dl.h>
21 #include <grub/misc.h>
22 #include <grub/aout.h>
24 GRUB_MOD_LICENSE ("GPLv3+");
26 int
27 grub_aout_get_type (union grub_aout_header *header)
29 int magic;
31 magic = AOUT_GETMAGIC (header->aout32);
32 if ((magic == AOUT32_OMAGIC) || (magic == AOUT32_NMAGIC) ||
33 (magic == AOUT32_ZMAGIC) || (magic == AOUT32_QMAGIC))
34 return AOUT_TYPE_AOUT32;
35 else if ((magic == AOUT64_OMAGIC) || (magic == AOUT64_NMAGIC) ||
36 (magic == AOUT64_ZMAGIC))
37 return AOUT_TYPE_AOUT64;
38 else
39 return AOUT_TYPE_NONE;
42 grub_err_t
43 grub_aout_load (grub_file_t file, int offset,
44 void *load_addr,
45 int load_size, grub_size_t bss_size)
47 if ((grub_file_seek (file, offset)) == (grub_off_t) - 1)
48 return grub_errno;
50 if (!load_size)
51 load_size = file->size - offset;
53 grub_file_read (file, load_addr, load_size);
55 if (grub_errno)
56 return grub_errno;
58 if (bss_size)
59 grub_memset ((char *) load_addr + load_size, 0, bss_size);
61 return GRUB_ERR_NONE;