Skip to content

Commit 7125d2e

Browse files
author
Jethro Beekman
committed
Move function definitions to platform-specific modules
1 parent eb6ff66 commit 7125d2e

File tree

7 files changed

+510
-136
lines changed

7 files changed

+510
-136
lines changed

src/cloudabi/mod.rs

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ pub type sa_family_t = u8;
66
pub type socklen_t = usize;
77
pub type time_t = i64;
88

9+
pub enum FILE {}
10+
pub enum fpos_t {} // TODO: fill this out with a struct
11+
912
s! {
1013
pub struct addrinfo {
1114
pub ai_flags: ::c_int,
@@ -89,7 +92,97 @@ pub const PTHREAD_STACK_MIN: ::size_t = 1024;
8992
pub const SOCK_DGRAM: ::c_int = 128;
9093
pub const SOCK_STREAM: ::c_int = 130;
9194

92-
extern {
95+
extern "C" {
96+
pub fn isalnum(c: c_int) -> c_int;
97+
pub fn isalpha(c: c_int) -> c_int;
98+
pub fn iscntrl(c: c_int) -> c_int;
99+
pub fn isdigit(c: c_int) -> c_int;
100+
pub fn isgraph(c: c_int) -> c_int;
101+
pub fn islower(c: c_int) -> c_int;
102+
pub fn isprint(c: c_int) -> c_int;
103+
pub fn ispunct(c: c_int) -> c_int;
104+
pub fn isspace(c: c_int) -> c_int;
105+
pub fn isupper(c: c_int) -> c_int;
106+
pub fn isxdigit(c: c_int) -> c_int;
107+
pub fn tolower(c: c_int) -> c_int;
108+
pub fn toupper(c: c_int) -> c_int;
109+
110+
pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
111+
pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;
112+
pub fn fflush(file: *mut FILE) -> c_int;
113+
pub fn fclose(file: *mut FILE) -> c_int;
114+
pub fn remove(filename: *const c_char) -> c_int;
115+
pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
116+
pub fn tmpfile() -> *mut FILE;
117+
pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;
118+
pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
119+
pub fn getchar() -> c_int;
120+
pub fn putchar(c: c_int) -> c_int;
121+
pub fn fgetc(stream: *mut FILE) -> c_int;
122+
pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
123+
pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
124+
pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
125+
pub fn puts(s: *const c_char) -> c_int;
126+
pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
127+
pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
128+
pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
129+
pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
130+
pub fn ftell(stream: *mut FILE) -> c_long;
131+
pub fn rewind(stream: *mut FILE);
132+
pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
133+
pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
134+
pub fn feof(stream: *mut FILE) -> c_int;
135+
pub fn ferror(stream: *mut FILE) -> c_int;
136+
pub fn perror(s: *const c_char);
137+
pub fn atoi(s: *const c_char) -> c_int;
138+
pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
139+
pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;
140+
pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;
141+
pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
142+
pub fn malloc(size: size_t) -> *mut c_void;
143+
pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
144+
pub fn free(p: *mut c_void);
145+
pub fn abort() -> !;
146+
pub fn exit(status: c_int) -> !;
147+
pub fn _exit(status: c_int) -> !;
148+
pub fn atexit(cb: extern "C" fn()) -> c_int;
149+
pub fn system(s: *const c_char) -> c_int;
150+
pub fn getenv(s: *const c_char) -> *mut c_char;
151+
152+
pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
153+
pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
154+
pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
155+
pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
156+
pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
157+
pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
158+
pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
159+
pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
160+
pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
161+
pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
162+
pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
163+
pub fn strdup(cs: *const c_char) -> *mut c_char;
164+
pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
165+
pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
166+
pub fn strlen(cs: *const c_char) -> size_t;
167+
pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
168+
pub fn strerror(n: c_int) -> *mut c_char;
169+
pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
170+
pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
171+
pub fn wcslen(buf: *const wchar_t) -> size_t;
172+
pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
173+
174+
pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
175+
pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
176+
pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
177+
pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
178+
pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
179+
180+
pub fn abs(i: c_int) -> c_int;
181+
pub fn atof(s: *const c_char) -> c_double;
182+
pub fn labs(i: c_long) -> c_long;
183+
pub fn rand() -> c_int;
184+
pub fn srand(seed: c_uint);
185+
93186
pub fn arc4random_buf(buf: *const ::c_void, len: ::size_t);
94187
pub fn freeaddrinfo(res: *mut addrinfo);
95188
pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;

src/fuchsia/mod.rs

Lines changed: 94 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ pub enum DIR {}
7777
pub enum locale_t {}
7878
pub enum fpos64_t {} // TODO: fill this out with a struct
7979

80+
pub enum FILE {}
81+
pub enum fpos_t {} // TODO: fill this out with a struct
82+
8083
// PUB_STRUCT
8184

8285
s! {
@@ -3011,7 +3014,97 @@ f! {
30113014
#[link(name = "fdio")]
30123015
extern {}
30133016

3014-
extern {
3017+
extern "C" {
3018+
pub fn isalnum(c: c_int) -> c_int;
3019+
pub fn isalpha(c: c_int) -> c_int;
3020+
pub fn iscntrl(c: c_int) -> c_int;
3021+
pub fn isdigit(c: c_int) -> c_int;
3022+
pub fn isgraph(c: c_int) -> c_int;
3023+
pub fn islower(c: c_int) -> c_int;
3024+
pub fn isprint(c: c_int) -> c_int;
3025+
pub fn ispunct(c: c_int) -> c_int;
3026+
pub fn isspace(c: c_int) -> c_int;
3027+
pub fn isupper(c: c_int) -> c_int;
3028+
pub fn isxdigit(c: c_int) -> c_int;
3029+
pub fn tolower(c: c_int) -> c_int;
3030+
pub fn toupper(c: c_int) -> c_int;
3031+
3032+
pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
3033+
pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;
3034+
pub fn fflush(file: *mut FILE) -> c_int;
3035+
pub fn fclose(file: *mut FILE) -> c_int;
3036+
pub fn remove(filename: *const c_char) -> c_int;
3037+
pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
3038+
pub fn tmpfile() -> *mut FILE;
3039+
pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;
3040+
pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
3041+
pub fn getchar() -> c_int;
3042+
pub fn putchar(c: c_int) -> c_int;
3043+
pub fn fgetc(stream: *mut FILE) -> c_int;
3044+
pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
3045+
pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
3046+
pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
3047+
pub fn puts(s: *const c_char) -> c_int;
3048+
pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
3049+
pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
3050+
pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
3051+
pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
3052+
pub fn ftell(stream: *mut FILE) -> c_long;
3053+
pub fn rewind(stream: *mut FILE);
3054+
pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
3055+
pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
3056+
pub fn feof(stream: *mut FILE) -> c_int;
3057+
pub fn ferror(stream: *mut FILE) -> c_int;
3058+
pub fn perror(s: *const c_char);
3059+
pub fn atoi(s: *const c_char) -> c_int;
3060+
pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
3061+
pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;
3062+
pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;
3063+
pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
3064+
pub fn malloc(size: size_t) -> *mut c_void;
3065+
pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
3066+
pub fn free(p: *mut c_void);
3067+
pub fn abort() -> !;
3068+
pub fn exit(status: c_int) -> !;
3069+
pub fn _exit(status: c_int) -> !;
3070+
pub fn atexit(cb: extern "C" fn()) -> c_int;
3071+
pub fn system(s: *const c_char) -> c_int;
3072+
pub fn getenv(s: *const c_char) -> *mut c_char;
3073+
3074+
pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
3075+
pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
3076+
pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
3077+
pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
3078+
pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
3079+
pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
3080+
pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
3081+
pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
3082+
pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
3083+
pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
3084+
pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
3085+
pub fn strdup(cs: *const c_char) -> *mut c_char;
3086+
pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
3087+
pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
3088+
pub fn strlen(cs: *const c_char) -> size_t;
3089+
pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
3090+
pub fn strerror(n: c_int) -> *mut c_char;
3091+
pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
3092+
pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
3093+
pub fn wcslen(buf: *const wchar_t) -> size_t;
3094+
pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
3095+
3096+
pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
3097+
pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
3098+
pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
3099+
pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
3100+
pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
3101+
3102+
pub fn abs(i: c_int) -> c_int;
3103+
pub fn atof(s: *const c_char) -> c_double;
3104+
pub fn labs(i: c_long) -> c_long;
3105+
pub fn rand() -> c_int;
3106+
pub fn srand(seed: c_uint);
3107+
30153108
pub fn getpwnam(name: *const ::c_char) -> *mut passwd;
30163109
pub fn getpwuid(uid: ::uid_t) -> *mut passwd;
30173110

src/lib.rs

Lines changed: 0 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -178,140 +178,9 @@ pub type intptr_t = isize;
178178
pub type uintptr_t = usize;
179179
pub type ssize_t = isize;
180180

181-
pub enum FILE {}
182-
pub enum fpos_t {} // TODO: fill this out with a struct
183-
184181
pub const INT_MIN: c_int = -2147483648;
185182
pub const INT_MAX: c_int = 2147483647;
186183

187-
extern "C" {
188-
pub fn isalnum(c: c_int) -> c_int;
189-
pub fn isalpha(c: c_int) -> c_int;
190-
pub fn iscntrl(c: c_int) -> c_int;
191-
pub fn isdigit(c: c_int) -> c_int;
192-
pub fn isgraph(c: c_int) -> c_int;
193-
pub fn islower(c: c_int) -> c_int;
194-
pub fn isprint(c: c_int) -> c_int;
195-
pub fn ispunct(c: c_int) -> c_int;
196-
pub fn isspace(c: c_int) -> c_int;
197-
pub fn isupper(c: c_int) -> c_int;
198-
pub fn isxdigit(c: c_int) -> c_int;
199-
pub fn tolower(c: c_int) -> c_int;
200-
pub fn toupper(c: c_int) -> c_int;
201-
202-
#[cfg_attr(
203-
all(target_os = "macos", target_arch = "x86"),
204-
link_name = "fopen$UNIX2003"
205-
)]
206-
pub fn fopen(filename: *const c_char, mode: *const c_char) -> *mut FILE;
207-
#[cfg_attr(
208-
all(target_os = "macos", target_arch = "x86"),
209-
link_name = "freopen$UNIX2003"
210-
)]
211-
pub fn freopen(filename: *const c_char, mode: *const c_char, file: *mut FILE) -> *mut FILE;
212-
pub fn fflush(file: *mut FILE) -> c_int;
213-
pub fn fclose(file: *mut FILE) -> c_int;
214-
pub fn remove(filename: *const c_char) -> c_int;
215-
pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
216-
pub fn tmpfile() -> *mut FILE;
217-
pub fn setvbuf(stream: *mut FILE, buffer: *mut c_char, mode: c_int, size: size_t) -> c_int;
218-
pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
219-
pub fn getchar() -> c_int;
220-
pub fn putchar(c: c_int) -> c_int;
221-
pub fn fgetc(stream: *mut FILE) -> c_int;
222-
pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
223-
pub fn fputc(c: c_int, stream: *mut FILE) -> c_int;
224-
#[cfg_attr(
225-
all(target_os = "macos", target_arch = "x86"),
226-
link_name = "fputs$UNIX2003"
227-
)]
228-
pub fn fputs(s: *const c_char, stream: *mut FILE) -> c_int;
229-
pub fn puts(s: *const c_char) -> c_int;
230-
pub fn ungetc(c: c_int, stream: *mut FILE) -> c_int;
231-
pub fn fread(ptr: *mut c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
232-
#[cfg_attr(
233-
all(target_os = "macos", target_arch = "x86"),
234-
link_name = "fwrite$UNIX2003"
235-
)]
236-
pub fn fwrite(ptr: *const c_void, size: size_t, nobj: size_t, stream: *mut FILE) -> size_t;
237-
pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
238-
pub fn ftell(stream: *mut FILE) -> c_long;
239-
pub fn rewind(stream: *mut FILE);
240-
#[cfg_attr(target_os = "netbsd", link_name = "__fgetpos50")]
241-
pub fn fgetpos(stream: *mut FILE, ptr: *mut fpos_t) -> c_int;
242-
#[cfg_attr(target_os = "netbsd", link_name = "__fsetpos50")]
243-
pub fn fsetpos(stream: *mut FILE, ptr: *const fpos_t) -> c_int;
244-
pub fn feof(stream: *mut FILE) -> c_int;
245-
pub fn ferror(stream: *mut FILE) -> c_int;
246-
pub fn perror(s: *const c_char);
247-
pub fn atoi(s: *const c_char) -> c_int;
248-
#[cfg_attr(
249-
all(target_os = "macos", target_arch = "x86"),
250-
link_name = "strtod$UNIX2003"
251-
)]
252-
pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
253-
pub fn strtol(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_long;
254-
pub fn strtoul(s: *const c_char, endp: *mut *mut c_char, base: c_int) -> c_ulong;
255-
pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
256-
pub fn malloc(size: size_t) -> *mut c_void;
257-
pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
258-
pub fn free(p: *mut c_void);
259-
pub fn abort() -> !;
260-
pub fn exit(status: c_int) -> !;
261-
pub fn _exit(status: c_int) -> !;
262-
pub fn atexit(cb: extern "C" fn()) -> c_int;
263-
#[cfg_attr(
264-
all(target_os = "macos", target_arch = "x86"),
265-
link_name = "system$UNIX2003"
266-
)]
267-
pub fn system(s: *const c_char) -> c_int;
268-
pub fn getenv(s: *const c_char) -> *mut c_char;
269-
270-
pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
271-
pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t) -> *mut c_char;
272-
pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
273-
pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
274-
pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
275-
pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
276-
pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
277-
pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
278-
pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
279-
pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
280-
pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
281-
pub fn strdup(cs: *const c_char) -> *mut c_char;
282-
pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
283-
pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
284-
pub fn strlen(cs: *const c_char) -> size_t;
285-
pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
286-
#[cfg_attr(
287-
all(target_os = "macos", target_arch = "x86"),
288-
link_name = "strerror$UNIX2003"
289-
)]
290-
pub fn strerror(n: c_int) -> *mut c_char;
291-
pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
292-
pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
293-
pub fn wcslen(buf: *const wchar_t) -> size_t;
294-
pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
295-
296-
pub fn memchr(cx: *const c_void, c: c_int, n: size_t) -> *mut c_void;
297-
pub fn memcmp(cx: *const c_void, ct: *const c_void, n: size_t) -> c_int;
298-
pub fn memcpy(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
299-
pub fn memmove(dest: *mut c_void, src: *const c_void, n: size_t) -> *mut c_void;
300-
pub fn memset(dest: *mut c_void, c: c_int, n: size_t) -> *mut c_void;
301-
}
302-
303-
// These are all inline functions on android, so they end up just being entirely
304-
// missing on that platform.
305-
306-
#[cfg(not(target_os = "android"))]
307-
extern "C" {
308-
pub fn abs(i: c_int) -> c_int;
309-
pub fn atof(s: *const c_char) -> c_double;
310-
pub fn labs(i: c_long) -> c_long;
311-
pub fn rand() -> c_int;
312-
pub fn srand(seed: c_uint);
313-
}
314-
315184
cfg_if! {
316185
if #[cfg(windows)] {
317186
mod windows;

0 commit comments

Comments
 (0)