1 /* Copyright (C) 1991-1993,1997,1998,2000-2002 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library; if not, write to the Free 16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 17 02111-1307 USA. 18 */ 19 20 21 #include <errno.h> 22 #include <stdio.h> 23 #include <string.h> 24 25 26 /** Print a line on stderr consisting of the text in \a s, a colon, 27 * a space, a message describing the meaning of the contents of 28 * `errno' and a newline. 29 * If \a s is NULL or "", the colon and space are omitted. 30 */ 31 32 void 33 perror(const char *s) 34 { 35 const char *colon; 36 char buffer[1024]; 37 38 // ToDo: we should not change the orientation of the stream 39 // (wide char support is currently disabled, so this doesn't matter yet) 40 41 if (s == NULL || *s == '\0') 42 s = colon = ""; 43 else 44 colon = ": "; 45 46 if (strerror_r(errno, buffer, sizeof(buffer)) != 0) 47 sprintf("Unknown error %ld", errno); 48 49 fprintf(stderr, "%s%s%s\n", s, colon, buffer); 50 } 51 52