00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef RUBY_MISSING_H
00012 #define RUBY_MISSING_H 1
00013
00014 #if defined(__cplusplus)
00015 extern "C" {
00016 #if 0
00017 }
00018 #endif
00019 #endif
00020
00021 #include "ruby/config.h"
00022 #include <stddef.h>
00023 #ifdef RUBY_EXTCONF_H
00024 #include RUBY_EXTCONF_H
00025 #endif
00026
00027 #if !defined(HAVE_STRUCT_TIMEVAL) || !defined(HAVE_STRUCT_TIMESPEC)
00028 #if defined(HAVE_TIME_H)
00029 # include <time.h>
00030 #endif
00031 #if defined(HAVE_SYS_TIME_H)
00032 # include <sys/time.h>
00033 #endif
00034 #endif
00035
00036 #if !defined(HAVE_STRUCT_TIMEVAL)
00037 struct timeval {
00038 time_t tv_sec;
00039 long tv_usec;
00040 };
00041 #endif
00042
00043 #if !defined(HAVE_STRUCT_TIMESPEC)
00044 struct timespec {
00045 time_t tv_sec;
00046 long tv_nsec;
00047 };
00048 #endif
00049
00050 #if !defined(HAVE_STRUCT_TIMEZONE)
00051 struct timezone {
00052 int tz_minuteswest;
00053 int tz_dsttime;
00054 };
00055 #endif
00056
00057 #ifdef RUBY_EXPORT
00058 #undef RUBY_EXTERN
00059 #endif
00060 #ifndef RUBY_EXTERN
00061 #define RUBY_EXTERN extern
00062 #endif
00063
00064 #if defined __GNUC__ && __GNUC__ >= 4
00065 #pragma GCC visibility push(default)
00066 #endif
00067
00068 #ifndef HAVE_ACOSH
00069 RUBY_EXTERN double acosh(double);
00070 RUBY_EXTERN double asinh(double);
00071 RUBY_EXTERN double atanh(double);
00072 #endif
00073
00074 #ifndef HAVE_CRYPT
00075 RUBY_EXTERN char *crypt(const char *, const char *);
00076 #endif
00077
00078 #ifndef HAVE_DUP2
00079 RUBY_EXTERN int dup2(int, int);
00080 #endif
00081
00082 #ifndef HAVE_EACCESS
00083 RUBY_EXTERN int eaccess(const char*, int);
00084 #endif
00085
00086 #ifndef HAVE_ROUND
00087 RUBY_EXTERN double round(double);
00088 #endif
00089
00090 #ifndef HAVE_FINITE
00091 RUBY_EXTERN int finite(double);
00092 #endif
00093
00094 #ifndef HAVE_FLOCK
00095 RUBY_EXTERN int flock(int, int);
00096 #endif
00097
00098
00099
00100
00101
00102
00103
00104 #ifndef HAVE_HYPOT
00105 RUBY_EXTERN double hypot(double, double);
00106 #endif
00107
00108 #ifndef HAVE_ERF
00109 RUBY_EXTERN double erf(double);
00110 RUBY_EXTERN double erfc(double);
00111 #endif
00112
00113 #ifndef HAVE_TGAMMA
00114 RUBY_EXTERN double tgamma(double);
00115 #endif
00116
00117 #ifndef HAVE_LGAMMA_R
00118 RUBY_EXTERN double lgamma_r(double, int *);
00119 #endif
00120
00121 #ifndef HAVE_CBRT
00122 RUBY_EXTERN double cbrt(double);
00123 #endif
00124
00125 #ifdef INFINITY
00126 # define HAVE_INFINITY
00127 #else
00128
00129 RUBY_EXTERN const unsigned char rb_infinity[];
00130 # define INFINITY (*(float *)rb_infinity)
00131 #endif
00132
00133 #ifdef NAN
00134 # define HAVE_NAN
00135 #else
00136
00137 RUBY_EXTERN const unsigned char rb_nan[];
00138 # define NAN (*(float *)rb_nan)
00139 #endif
00140
00141 #ifndef isinf
00142 # ifndef HAVE_ISINF
00143 # if defined(HAVE_FINITE) && defined(HAVE_ISNAN)
00144 # ifdef HAVE_IEEEFP_H
00145 # include <ieeefp.h>
00146 # endif
00147 # define isinf(x) (!finite(x) && !isnan(x))
00148 # else
00149 RUBY_EXTERN int isinf(double);
00150 # endif
00151 # endif
00152 #endif
00153
00154 #ifndef isnan
00155 # ifndef HAVE_ISNAN
00156 RUBY_EXTERN int isnan(double);
00157 # endif
00158 #endif
00159
00160
00161
00162
00163
00164
00165
00166 #ifndef HAVE_MEMMOVE
00167 RUBY_EXTERN void *memmove(void *, const void *, size_t);
00168 #endif
00169
00170
00171
00172
00173
00174
00175
00176 #ifndef HAVE_STRCHR
00177 RUBY_EXTERN char *strchr(const char *, int);
00178 RUBY_EXTERN char *strrchr(const char *, int);
00179 #endif
00180
00181 #ifndef HAVE_STRERROR
00182 RUBY_EXTERN char *strerror(int);
00183 #endif
00184
00185 #ifndef HAVE_STRSTR
00186 RUBY_EXTERN char *strstr(const char *, const char *);
00187 #endif
00188
00189
00190
00191
00192
00193
00194
00195 #ifndef HAVE_STRLCPY
00196 RUBY_EXTERN size_t strlcpy(char *, const char*, size_t);
00197 #endif
00198
00199 #ifndef HAVE_STRLCAT
00200 RUBY_EXTERN size_t strlcat(char *, const char*, size_t);
00201 #endif
00202
00203 #ifndef HAVE_SIGNBIT
00204 RUBY_EXTERN int signbit(double x);
00205 #endif
00206
00207 #ifndef HAVE_FFS
00208 RUBY_EXTERN int ffs(int);
00209 #endif
00210
00211 #ifdef BROKEN_CLOSE
00212 #include <sys/types.h>
00213 #include <sys/socket.h>
00214 RUBY_EXTERN int ruby_getpeername(int, struct sockaddr *, socklen_t *);
00215 RUBY_EXTERN int ruby_getsockname(int, struct sockaddr *, socklen_t *);
00216 RUBY_EXTERN int ruby_shutdown(int, int);
00217 RUBY_EXTERN int ruby_close(int);
00218 #endif
00219
00220 #ifndef HAVE_SETPROCTITLE
00221 RUBY_EXTERN void setproctitle(const char *fmt, ...);
00222 #endif
00223
00224 #if defined __GNUC__ && __GNUC__ >= 4
00225 #pragma GCC visibility pop
00226 #endif
00227
00228 #if defined(__cplusplus)
00229 #if 0
00230 {
00231 #endif
00232 }
00233 #endif
00234
00235 #endif
00236