/* Copyright (C) 1995 Charles Sandmann (sandmann@clio.rice.edu) This software may be freely distributed with above copyright, no warranty. Based on code by DJ Delorie, it's really his, enhanced, bugs fixed. */ #include #include #include #include #include void *_dxe_load(char *name) { dxe_header dh; char *data; int h; h = _open(name, 0); if (h < 0) return 0; _read(h, &dh, sizeof(dh)); if (dh.magic != DXE_MAGIC) { _close(h); errno = ENOEXEC; return 0; } data = (char *)malloc(dh.element_size); if (data == 0) { _close(h); errno = ENOMEM; return 0; } _read(h, data, dh.element_size); { long relocs[dh.nrelocs]; int i; _read(h, relocs, sizeof(long)*dh.nrelocs); _close(h); for (i=0; i