1#include "EXTERN.h" 2#include "perl.h" 3#include "./plan9/math.h" 4 5#define _PLAN9_SOURCE 6#include <u.h> 7 8/** Function fpclassify(double) is required by sv.c, which was refactored in perl-5.24 era and uses other libraries to classify floating points. **/ 9 10/* See /sys/src/lib/port/frexp.c */ 11#define SHIFT 20 12 13int fpclassify(double d) { 14 FPdbleword x; 15 16 /* order matters: only isNaN can operate on NaN */ 17 if ( isNaN(d) ) 18 return FP_NAN; 19 else if ( isInf(d, 0) ) 20 return FP_INFINITE; 21 else if ( d == 0 ) 22 return FP_ZERO; 23 24 x.x = fabs(d); 25 return (x.hi >> SHIFT) ? FP_NORMAL : FP_SUBNORMAL; 26} 27 28/* Functions mentioned in /sys/include/ape/sys/socket.h but not implemented */ 29 30int recvmsg(int a, struct msghdr *b, int c) 31{ 32 croak("Function \"recvmsg\" not implemented in this version of perl."); 33 return (int)NULL; 34} 35 36int sendmsg(int a, struct msghdr *b, int c) 37{ 38 croak("Function \"sendmsg\" not implemented in this version of perl."); 39 return (int)NULL; 40} 41 42 43/* Functions mentioned in /sys/include/ape/sys/netdb.h but not implemented */ 44struct netent *getnetbyname(const char *a) 45{ 46 croak("Function \"getnetbyname\" not implemented in this version of perl."); 47 return (struct netent *)NULL; 48} 49 50struct netent *getnetbyaddr(long a, int b) 51{ 52 croak("Function \"getnetbyaddr\" not implemented in this version of perl."); 53 return (struct netent *)NULL; 54} 55 56struct netent *getnetent() 57{ 58 croak("Function \"getnetent\" not implemented in this version of perl."); 59 return (struct netent *)NULL; 60} 61 62struct protoent *getprotobyname(const char *a) 63{ 64 croak("Function \"getprotobyname\" not implemented in this version of perl."); 65 return (struct protoent *)NULL; 66} 67 68struct protoent *getprotobynumber(int a) 69{ 70 croak("Function \"getprotobynumber\" not implemented in this version of perl."); 71 return (struct protoent *)NULL; 72} 73 74struct protoent *getprotoent() 75{ 76 croak("Function \"getprotoent\" not implemented in this version of perl."); 77 return (struct protoent *)NULL; 78} 79 80struct servent *getservbyport(int a, const char *b) 81{ 82 croak("Function \"getservbyport\" not implemented in this version of perl."); 83 return (struct servent *)NULL; 84} 85 86struct servent *getservent() 87{ 88 croak("Function \"getservent\" not implemented in this version of perl."); 89 return (struct servent *)NULL; 90} 91 92void sethostent(int a) 93{ 94 croak("Function \"sethostent\" not implemented in this version of perl."); 95} 96 97void setnetent(int a) 98{ 99 croak("Function \"setnetent\" not implemented in this version of perl."); 100} 101 102void setprotoent(int a) 103{ 104 croak("Function \"setprotoent\" not implemented in this version of perl."); 105} 106 107void setservent(int a) 108{ 109 croak("Function \"setservent\" not implemented in this version of perl."); 110} 111 112void endnetent() 113{ 114 croak("Function \"endnetent\" not implemented in this version of perl."); 115} 116 117void endprotoent() 118{ 119 croak("Function \"endprotoent\" not implemented in this version of perl."); 120} 121 122void endservent() 123{ 124 croak("Function \"endservent\" not implemented in this version of perl."); 125} 126