1/* strerror.c - string corresponding to a particular value of errno. */ 2 3/* Copyright (C) 1995 Free Software Foundation, Inc. 4 5 This file is part of GNU Bash, the Bourne Again SHell. 6 7 Bash is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or 10 (at your option) any later version. 11 12 Bash is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with Bash. If not, see <http://www.gnu.org/licenses/>. 19*/ 20 21#include <config.h> 22 23#if !defined (HAVE_STRERROR) 24 25#include <bashtypes.h> 26#ifndef _MINIX 27# include <sys/param.h> 28#endif 29 30#if defined (HAVE_UNISTD_H) 31# include <unistd.h> 32#endif 33 34#include <stdio.h> 35#include <errno.h> 36 37#include <shell.h> 38 39#if !defined (errno) 40extern int errno; 41#endif /* !errno */ 42 43/* Return a string corresponding to the error number E. From 44 the ANSI C spec. */ 45#if defined (strerror) 46# undef strerror 47#endif 48 49static char *errbase = "Unknown system error "; 50 51char * 52strerror (e) 53 int e; 54{ 55 static char emsg[40]; 56#if defined (HAVE_SYS_ERRLIST) 57 extern int sys_nerr; 58 extern char *sys_errlist[]; 59 60 if (e > 0 && e < sys_nerr) 61 return (sys_errlist[e]); 62 else 63#endif /* HAVE_SYS_ERRLIST */ 64 { 65 char *z; 66 67 z = itos (e); 68 strcpy (emsg, errbase); 69 strcat (emsg, z); 70 free (z); 71 return (&emsg[0]); 72 } 73} 74#endif /* HAVE_STRERROR */ 75