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 it under 8 the terms of the GNU General Public License as published by the Free 9 Software Foundation; either version 2, or (at your option) any later 10 version. 11 12 Bash is distributed in the hope that it will be useful, but WITHOUT ANY 13 WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 for more details. 16 17 You should have received a copy of the GNU General Public License along 18 with Bash; see the file COPYING. If not, write to the Free Software 19 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA */ 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