157434Smarkm/* Copyright (C) 1991-1993,1997,1998,2000-2002 Free Software Foundation, Inc. 257434Smarkm This file is part of the GNU C Library. 3263970Sdes 4263970Sdes The GNU C Library is free software; you can redistribute it and/or 557434Smarkm modify it under the terms of the GNU Lesser General Public 6197679Sdes License as published by the Free Software Foundation; either 7158519Sdes version 2.1 of the License, or (at your option) any later version. 857434Smarkm 9263970Sdes The GNU C Library is distributed in the hope that it will be useful, 10197679Sdes but WITHOUT ANY WARRANTY; without even the implied warranty of 11197679Sdes MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12263970Sdes Lesser General Public License for more details. 13197679Sdes 14263970Sdes You should have received a copy of the GNU Lesser General Public 15263970Sdes License along with the GNU C Library; if not, write to the Free 16263421Sdes Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 1757434Smarkm 02111-1307 USA. 18263970Sdes*/ 19263970Sdes 20263970Sdes 2157434Smarkm#include <errno.h> 2257434Smarkm#include <stdio.h> 2374818Sru#include <string.h> 24158529Sdes 25158529Sdes 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 32void 33perror(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 snprintf(buffer, sizeof(buffer), "Unknown error %d", errno); 48 49 fprintf(stderr, "%s%s%s\n", s, colon, buffer); 50} 51 52