/* Copyright (C) 2003 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 2002 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 2000 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1998 DJ Delorie, see COPYING.DJ for details */ /* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */ #ifndef __dj_include_sys_system_h__ #define __dj_include_sys_system_h__ #ifdef __cplusplus extern "C" { #endif #ifndef __dj_ENFORCE_ANSI_FREESTANDING #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \ || !defined(__STRICT_ANSI__) || defined(__cplusplus) #endif /* (__STDC_VERSION__ >= 199901L) || !__STRICT_ANSI__ */ #ifndef __STRICT_ANSI__ #ifndef _POSIX_SOURCE extern int _shell_command (const char *_prog, const char *_cmdline); extern int _is_unixy_shell (const char *_prog); extern int _is_dos_shell (const char *_prog); extern unsigned int _shell_cmdline_limit (const char *_prog); /* Checking for special executable formats */ typedef struct { char magic[16]; unsigned int struct_length; char go32[16]; unsigned char buffer[0]; } _v1_stubinfo; typedef struct { union { unsigned version:8; /* The version of DJGPP created that COFF exe */ struct { unsigned minor:4; /* The minor version of DJGPP */ unsigned major:4; /* The major version of DJGPP */ } v; } version; unsigned object_format:4; /* What an object format */ # define _V2_OBJECT_FORMAT_UNKNOWN 0x00 # define _V2_OBJECT_FORMAT_COFF 0x01 # define _V2_OBJECT_FORMAT_PE_COFF 0x02 unsigned exec_format:4; /* What an executable format */ # define _V2_EXEC_FORMAT_UNKNOWN 0x00 # define _V2_EXEC_FORMAT_COFF 0x01 # define _V2_EXEC_FORMAT_STUBCOFF 0x02 # define _V2_EXEC_FORMAT_EXE 0x03 # define _V2_EXEC_FORMAT_UNIXSCRIPT 0x04 unsigned valid:1; /* Only when nonzero all the information is valid */ unsigned has_stubinfo:1; /* When nonzero the stubinfo info is valid */ unsigned unused:14; _v1_stubinfo *stubinfo; } _v2_prog_type; /* When program == NULL you have to pass a valid file handle in fd, otherwise the file is opened and closed by the function */ const _v2_prog_type *_check_v2_prog(const char *program, int fd); #endif /* !_POSIX_SOURCE */ #endif /* !__STRICT_ANSI__ */ #endif /* !__dj_ENFORCE_ANSI_FREESTANDING */ #ifndef __dj_ENFORCE_FUNCTION_CALLS #endif /* !__dj_ENFORCE_FUNCTION_CALLS */ #ifdef __cplusplus } #endif #endif /* __dj_include_sys_system_h__ */