This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Data::Dumper (XS): use mortals to prevent leaks if magic throws
[perl5.git] / plan9 / plan9.c
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
13 int 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
30 int 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
36 int 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 */
44 struct netent *getnetbyname(const char *a)
45 {
46     croak("Function \"getnetbyname\" not implemented in this version of perl.");
47     return (struct netent *)NULL;
48 }
49
50 struct 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
56 struct netent *getnetent()
57 {
58     croak("Function \"getnetent\" not implemented in this version of perl.");
59     return (struct netent *)NULL;
60 }
61
62 struct protoent *getprotobyname(const char *a)
63 {
64     croak("Function \"getprotobyname\" not implemented in this version of perl.");
65     return (struct protoent *)NULL;
66 }
67
68 struct protoent *getprotobynumber(int a)
69 {
70     croak("Function \"getprotobynumber\" not implemented in this version of perl.");
71     return (struct protoent *)NULL;
72 }
73
74 struct protoent *getprotoent()
75 {
76     croak("Function \"getprotoent\" not implemented in this version of perl.");
77     return (struct protoent *)NULL;
78 }
79
80 struct 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
86 struct servent *getservent()
87 {
88     croak("Function \"getservent\" not implemented in this version of perl.");
89     return (struct servent *)NULL;
90 }
91
92 void sethostent(int a)
93 {
94     croak("Function \"sethostent\" not implemented in this version of perl.");
95 }
96
97 void setnetent(int a)
98 {
99     croak("Function \"setnetent\" not implemented in this version of perl.");
100 }
101
102 void setprotoent(int a)
103 {
104     croak("Function \"setprotoent\" not implemented in this version of perl.");
105 }
106
107 void setservent(int a)
108 {
109     croak("Function \"setservent\"  not implemented in this version of perl.");
110 }
111
112 void endnetent()
113 {
114     croak("Function \"endnetent\" not implemented in this version of perl.");
115 }
116
117 void endprotoent()
118 {
119     croak("Function \"endprotoent\" not implemented in this version of perl.");
120 }
121
122 void endservent()
123 {
124     croak("Function \"endservent\" not implemented in this version of perl.");
125 }