1*82657471SMarkus Pfeiffer /** 2*82657471SMarkus Pfeiffer * Copyright (c) 2013 Larisa Grigore<larisagrigore@gmail.com>. 3*82657471SMarkus Pfeiffer * All rights reserved. 4*82657471SMarkus Pfeiffer * 5*82657471SMarkus Pfeiffer * Redistribution and use in source and binary forms, with or without 6*82657471SMarkus Pfeiffer * modification, are permitted provided that the following conditions 7*82657471SMarkus Pfeiffer * are met: 8*82657471SMarkus Pfeiffer * 1. Redistributions of source code must retain the above copyright 9*82657471SMarkus Pfeiffer * notice, this list of conditions and the following disclaimer. 10*82657471SMarkus Pfeiffer * 2. Redistributions in binary form must reproduce the above copyright 11*82657471SMarkus Pfeiffer * notice, this list of conditions and the following disclaimer in the 12*82657471SMarkus Pfeiffer * documentation and/or other materials provided with the distribution. 13*82657471SMarkus Pfeiffer * 3. The name of the author may not be used to endorse or promote products 14*82657471SMarkus Pfeiffer * derived from this software without specific prior written permission. 15*82657471SMarkus Pfeiffer * 16*82657471SMarkus Pfeiffer * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 17*82657471SMarkus Pfeiffer * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 18*82657471SMarkus Pfeiffer * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19*82657471SMarkus Pfeiffer * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 20*82657471SMarkus Pfeiffer * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 21*82657471SMarkus Pfeiffer * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22*82657471SMarkus Pfeiffer * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23*82657471SMarkus Pfeiffer * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24*82657471SMarkus Pfeiffer * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25*82657471SMarkus Pfeiffer * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26*82657471SMarkus Pfeiffer */ 27*82657471SMarkus Pfeiffer 28*82657471SMarkus Pfeiffer #include <stdarg.h> 29*82657471SMarkus Pfeiffer #include <unistd.h> 30*82657471SMarkus Pfeiffer #include <stdio.h> 31*82657471SMarkus Pfeiffer #include <stdlib.h> 32*82657471SMarkus Pfeiffer #include <errno.h> 33*82657471SMarkus Pfeiffer #include <syslog.h> 34*82657471SMarkus Pfeiffer 35*82657471SMarkus Pfeiffer #include "sysvipc_utils.h" 36*82657471SMarkus Pfeiffer 37*82657471SMarkus Pfeiffer //#define SYSV_DEBUG 38*82657471SMarkus Pfeiffer #ifdef SYSV_DEBUG 39*82657471SMarkus Pfeiffer void 40*82657471SMarkus Pfeiffer sysv_print(const char *fmt, ...) { 41*82657471SMarkus Pfeiffer va_list ap; 42*82657471SMarkus Pfeiffer char format[50]; 43*82657471SMarkus Pfeiffer 44*82657471SMarkus Pfeiffer sprintf(format, "[%d %d] %s", 45*82657471SMarkus Pfeiffer getpid(), lwp_gettid(), fmt); 46*82657471SMarkus Pfeiffer va_start(ap, fmt); 47*82657471SMarkus Pfeiffer vprintf(format, ap); 48*82657471SMarkus Pfeiffer va_end(ap); 49*82657471SMarkus Pfeiffer fflush(stdout); 50*82657471SMarkus Pfeiffer } 51*82657471SMarkus Pfeiffer #else 52*82657471SMarkus Pfeiffer void 53*82657471SMarkus Pfeiffer sysv_print(const char *fmt, ...) {} 54*82657471SMarkus Pfeiffer #endif 55*82657471SMarkus Pfeiffer 56*82657471SMarkus Pfeiffer void 57*82657471SMarkus Pfeiffer sysv_print_err(const char *fmt, ...) { 58*82657471SMarkus Pfeiffer va_list ap; 59*82657471SMarkus Pfeiffer char format[50]; 60*82657471SMarkus Pfeiffer 61*82657471SMarkus Pfeiffer sprintf(format, "[%d %d] error(%d): %s", 62*82657471SMarkus Pfeiffer getpid(), lwp_gettid(), errno, fmt); 63*82657471SMarkus Pfeiffer va_start(ap, fmt); 64*82657471SMarkus Pfeiffer vprintf(format, ap); 65*82657471SMarkus Pfeiffer va_end(ap); 66*82657471SMarkus Pfeiffer } 67