xref: /csrg-svn/lib/libc/stdio/perror.c (revision 13488)
1*13488Ssam /* @(#)perror.c	4.2 (Berkeley) 06/30/83 */
21974Swnj /*
31974Swnj  * Print the error indicated
41974Swnj  * in the cerror cell.
51974Swnj  */
6*13488Ssam #include <sys/types.h>
7*13488Ssam #include <sys/uio.h>
81974Swnj 
91974Swnj int	errno;
101974Swnj int	sys_nerr;
111974Swnj char	*sys_errlist[];
121974Swnj perror(s)
13*13488Ssam 	char *s;
141974Swnj {
15*13488Ssam 	struct iovec iov[4];
16*13488Ssam 	register struct iovec *v = iov;
171974Swnj 
18*13488Ssam 	if (s && *s) {
19*13488Ssam 		v->iov_base = s;
20*13488Ssam 		v->iov_len = strlen(s);
21*13488Ssam 		v++;
22*13488Ssam 		v->iov_base = ": ";
23*13488Ssam 		v->iov_len = 2;
24*13488Ssam 		v++;
251974Swnj 	}
26*13488Ssam 	v->iov_base = errno < sys_nerr ? sys_errlist[errno] : "Unknown error";
27*13488Ssam 	v->iov_len = strlen(v->iov_base);
28*13488Ssam 	v++;
29*13488Ssam 	v->iov_base = "\n";
30*13488Ssam 	v->iov_len = 1;
31*13488Ssam 	writev(2, iov, (v - iov) + 1);
321974Swnj }
33