Back to index

texmacs  1.0.7.15
error.c
Go to the documentation of this file.
00001 /*  $Header: /home/cvsroot/dvipdfmx/src/error.c,v 1.4 2004/03/11 11:50:20 hirata Exp $
00002 
00003     This is dvipdfmx, an eXtended version of dvipdfm by Mark A. Wicks.
00004 
00005     Copyright (C) 2002 by Jin-Hwan Cho and Shunsaku Hirata,
00006     the dvipdfmx project team <dvipdfmx@project.ktug.or.kr>
00007 
00008     Copyright (C) 1998, 1999 by Mark A. Wicks <mwicks@kettering.edu>
00009 
00010     This program is free software; you can redistribute it and/or modify
00011     it under the terms of the GNU General Public License as published by
00012     the Free Software Foundation; either version 2 of the License, or
00013     (at your option) any later version.
00014 
00015     This program is distributed in the hope that it will be useful,
00016     but WITHOUT ANY WARRANTY; without even the implied warranty of
00017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018     GNU General Public License for more details.
00019 
00020     You should have received a copy of the GNU General Public License
00021     along with this program; if not, write to the Free Software
00022     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
00023 */
00024 
00025 #include <stdarg.h>
00026 #include <stdlib.h>
00027 #include <stdio.h>
00028 
00029 #include "error.h"
00030 
00031 #define DPX_MESG        0
00032 #define DPX_MESG_WARN   1
00033 #define DPX_MESG_ERROR  2
00034 
00035 static int _mesg_type = DPX_MESG;
00036 #define WANT_NEWLINE() (_mesg_type != DPX_MESG_WARN && _mesg_type != DPX_MESG_ERROR)
00037 
00038 static int  really_quiet = 0;
00039 
00040 void
00041 shut_up (void)
00042 {
00043   really_quiet = 1;
00044 }
00045 
00046 void
00047 MESG (const char *fmt, ...)
00048 {
00049   va_list argp;
00050 
00051   if (!really_quiet) {
00052     va_start(argp, fmt);
00053     vfprintf(stderr, fmt, argp);
00054     va_end(argp);
00055     _mesg_type = DPX_MESG;
00056   }
00057 }
00058 
00059 void
00060 WARN (const char *fmt, ...)
00061 {
00062   va_list argp;
00063 
00064   if (!really_quiet) {
00065     if (WANT_NEWLINE())
00066       fprintf(stderr, "\n");
00067     fprintf(stderr, "** WARNING ** ");
00068     va_start(argp, fmt);
00069     vfprintf(stderr, fmt, argp);
00070     va_end(argp);
00071     fprintf(stderr, "\n");
00072 
00073     _mesg_type = DPX_MESG_WARN;
00074   }
00075 }
00076 
00077 extern void error_cleanup (void);
00078 
00079 
00080 void
00081 ERROR (const char *fmt, ...)
00082 {
00083   va_list argp;
00084 
00085   if (!really_quiet) {
00086     if (WANT_NEWLINE())
00087       fprintf(stderr, "\n");
00088     fprintf(stderr, "** ERROR ** ");
00089     va_start(argp, fmt);
00090     vfprintf(stderr, fmt, argp);
00091     va_end(argp);
00092     fprintf(stderr, "\n");
00093   }
00094   error_cleanup();
00095   exit( 1 );
00096 }