1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _UTILS_H 28*7c478bd9Sstevel@tonic-gate #define _UTILS_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate #include <assert.h> 33*7c478bd9Sstevel@tonic-gate #include <libintl.h> 34*7c478bd9Sstevel@tonic-gate #include <stdarg.h> 35*7c478bd9Sstevel@tonic-gate #include <time.h> 36*7c478bd9Sstevel@tonic-gate 37*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 38*7c478bd9Sstevel@tonic-gate extern "C" { 39*7c478bd9Sstevel@tonic-gate #endif 40*7c478bd9Sstevel@tonic-gate 41*7c478bd9Sstevel@tonic-gate #define E_SUCCESS 0 /* Exit status for success */ 42*7c478bd9Sstevel@tonic-gate #define E_ERROR 1 /* Exit status for error */ 43*7c478bd9Sstevel@tonic-gate #define E_USAGE 2 /* Exit status for usage error */ 44*7c478bd9Sstevel@tonic-gate 45*7c478bd9Sstevel@tonic-gate /* 46*7c478bd9Sstevel@tonic-gate * Message filter levels by priority 47*7c478bd9Sstevel@tonic-gate */ 48*7c478bd9Sstevel@tonic-gate typedef enum rcm_level { 49*7c478bd9Sstevel@tonic-gate RCM_NONE = 0, /* No messages */ 50*7c478bd9Sstevel@tonic-gate RCM_ERR, /* Errors only */ 51*7c478bd9Sstevel@tonic-gate RCM_WARN, /* Warnings */ 52*7c478bd9Sstevel@tonic-gate RCM_INFO, /* Information */ 53*7c478bd9Sstevel@tonic-gate RCM_DEBUG, /* Everything */ 54*7c478bd9Sstevel@tonic-gate RCM_DEBUG_HIGH /* Fire hose */ 55*7c478bd9Sstevel@tonic-gate } rcm_level_t; 56*7c478bd9Sstevel@tonic-gate 57*7c478bd9Sstevel@tonic-gate /* 58*7c478bd9Sstevel@tonic-gate * Message destinations 59*7c478bd9Sstevel@tonic-gate */ 60*7c478bd9Sstevel@tonic-gate typedef enum rcm_dst { 61*7c478bd9Sstevel@tonic-gate RCD_STD = 1, /* Standard output/error, depending */ 62*7c478bd9Sstevel@tonic-gate /* on level */ 63*7c478bd9Sstevel@tonic-gate RCD_SYSLOG /* syslog() daemon facility */ 64*7c478bd9Sstevel@tonic-gate } rcm_dst_t; 65*7c478bd9Sstevel@tonic-gate 66*7c478bd9Sstevel@tonic-gate #define LINELEN 256 /* max. message length */ 67*7c478bd9Sstevel@tonic-gate 68*7c478bd9Sstevel@tonic-gate #ifdef DEBUG 69*7c478bd9Sstevel@tonic-gate #undef ASSERT 70*7c478bd9Sstevel@tonic-gate #define ASSERT(x) (assert(x)) 71*7c478bd9Sstevel@tonic-gate #else /* !DEBUG */ 72*7c478bd9Sstevel@tonic-gate #undef ASSERT 73*7c478bd9Sstevel@tonic-gate #define ASSERT(x) ((void)0) 74*7c478bd9Sstevel@tonic-gate #endif /* DEBUG */ 75*7c478bd9Sstevel@tonic-gate 76*7c478bd9Sstevel@tonic-gate #ifdef DEBUG_MSG 77*7c478bd9Sstevel@tonic-gate extern void debug(char *, ...); 78*7c478bd9Sstevel@tonic-gate extern void debug_high(char *, ...); 79*7c478bd9Sstevel@tonic-gate #else /* !DEBUG_MSG */ 80*7c478bd9Sstevel@tonic-gate /*LINTED: static unused*/ 81*7c478bd9Sstevel@tonic-gate static void debug(char *format, ...) /*ARGSUSED*/ {} 82*7c478bd9Sstevel@tonic-gate /*LINTED: static unused*/ 83*7c478bd9Sstevel@tonic-gate static void debug_high(char *format, ...) /*ARGSUSED*/ {} 84*7c478bd9Sstevel@tonic-gate #endif /* DEBUG_MSG */ 85*7c478bd9Sstevel@tonic-gate 86*7c478bd9Sstevel@tonic-gate extern void die(char *, ...); 87*7c478bd9Sstevel@tonic-gate extern void info(char *, ...); 88*7c478bd9Sstevel@tonic-gate extern rcm_level_t get_message_priority(void); 89*7c478bd9Sstevel@tonic-gate extern rcm_level_t set_message_priority(rcm_level_t); 90*7c478bd9Sstevel@tonic-gate extern rcm_dst_t set_message_destination(rcm_dst_t); 91*7c478bd9Sstevel@tonic-gate extern char *setprogname(char *); 92*7c478bd9Sstevel@tonic-gate extern void warn(char *, ...); 93*7c478bd9Sstevel@tonic-gate extern int valid_abspath(char *); 94*7c478bd9Sstevel@tonic-gate extern void vdprintfe(int, char *, va_list); 95*7c478bd9Sstevel@tonic-gate extern void dprintfe(int, char *, ...); 96*7c478bd9Sstevel@tonic-gate extern void hrt2ts(hrtime_t, timestruc_t *); 97*7c478bd9Sstevel@tonic-gate extern int xatoi(char *); 98*7c478bd9Sstevel@tonic-gate 99*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 100*7c478bd9Sstevel@tonic-gate } 101*7c478bd9Sstevel@tonic-gate #endif 102*7c478bd9Sstevel@tonic-gate 103*7c478bd9Sstevel@tonic-gate #endif /* _UTILS_H */ 104