1#include <stdio.h>23#include <scc/mach.h>45#include "libmach.h"67#include "elf/fun.h"8#include "coff32/fun.h"910static int (*ops[NFORMATS])(unsigned char *, char **) = {11 [COFF32] = coff32probe,12 [ELF] = elfprobe,13};1415int16objprobe(FILE *fp, char **name)17{18 int n, t;19 fpos_t pos;20 int (**bp)(unsigned char *, char **);21 unsigned char buf[NBYTES];2223 fgetpos(fp, &pos);24 n = fread(buf, NBYTES, 1, fp);25 fsetpos(fp, &pos);2627 if (n != 1 || ferror(fp))28 return -1;2930 for (bp = ops; bp < &ops[NFORMATS]; ++bp) {31 if ((t = (**bp)(buf, name)) >= 0)32 return t;33 }3435 return -1;36}