00001 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */ 00002 /* ==================================================================== 00003 * Copyright (c) 1999-2004 Carnegie Mellon University. All rights 00004 * reserved. 00005 * 00006 * Redistribution and use in source and binary forms, with or without 00007 * modification, are permitted provided that the following conditions 00008 * are met: 00009 * 00010 * 1. Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * 00013 * 2. Redistributions in binary form must reproduce the above copyright 00014 * notice, this list of conditions and the following disclaimer in 00015 * the documentation and/or other materials provided with the 00016 * distribution. 00017 * 00018 * This work was supported in part by funding from the Defense Advanced 00019 * Research Projects Agency and the National Science Foundation of the 00020 * United States of America, and the CMU Sphinx Speech Consortium. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 00023 * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 00024 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00025 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY 00026 * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00027 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 00028 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00029 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00030 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00031 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00032 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00033 * 00034 * ==================================================================== 00035 * 00036 */ 00037 /* 00038 * err.h -- Package for checking and catching common errors, printing out 00039 * errors nicely, etc. 00040 * 00041 * ********************************************** 00042 * CMU ARPA Speech Project 00043 * 00044 * Copyright (c) 1999 Carnegie Mellon University. 00045 * ALL RIGHTS RESERVED. 00046 * ********************************************** 00047 * 00048 * 6/01/95 Paul Placeway CMU speech group 00049 * $Log: err.h,v $ 00050 * Revision 1.10 2005/06/22 03:00:23 arthchan2003 00051 * 1, Add a E_INFO that produce no file names. 2, Add keyword. 00052 * 00053 * Revision 1.3 2005/06/15 04:21:46 archan 00054 * 1, Fixed doxygen-documentation, 2, Add keyword such that changes will be logged into a file. 00055 * 00056 */ 00057 00058 00059 #ifndef _LIBUTIL_ERR_H_ 00060 #define _LIBUTIL_ERR_H_ 00061 00062 #include <stdarg.h> 00063 #include <stdio.h> 00064 #ifndef _WIN32_WCE 00065 #include <errno.h> 00066 #endif 00067 00068 /* Win32/WinCE DLL gunk */ 00069 #include <sphinxbase_export.h> 00070 00078 /* 01.18.01 RAH, allow for C++ compiles */ 00079 #ifdef __cplusplus 00080 extern "C" { 00081 #endif 00082 #if 0 00083 /* Fool Emacs. */ 00084 } 00085 #endif 00086 00087 SPHINXBASE_EXPORT 00088 void _E__pr_header(char const *file, long line, char const *msg); 00089 SPHINXBASE_EXPORT 00090 void _E__pr_info_header(char const *file, long line, char const *tag); 00091 SPHINXBASE_EXPORT 00092 void _E__pr_info_header_wofn(char const *msg); 00093 SPHINXBASE_EXPORT 00094 void _E__pr_warn(char const *fmt, ...); 00095 SPHINXBASE_EXPORT 00096 void _E__pr_info(char const *fmt, ...); 00097 SPHINXBASE_EXPORT 00098 void _E__die_error(char const *fmt, ...); 00099 SPHINXBASE_EXPORT 00100 void _E__abort_error(char const *fmt, ...); 00101 SPHINXBASE_EXPORT 00102 void _E__sys_error(char const *fmt, ...); 00103 SPHINXBASE_EXPORT 00104 void _E__fatal_sys_error(char const *fmt, ...); 00105 00112 SPHINXBASE_EXPORT 00113 FILE *err_set_logfp(FILE *logfp); 00114 00119 SPHINXBASE_EXPORT 00120 FILE * err_get_logfp(void); 00121 00122 00131 SPHINXBASE_EXPORT 00132 int err_set_logfile(char const *file); 00133 00137 #define E_FATAL _E__pr_header(__FILE__, __LINE__, "FATAL_ERROR"),_E__die_error 00138 00142 #define E_FATAL_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__fatal_sys_error 00143 00147 #define E_WARN_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error 00148 00152 #define E_ERROR_SYSTEM _E__pr_header(__FILE__, __LINE__, "SYSTEM_ERROR"),_E__sys_error 00153 00157 #define E_INFO _E__pr_info_header(__FILE__, __LINE__, "INFO"),_E__pr_info 00158 00163 #define E_INFOCONT _E__pr_info 00164 00168 #define E_INFO_NOFN _E__pr_info_header_wofn("INFO"),_E__pr_info 00169 00170 00174 #define E_WARN _E__pr_header(__FILE__, __LINE__, "WARNING"),_E__pr_warn 00175 00179 #define E_ERROR _E__pr_header(__FILE__, __LINE__, "ERROR"),_E__pr_warn 00180 00181 00182 #ifdef __cplusplus 00183 } 00184 #endif 00185 00186 00187 #endif /* !_ERR_H */ 00188 00189