chiark / gitweb /
volume_id: provide libvolume_id.a file
[elogind.git] / klibc / include / stdlib.h
1 /*
2  * stdlib.h
3  */
4
5 #ifndef _STDLIB_H
6 #define _STDLIB_H
7
8 #include <klibc/extern.h>
9 #include <klibc/compiler.h>
10 #include <stddef.h>
11
12 #include <malloc.h>
13
14 #define EXIT_FAILURE 1
15 #define EXIT_SUCCESS 0
16
17 static __inline__ __noreturn _Exit(int __n) {
18   __extern __noreturn _exit(int);
19   _exit(__n);
20   for(;;);                      /* Some gcc versions are stupid */
21 }
22 __extern __noreturn abort(void);
23 static __inline__ int abs(int __n) {
24   return (__n < 0) ? -__n : __n;
25 }
26 __extern int system(const char * string);
27 __extern int atexit(void (*)(void));
28 __extern int on_exit(void (*)(int, void *), void *);
29 __extern int atoi(const char *);
30 __extern long atol(const char *);
31 __extern long long atoll(const char *);
32 __extern __noreturn exit(int);
33 static __inline__ long labs(long __n) {
34   return (__n < 0L) ? -__n : __n;
35 }
36
37 static __inline__ long long llabs(long long __n) {
38   return (__n < 0LL) ? -__n : __n;
39 }
40
41 __extern long strtol(const char *, char **, int);
42 __extern long long strtoll(const char *, char **, int);
43 __extern unsigned long strtoul(const char *, char **, int);
44 __extern unsigned long long strtoull(const char *, char **, int);
45
46 __extern char *getenv(const char *);
47 __extern int putenv(const char *);
48 __extern int setenv(const char *, const char *, int);
49 __extern int unsetenv(const char *);
50
51 __extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));
52
53
54 __extern long jrand48(unsigned short *);
55 __extern long mrand48(void);
56 __extern long nrand48(unsigned short *);
57 __extern long lrand48(void);
58 __extern unsigned short *seed48(const unsigned short *);
59 __extern void srand48(long);
60
61 #define RAND_MAX 0x7fffffff
62 static __inline__ int rand(void) {
63   return (int)lrand48();
64 }
65 static __inline__ void srand(unsigned int __s) {
66   srand48(__s);
67 }
68 static __inline__ long random(void)
69 {
70   return lrand48();
71 }
72 static __inline__ void srandom(unsigned int __s)
73 {
74   srand48(__s);
75 }
76
77 /* Basic PTY functions.  These only work if devpts is mounted! */
78
79 __extern int unlockpt(int);
80 __extern char *ptsname(int);
81 __extern int getpt(void);
82
83 static __inline__ int grantpt(int __fd)
84 {
85   (void)__fd;
86   return 0;                     /* devpts does this all for us! */
87 }
88
89 #endif /* _STDLIB_H */