⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.c

📁 linux下将各类格式图片转换工具
💻 C
字号:
/* *  error.c:		Error handling * *  Written by:		Stefan Frank *			Ullrich Hafner *   *  Credits:	Modelled after variable argument routines from Jef *		Poskanzer's pbmplus package.  * *  This file is part of FIASCO (獸籸actal 獻籱age 獳籲d 玈籩quence 獵O籨ec) *  Copyright (C) 1994-2000 Ullrich Hafner <hafner@bigfoot.de>    "int dummy = " change to int dummy; dummy =" for Netpbm to avoid     unused variable warning. *//* *  $Date: 2000/06/14 20:49:37 $ *  $Author: hafner $ *  $Revision: 5.1 $ *  $State: Exp $ */#define _ERROR_C#include "config.h"#include <stdio.h>#include <errno.h>#if STDC_HEADERS#	include <stdarg.h>#	define VA_START(args, lastarg) va_start(args, lastarg)#else  /* not STDC_HEADERS */#	include <varargs.h>#	define VA_START(args, lastarg) va_start(args)#endif /* not STDC_HEADERS */#if HAVE_STRING_H#	include <string.h>#else /* not HAVE_STRING_H */#	include <strings.h>#endif /* not HAVE_STRING_H */#if HAVE_SETJMP_H#	include <setjmp.h>#endif /* HAVE_SETJMP_H */#include "types.h"#include "macros.h"#include "error.h"#include "misc.h"#include "fiasco.h"/*****************************************************************************			     local variables  *****************************************************************************/static fiasco_verbosity_e  verboselevel  = FIASCO_SOME_VERBOSITY;static char 	      	  *error_message = NULL;#if HAVE_SETJMP_Hjmp_buf env;#endif /* HAVE_SETJMP_H *//*****************************************************************************			       public code  *****************************************************************************/voidset_error (const char *format, ...)/* *  Set error text to given string. */{   va_list     args;   unsigned    len = 0;   const char *str = format;      VA_START (args, format);   len = strlen (format);   while ((str = strchr (str, '%')))   {      str++;      if (*str == 's')      {	 char *vstring = va_arg (args, char *);	 len += strlen (vstring);      }      else if (*str == 'd')      {	 int dummy;     dummy = va_arg (args, int);	 len += 10;      }      else if (*str == 'c')      {	 int dummy;     dummy = va_arg (args, int);	 len += 1;      }      else	 return;      str++;   }   va_end(args);   VA_START (args, format);   if (error_message)      Free (error_message);   error_message = Calloc (len, sizeof (char));   #if HAVE_VPRINTF   vsprintf (error_message, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   va_end (args);}voiderror (const char *format, ...)/* *  Set error text to given string. */{   va_list     args;   unsigned    len = 0;   const char *str = format;      VA_START (args, format);   len = strlen (format);   while ((str = strchr (str, '%')))   {      str++;      if (*str == 's')      {	 char *vstring = va_arg (args, char *);	 len += strlen (vstring);      }      else if (*str == 'd')      {	 int dummy;     dummy = va_arg (args, int);	 len += 10;      }      else if (*str == 'c')      {	 int dummy;     dummy = va_arg (args, int);	 len += 1;      }      else      {#if HAVE_SETJMP_H	 longjmp (env, 1);#else /* not HAVE_SETJMP_H */	 exit (1);#endif /* HAVE_SETJMP_H */      };            str++;   }   va_end(args);   VA_START (args, format);   if (error_message)      Free (error_message);   error_message = Calloc (len, sizeof (char));   #if HAVE_VPRINTF   vsprintf (error_message, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   va_end (args);   #if HAVE_SETJMP_H   longjmp (env, 1);#else /* not HAVE_SETJMP_H */   exit (1);#endif /* HAVE_SETJMP_H */}const char *fiasco_get_error_message (void)/* *  Return value: *	Last error message of FIASCO library. */{   return error_message ? error_message : "";}const char *get_system_error (void){   return strerror (errno);}voidfile_error (const char *filename)/* *  Print file error message and exit. * *  No return value. */{   error ("File `%s': I/O Error - %s.", filename, get_system_error ());}void warning (const char *format, ...)/* *  Issue a warning and continue execution. * *  No return value. */{   va_list	args;   VA_START (args, format);   if (verboselevel == FIASCO_NO_VERBOSITY)      return;	   fprintf (stderr, "Warning: ");#if HAVE_VPRINTF   vfprintf (stderr, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   fputc ('\n', stderr);   va_end (args);}void message (const char *format, ...)/* *  Print a message to stderr. */{   va_list args;   VA_START (args, format);   if (verboselevel == FIASCO_NO_VERBOSITY)      return;#if HAVE_VPRINTF   vfprintf (stderr, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   fputc ('\n', stderr);   va_end (args);}void debug_message (const char *format, ...)/* *  Print a message to stderr. */{   va_list args;   VA_START (args, format);   if (verboselevel < FIASCO_ULTIMATE_VERBOSITY)      return;   fprintf (stderr, "*** ");#if HAVE_VPRINTF   vfprintf (stderr, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   fputc ('\n', stderr);   va_end (args);}voidinfo (const char *format, ...)/* *  Print a message to stderr. Do not append a newline. */{   va_list args;   VA_START (args, format);   if (verboselevel == FIASCO_NO_VERBOSITY)      return;#if HAVE_VPRINTF   vfprintf (stderr, format, args);#elif HAVE_DOPRNT   _doprnt (format, args, stderr);#endif /* HAVE_DOPRNT */   fflush (stderr);   va_end (args);}voidfiasco_set_verbosity (fiasco_verbosity_e level){   verboselevel = level;}fiasco_verbosity_efiasco_get_verbosity (void){   return verboselevel;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -