-#define RAND_MAX 0x7ffffffff
-
-#define MB_CUR_MAX 1 /* XXX */
-
-#ifdef __STDC__
-
-void abort(void);
-int abs(int);
-int atexit(void (*_func)(void));
-double atof(const char *_nptr);
-int atoi(const char *_nptr);
-long atol(const char *_nptr);
-void *bsearch(const void *_key, const void *_base, size_t _nmemb,
- size_t _size, int (*_compar)(const void *, const void *));
-void *calloc(size_t _nmemb, size_t _size);
-div_t div(int _numer, int _denom);
-void exit(int _status);
-void free(void *_ptr);
-char *getenv(const char *_string);
-long labs(long);
-ldiv_t ldiv(long _numer, long _denom);
-void *malloc(size_t _size);
-void qsort(void *_base, size_t _nmemb, size_t _size,
- int (*_compar)(const void *, const void *));
-int rand(void);
-void *realloc(void *_ptr, size_t _size);
-void srand(unsigned _seed);
-long strtol(const char *_nptr, char **_endptr, int _base);
-u_long strtoul(const char *_nptr, char **_endptr, int _base);
-int system(const char *_string);
-
-#else /* !__STDC__ */
-
-void abort();
-int abs();
-int atexit();
-double atof();
-int atoi();
-long atol();
-void *bsearch();
-void *calloc();
-div_t div();
-void exit();
-void free();
-char *getenv();
-long labs();
-ldiv_t ldiv();
-void *malloc();
-void qsort();
-int rand();
-void *realloc();
-void srand();
-long strtol();
-u_long strtoul();
-int system();
-
-#endif /* __STDC__ */
-
-#ifdef NOT_YET_IMPLEMENTED
-int mblen(const char *_s, size_t _n);
-size_t mbstowcs(wchar_t *_pwcs, const char *_s, size_t _n);
-int wctomb(char *_s, wchar_t _wchar);
-int mbtowc(wchar_t *_pwc, const char *_s, size_t _n);
-double strtod(const char *_nptr, char **_endptr);
-size_t wcstombs(char *_s, const wchar_t *_pwcs, size_t _n);
+#define RAND_MAX 0x7fffffff
+
+extern int __mb_cur_max;
+#define MB_CUR_MAX __mb_cur_max
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+__dead void
+ abort __P((void));
+__pure int
+ abs __P((int));
+int atexit __P((void (*)(void)));
+double atof __P((const char *));
+int atoi __P((const char *));
+long atol __P((const char *));
+void *bsearch __P((const void *, const void *, size_t,
+ size_t, int (*)(const void *, const void *)));
+void *calloc __P((size_t, size_t));
+__pure div_t
+ div __P((int, int));
+__dead void
+ exit __P((int));
+void free __P((void *));
+char *getenv __P((const char *));
+__pure long
+ labs __P((long));
+__pure ldiv_t
+ ldiv __P((long, long));
+void *malloc __P((size_t));
+void qsort __P((void *, size_t, size_t,
+ int (*)(const void *, const void *)));
+int rand __P((void));
+void *realloc __P((void *, size_t));
+void srand __P((unsigned));
+double strtod __P((const char *, char **));
+long strtol __P((const char *, char **, int));
+unsigned long
+ strtoul __P((const char *, char **, int));
+int system __P((const char *));
+
+/* These are currently just stubs. */
+int mblen __P((const char *, size_t));
+size_t mbstowcs __P((wchar_t *, const char *, size_t));
+int wctomb __P((char *, wchar_t));
+int mbtowc __P((wchar_t *, const char *, size_t));
+size_t wcstombs __P((char *, const wchar_t *, size_t));
+
+#ifndef _ANSI_SOURCE
+int putenv __P((const char *));
+int setenv __P((const char *, const char *, int));
+#endif
+
+#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+void *alloca __P((size_t)); /* built-in for gcc */
+ /* getcap(3) functions */
+char *getbsize __P((int *, long *));
+char *cgetcap __P((char *, char *, int));
+int cgetclose __P((void));
+int cgetent __P((char **, char **, char *));
+int cgetfirst __P((char **, char **));
+int cgetmatch __P((char *, char *));
+int cgetnext __P((char **, char **));
+int cgetnum __P((char *, char *, long *));
+int cgetset __P((char *));
+int cgetstr __P((char *, char *, char **));
+int cgetustr __P((char *, char *, char **));
+
+int daemon __P((int, int));
+char *devname __P((int, int));
+int getloadavg __P((double [], int));
+
+extern char *optarg; /* getopt(3) external variables */
+extern int opterr, optind, optopt;
+int getopt __P((int, char * const *, const char *));
+
+extern char *suboptarg; /* getsubopt(3) external variable */
+int getsubopt __P((char **, char * const *, char **));
+
+char *group_from_gid __P((unsigned long, int));
+int heapsort __P((void *, size_t, size_t,
+ int (*)(const void *, const void *)));
+char *initstate __P((unsigned, char *, int));
+int mergesort __P((void *, size_t, size_t,
+ int (*)(const void *, const void *)));
+int radixsort __P((const unsigned char **, int, const unsigned char *,
+ unsigned));
+int sradixsort __P((const unsigned char **, int, const unsigned char *,
+ unsigned));
+long random __P((void));
+char *realpath __P((const char *, char resolved_path[]));
+char *setstate __P((char *));
+void srandom __P((unsigned));
+char *user_from_uid __P((unsigned long, int));
+#ifndef __STRICT_ANSI__
+long long
+ strtoq __P((const char *, char **, int));
+unsigned long long
+ strtouq __P((const char *, char **, int));
+#endif
+void unsetenv __P((const char *));