@@ -23,6 +23,12 @@ else version (TVOS)
23
23
else version (WatchOS)
24
24
version = Darwin;
25
25
26
+ // Those libs don't expose the mandated C interface
27
+ version (CRuntime_Glibc )
28
+ version = ReturnStrerrorR;
29
+ else version (CRuntime_UClibc )
30
+ version = ReturnStrerrorR;
31
+
26
32
extern (C ):
27
33
@system :
28
34
nothrow :
@@ -44,26 +50,30 @@ void* memmove(return void* s1, scope const void* s2, size_t n) pure;
44
50
// /
45
51
void * memset (return void * s, int c, size_t n) pure ;
46
52
47
- // /
48
- char * strcpy (return char * s1, scope const char * s2) pure ;
49
- // /
50
- char * strncpy (return char * s1, scope const char * s2, size_t n) pure ;
51
53
// /
52
54
char * strcat (return char * s1, scope const char * s2) pure ;
53
55
// /
54
- char * strncat (return char * s1, scope const char * s2, size_t n ) pure ;
56
+ inout ( char ) * strchr (return inout ( char ) * s, int c ) pure ;
55
57
// /
56
58
int strcmp (scope const char * s1, scope const char * s2) pure ;
57
59
// /
58
60
int strcoll (scope const char * s1, scope const char * s2);
59
61
// /
60
- int strncmp ( scope const char * s1, scope const char * s2, size_t n ) pure ;
62
+ char * strcpy ( return char * s1, scope const char * s2) pure ;
61
63
// /
62
- size_t strxfrm (scope char * s1, scope const char * s2, size_t n) ;
64
+ size_t strcspn (scope const char * s1, scope const char * s2) pure ;
63
65
// /
64
- inout ( char ) * strchr ( return inout ( char ) * s, int c) pure ;
66
+ char * strdup ( scope const char * s) ;
65
67
// /
66
- size_t strcspn (scope const char * s1, scope const char * s2) pure ;
68
+ char * strerror (int errnum);
69
+ // /
70
+ char * strncpy (return char * s1, scope const char * s2, size_t n) pure ;
71
+ // /
72
+ char * strncat (return char * s1, scope const char * s2, size_t n) pure ;
73
+ // /
74
+ int strncmp (scope const char * s1, scope const char * s2, size_t n) pure ;
75
+ // /
76
+ size_t strxfrm (scope char * s1, scope const char * s2, size_t n);
67
77
// /
68
78
inout (char )* strpbrk (return inout (char )* s1, scope const char * s2) pure ;
69
79
// /
@@ -74,53 +84,17 @@ size_t strspn(scope const char* s1, scope const char* s2) pure;
74
84
inout (char )* strstr (return inout (char )* s1, scope const char * s2) pure ;
75
85
// /
76
86
char * strtok (return char * s1, scope const char * s2);
77
- // /
78
- char * strerror (int errnum);
79
- version (CRuntime_Glibc )
87
+ // This `strerror_r` definition is not following the POSIX standard
88
+ version (ReturnStrerrorR)
80
89
{
81
90
// /
82
91
const (char )* strerror_r (int errnum, return char * buf, size_t buflen);
83
92
}
84
- else version (Darwin)
85
- {
86
- int strerror_r (int errnum, scope char * buf, size_t buflen);
87
- }
88
- else version (FreeBSD )
89
- {
90
- int strerror_r (int errnum, scope char * buf, size_t buflen);
91
- }
92
- else version (NetBSD )
93
- {
94
- int strerror_r (int errnum, char * buf, size_t buflen);
95
- }
96
- else version (OpenBSD )
97
- {
98
- int strerror_r (int errnum, scope char * buf, size_t buflen);
99
- }
100
- else version (DragonFlyBSD )
101
- {
102
- int strerror_r (int errnum, scope char * buf, size_t buflen);
103
- }
104
- else version (Solaris )
105
- {
106
- int strerror_r (int errnum, scope char * buf, size_t buflen);
107
- }
108
- else version (CRuntime_Bionic )
93
+ // This one is
94
+ else
109
95
{
110
96
// /
111
97
int strerror_r (int errnum, scope char * buf, size_t buflen);
112
98
}
113
- else version (CRuntime_Musl )
114
- {
115
- // /
116
- int strerror_r (int errnum, scope char * buf, size_t buflen);
117
- }
118
- else version (CRuntime_UClibc )
119
- {
120
- // /
121
- const (char )* strerror_r (int errnum, return char * buf, size_t buflen);
122
- }
123
99
// /
124
100
size_t strlen (scope const char * s) pure ;
125
- // /
126
- char * strdup (scope const char * s);
0 commit comments