1 /* sysdep.h -- handle host dependencies for the BFD library 2 Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001 3 Free Software Foundation, Inc. 4 Written by Cygnus Support. 5 6 This file is part of BFD, the Binary File Descriptor library. 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 21 22 #ifndef BFD_SYSDEP_H 23 #define BFD_SYSDEP_H 24 25 #include "ansidecl.h" 26 27 #include "config.h" 28 29 #ifdef HAVE_STDDEF_H 30 #include <stddef.h> 31 #endif 32 33 #include <stdio.h> 34 #include <sys/types.h> 35 #include <sys/stat.h> 36 37 #include <errno.h> 38 #if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO)) 39 extern int errno; 40 #endif 41 42 #ifdef STRING_WITH_STRINGS 43 #include <string.h> 44 #include <strings.h> 45 #else 46 #ifdef HAVE_STRING_H 47 #include <string.h> 48 #else 49 #ifdef HAVE_STRINGS_H 50 #include <strings.h> 51 #else 52 extern char *strchr (); 53 extern char *strrchr (); 54 #endif 55 #endif 56 #endif 57 58 #ifdef HAVE_STDLIB_H 59 #include <stdlib.h> 60 #endif 61 62 #ifdef TIME_WITH_SYS_TIME 63 #include <sys/time.h> 64 #include <time.h> 65 #else 66 #ifdef HAVE_SYS_TIME_H 67 #include <sys/time.h> 68 #else 69 #include <time.h> 70 #endif 71 #endif 72 73 #ifdef HAVE_UNISTD_H 74 #include <unistd.h> 75 #endif 76 77 #ifdef USE_BINARY_FOPEN 78 #include "fopen-bin.h" 79 #else 80 #include "fopen-same.h" 81 #endif 82 83 #ifdef HAVE_FCNTL_H 84 #include <fcntl.h> 85 #else 86 #ifdef HAVE_SYS_FILE_H 87 #include <sys/file.h> 88 #endif 89 #endif 90 91 #ifndef O_RDONLY 92 #define O_RDONLY 0 93 #endif 94 #ifndef O_WRONLY 95 #define O_WRONLY 1 96 #endif 97 #ifndef O_RDWR 98 #define O_RDWR 2 99 #endif 100 #ifndef O_ACCMODE 101 #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) 102 #endif 103 104 #ifndef SEEK_SET 105 #define SEEK_SET 0 106 #endif 107 #ifndef SEEK_CUR 108 #define SEEK_CUR 1 109 #endif 110 111 #include "filenames.h" 112 113 #if !HAVE_DECL_FFS 114 extern int ffs (int); 115 #endif 116 117 #if !HAVE_DECL_FREE 118 extern void free (); 119 #endif 120 121 #if !HAVE_DECL_GETENV 122 extern char *getenv (); 123 #endif 124 125 #if !HAVE_DECL_MALLOC 126 extern PTR malloc (); 127 #endif 128 129 #if !HAVE_DECL_REALLOC 130 extern PTR realloc (); 131 #endif 132 133 #if !HAVE_DECL_STPCPY 134 extern char *stpcpy (char *__dest, const char *__src); 135 #endif 136 137 #if !HAVE_DECL_STRSTR 138 extern char *strstr (); 139 #endif 140 141 #ifdef HAVE_FTELLO 142 #if !HAVE_DECL_FTELLO 143 extern off_t ftello (FILE *stream); 144 #endif 145 #endif 146 147 #ifdef HAVE_FTELLO64 148 #if !HAVE_DECL_FTELLO64 149 extern off64_t ftello64 (FILE *stream); 150 #endif 151 #endif 152 153 #ifdef HAVE_FSEEKO 154 #if !HAVE_DECL_FSEEKO 155 extern int fseeko (FILE *stream, off_t offset, int whence); 156 #endif 157 #endif 158 159 #ifdef HAVE_FSEEKO64 160 #if !HAVE_DECL_FSEEKO64 161 extern int fseeko64 (FILE *stream, off64_t offset, int whence); 162 #endif 163 #endif 164 165 /* Define offsetof for those systems which lack it */ 166 167 #ifndef offsetof 168 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) 169 #endif 170 171 #ifdef ENABLE_NLS 172 #include <libintl.h> 173 /* Note the use of dgetext() and PACKAGE here, rather than gettext(). 174 175 This is because the code in this directory is used to build a library which 176 will be linked with code in other directories to form programs. We want to 177 maintain a seperate translation file for this directory however, rather 178 than being forced to merge it with that of any program linked to libbfd. 179 This is a library, so it cannot depend on the catalog currently loaded. 180 181 In order to do this, we have to make sure that when we extract messages we 182 use the OPCODES domain rather than the domain of the program that included 183 the bfd library, (eg OBJDUMP). Hence we use dgettext (PACKAGE, String) 184 and define PACKAGE to be 'bfd'. (See the code in configure). */ 185 #define _(String) dgettext (PACKAGE, String) 186 #ifdef gettext_noop 187 #define N_(String) gettext_noop (String) 188 #else 189 #define N_(String) (String) 190 #endif 191 #else 192 # define gettext(Msgid) (Msgid) 193 # define dgettext(Domainname, Msgid) (Msgid) 194 # define dcgettext(Domainname, Msgid, Category) (Msgid) 195 # define textdomain(Domainname) while (0) /* nothing */ 196 # define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ 197 # define _(String) (String) 198 # define N_(String) (String) 199 #endif 200 201 #endif /* ! defined (BFD_SYSDEP_H) */ 202