1: /* 2: * Copyright (c) 1980 Regents of the University of California. 3: * All rights reserved. The Berkeley software License Agreement 4: * specifies the terms and conditions for redistribution. 5: * 6: * @(#)perror_.c 5.1 6/7/85 7: */ 8: 9: /* 10: * write a standard error message to the standard error output 11: * 12: * calling sequence: 13: * call perror(string) 14: * where: 15: * string will be written preceeding the standard error message 16: */ 17: 18: #include <stdio.h> 19: #include "../libI77/fiodefs.h" 20: #include "../libI77/f_errno.h" 21: 22: extern char *sys_errlist[]; 23: extern int sys_nerr; 24: extern char *f_errlist[]; 25: extern int f_nerr; 26: extern unit units[]; 27: 28: perror_(s, len) 29: char *s; long len; 30: { 31: unit *lu; 32: char buf[40]; 33: char *mesg = s + len; 34: 35: while (len > 0 && *--mesg == ' ') 36: len--; 37: if (errno >=0 && errno < sys_nerr) 38: mesg = sys_errlist[errno]; 39: else if (errno >= F_ER && errno < (F_ER + f_nerr)) 40: mesg = f_errlist[errno - F_ER]; 41: else 42: { 43: sprintf(buf, "%d: unknown error number", errno); 44: mesg = buf; 45: } 46: lu = &units[STDERR]; 47: if (!lu->uwrt) 48: nowwriting(lu); 49: while (len-- > 0) 50: putc(*s++, lu->ufd); 51: fprintf(lu->ufd, ": %s\n", mesg); 52: }