add Berkeley specific copyright notices
[unix-history] / usr / src / lib / libc / stdio / perror.c
CommitLineData
bb0cfa24 1/*
74e67efa
KB
2 * Copyright (c) 1988 Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
bb0cfa24
DF
16 */
17
2ce81398 18#if defined(LIBC_SCCS) && !defined(lint)
74e67efa
KB
19static char sccsid[] = "@(#)perror.c 5.4 (Berkeley) %G%";
20#endif /* LIBC_SCCS and not lint */
bb0cfa24 21
df5b5637
SL
22#include <sys/types.h>
23#include <sys/uio.h>
716337de
BJ
24
25int errno;
24bc97a1
KB
26extern int sys_nerr;
27extern char *sys_errlist[];
716337de 28perror(s)
df5b5637 29 char *s;
716337de 30{
df5b5637
SL
31 struct iovec iov[4];
32 register struct iovec *v = iov;
716337de 33
df5b5637
SL
34 if (s && *s) {
35 v->iov_base = s;
36 v->iov_len = strlen(s);
37 v++;
38 v->iov_base = ": ";
39 v->iov_len = 2;
40 v++;
716337de 41 }
df5b5637
SL
42 v->iov_base = errno < sys_nerr ? sys_errlist[errno] : "Unknown error";
43 v->iov_len = strlen(v->iov_base);
44 v++;
45 v->iov_base = "\n";
46 v->iov_len = 1;
74e67efa 47 (void)writev(2, iov, (v - iov) + 1);
716337de 48}