1 /** @file 2 Implement the warning and error output messages. 3 4 Copyright (c) 2011, Intel Corporation 5 All rights reserved. This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 * Copyright (c) 1994 Michael L. Hitch 14 * All rights reserved. 15 * 16 * Redistribution and use in source and binary forms, with or without 17 * modification, are permitted provided that the following conditions 18 * are met: 19 * 1. Redistributions of source code must retain the above copyright 20 * notice, this list of conditions and the following disclaimer. 21 * 2. Redistributions in binary form must reproduce the above copyright 22 * notice, this list of conditions and the following disclaimer in the 23 * documentation and/or other materials provided with the distribution. 24 * 3. All advertising materials mentioning features or use of this software 25 * must display the following acknowledgement: 26 * This product includes software developed by Michael L. Hitch. 27 * 4. The name of the author may not be used to endorse or promote products 28 * derived from this software without specific prior written permission 29 * 30 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 31 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 32 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 33 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 34 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 35 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 36 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 37 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 38 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 39 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 40 **/ 41 #include <LibConfig.h> 42 43 #include <stdarg.h> 44 #include <stdio.h> 45 #include <errno.h> 46 #include <string.h> 47 #include <stdlib.h> 48 49 static void 50 _Vdomessage(int doerrno, const char *fmt, va_list args) 51 { 52 fprintf(stderr, "%s: ", getprogname()); 53 if (fmt) { 54 vfprintf(stderr, fmt, args); 55 fprintf(stderr, ": "); 56 } 57 if (doerrno && errno < EMAXERRORVAL) { 58 fprintf(stderr, "%s", strerror(errno)); 59 } 60 fprintf(stderr, "\n"); 61 } 62 63 void 64 err(int eval, const char *fmt, ...) 65 { 66 va_list ap; 67 va_start(ap, fmt); 68 _Vdomessage(1, fmt, ap); 69 va_end(ap); 70 exit(eval); 71 } 72 73 void 74 errx(int eval, const char *fmt, ...) 75 { 76 va_list ap; 77 va_start(ap, fmt); 78 _Vdomessage(0, fmt, ap); 79 va_end(ap); 80 exit(eval); 81 } 82 83 void 84 warn(const char *fmt, ...) 85 { 86 va_list ap; 87 va_start(ap, fmt); 88 _Vdomessage(1, fmt, ap); 89 va_end(ap); 90 } 91 92 void 93 warnx(const char *fmt, ...) 94 { 95 va_list ap; 96 va_start(ap, fmt); 97 _Vdomessage(0, fmt, ap); 98 va_end(ap); 99 } 100