1/* 2 * Copyright (c) 2006-2007 The Regents of the University of California. 3 * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved. 4 * 5 * This software is available to you under a choice of one of two 6 * licenses. You may choose to be licensed under the terms of the GNU 7 * General Public License (GPL) Version 2, available from the file 8 * COPYING in the main directory of this source tree, or the 9 * OpenIB.org BSD license below: 10 * 11 * Redistribution and use in source and binary forms, with or 12 * without modification, are permitted provided that the following 13 * conditions are met: 14 * 15 * - Redistributions of source code must retain the above 16 * copyright notice, this list of conditions and the following 17 * disclaimer. 18 * 19 * - Redistributions in binary form must reproduce the above 20 * copyright notice, this list of conditions and the following 21 * disclaimer in the documentation and/or other materials 22 * provided with the distribution. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 31 * SOFTWARE. 32 * 33 */ 34 35/** 36 * Define common functions which can be included in the various C based diags. 37 */ 38 39#define _GNU_SOURCE 40#include <stdio.h> 41#include <errno.h> 42#include <string.h> 43#include <stdlib.h> 44#include <stdarg.h> 45#include <sys/types.h> 46#include <unistd.h> 47#include <ctype.h> 48#ifdef HAVE_CONFIG_H 49#include <config.h> 50#endif 51 52#include "ibdiag_common.h" 53 54int ibdebug; 55 56void 57iberror(const char *fn, char *msg, ...) 58{ 59 char buf[512], *s; 60 va_list va; 61 int n; 62 63 va_start(va, msg); 64 n = vsprintf(buf, msg, va); 65 va_end(va); 66 buf[n] = 0; 67 68 if ((s = strrchr(argv0, '/'))) 69 argv0 = s + 1; 70 71 if (ibdebug) 72 printf("%s: iberror: [pid %d] %s: failed: %s\n", argv0, getpid(), fn, buf); 73 else 74 printf("%s: iberror: failed: %s\n", argv0, buf); 75 76 exit(-1); 77} 78 79