1.fp 5 CW
2.de Af
3.ds ;G \\*(;G\\f\\$1\\$3\\f\\$2
4.if !\\$4 .Af \\$2 \\$1 "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
5..
6.de aF
7.ie \\$3 .ft \\$1
8.el \{\
9.ds ;G \&
10.nr ;G \\n(.f
11.Af "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7" "\\$8" "\\$9"
12\\*(;G
13.ft \\n(;G \}
14..
15.de L
16.aF 5 \\n(.f "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
17..
18.de LR
19.aF 5 1 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
20..
21.de RL
22.aF 1 5 "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6" "\\$7"
23..
24.de EX		\" start example
25.ta 1i 2i 3i 4i 5i 6i
26.PP
27.RS 
28.PD 0
29.ft 5
30.nf
31..
32.de EE		\" end example
33.fi
34.ft
35.PD
36.RE
37.PP
38..
39.TH COMPATIBILITY 3
40.SH NAME
41compatibility \- ast library compatibility routines
42.SH SYNOPSIS
43.EX
44#include <ast.h>
45
46int	atexit(void(*)(void));
47char*	confstr(int);
48int	dup2(int, int);
49long	fpathconf(int, int);
50int	getgroups(int, int*);
51char*	getwd(char*);
52int	killpg(int, int);
53int	link(const char*, const char*);
54int	lstat(const char*, struct stat*);
55int	memcmp(const char*, const char*, unsigned int);
56char*	memcpy(char*, const char*, int);
57char*	memset(char*, char, int);
58int	mkdir(const char*, mode_t);
59int	mkfifo(const char*, mode_t);
60int	mknod(const char*, mode_t);
61char*	mktemp(char*);
62int	mount(const char*, const char*, int);
63long	pathconf(const char*, int);
64int	perror(const char*);
65FILE*	popen(const char*, const char*);
66int	readlink(const char*, char*, int);
67int	remove(const char*);
68int	rename(const char*, const char*);
69int	rmdir(const char*);
70int	setpgid(pid_t, pid_t);
71int	sigmask(int);
72int	sigsetmask(long);
73int	sigunblock(int);
74char*	strchr(const char*, int);
75char*	strrchr(const char*, int);
76double	strtod(const char*, char**);
77long	strtol(const char*, char**, int);
78int	symlink(const char*, const char*);
79long	sysconf(int);
80int	system(const char*);
81char*	tmpnam(char*);
82int	unlink(const char*);
83int	vfork(void);
84int	waitpid(pid_t, int*, int);
85.EE
86.SH DESCRIPTION
87These routines are described in the ANSI C, POSIX, BSD and System V manual
88sections 2 and 3.
89The interfaces are preserved and present in all libast implementations.
90Where conflicts exist the POSIX syntax and semantics are implied.
91The appropriate error value is returned and
92.I errno
93is set to
94.L EINVAL
95when emulation is either too expensive or not possible.
96.SH CAVEATS
97If you
98.L "#undef foo"
99and then call
100.L foo
101you may end up with the local implementation of
102.LR foo ,
103and then you get what you payed for.
104