14 #define SI_BUILTIN_LIBSTR(name) (char*) #name ".so", 18 #undef SI_BUILTIN_LIBSTR 20 #define BYTES_TO_CHECK 7 24 const unsigned char mach_o[]={0xfe,0xed,0xfa,0xce,0};
25 const unsigned char mach_O[]={0xce,0xfa,0xed,0xfe,0};
27 const unsigned char mach_o64[]={0xfe,0xed,0xfa,0xcf,0};
28 const unsigned char mach_O64[]={0xcf,0xfa,0xed,0xfe,0};
30 const unsigned char mach_FAT[]={0xca,0xfe,0xba,0xbe,0};
31 const unsigned char mach_fat[]={0xbe,0xba,0xfe,0xca,0};
33 const unsigned char utf16be[]={0xfe,0xff,0};
34 const unsigned char utf16le[]={0xff,0xfe,0};
35 const unsigned char utf8ms[]={0xEF,0xBB,0xBF,0};
37 const unsigned char dll[]={
'M',
'Z',0};
43 if(libnamebuf!=
NULL) strcpy(libnamebuf,newlib);
58 ret = stat(libnamebuf, &sb);
59 }
while((ret < 0) and (errno == EINTR));
65 if((sb.st_mode & S_IFMT) != S_IFREG)
69 if ((nbytes = fread((
char *)buf,
sizeof(
char),
BYTES_TO_CHECK, fp)) == -1)
80 if( (strncmp(buf,
"\177ELF", 4)==0))
88 if( (strncmp(buf, (
const char *)mach_o, 4)==0) || (strncmp(buf, (
const char *)mach_O, 4)==0))
96 if( (strncmp(buf, (
const char *)mach_o64, 4)==0) || (strncmp(buf, (
const char *)mach_O64, 4)==0))
104 if( (strncmp(buf, (
const char *)mach_FAT, 4)==0) || (strncmp(buf, (
const char *)mach_fat, 4)==0))
112 if( (strncmp(buf,
"\02\020\01\016\05\022@", 7)==0))
119 if ((strncmp(buf,(
const char *)utf16be,2)==0)
120 ||(strncmp(buf,(
const char *)utf16le,2)==0))
122 WerrorS(
"UTF-16 not supported");
126 if (strncmp(buf,(
const char *)utf8ms,3)==0)
128 WarnS(
"UTF-8 detected - may not work");
132 if (strncmp(buf,(
const char *)dll,2)==0)
137 if(isprint(buf[0]) || buf[0]==
'\n')
const char *const si_builtin_libs[]
lib_types type_of_LIB(const char *newlib, char *libnamebuf)
#define SI_BUILTIN_LIBSTR(name)
void WerrorS(const char *s)
int status int void * buf
SI_FOREACH_BUILTIN(SI_GET_BUILTIN_MOD_INIT0) }
VAR char libnamebuf[1024]
FILE * feFopen(const char *path, const char *mode, char *where, short useWerror, short path_only)