Home | History | Annotate | Download | only in squashfs-tools
      1 #ifndef ERROR_H
      2 #define ERROR_H
      3 /*
      4  * Create a squashfs filesystem.  This is a highly compressed read only
      5  * filesystem.
      6  *
      7  * Copyright (c) 2012, 2013, 2014
      8  * Phillip Lougher <phillip (at) squashfs.org.uk>
      9  *
     10  * This program is free software; you can redistribute it and/or
     11  * modify it under the terms of the GNU General Public License
     12  * as published by the Free Software Foundation; either version 2,
     13  * or (at your option) any later version.
     14  *
     15  * This program is distributed in the hope that it will be useful,
     16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     18  * GNU General Public License for more details.
     19  *
     20  * You should have received a copy of the GNU General Public License
     21  * along with this program; if not, write to the Free Software
     22  * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
     23  *
     24  * error.h
     25  */
     26 
     27 extern int exit_on_error;
     28 
     29 extern void prep_exit();
     30 extern void progressbar_error(char *fmt, ...);
     31 extern void progressbar_info(char *fmt, ...);
     32 
     33 #ifdef SQUASHFS_TRACE
     34 #define TRACE(s, args...) \
     35 		do { \
     36 			progressbar_info("squashfs: "s, ## args);\
     37 		} while(0)
     38 #else
     39 #define TRACE(s, args...)
     40 #endif
     41 
     42 #define INFO(s, args...) \
     43 		do {\
     44 			 if(!silent)\
     45 				progressbar_info(s, ## args);\
     46 		} while(0)
     47 
     48 #define ERROR(s, args...) \
     49 		do {\
     50 			progressbar_error(s, ## args); \
     51 		} while(0)
     52 
     53 #define ERROR_START(s, args...) \
     54 		do { \
     55 			disable_progress_bar(); \
     56 			fprintf(stderr, s, ## args); \
     57 		} while(0)
     58 
     59 #define ERROR_EXIT(s, args...) \
     60 		do {\
     61 			if (exit_on_error) { \
     62 				fprintf(stderr, "\n"); \
     63 				EXIT_MKSQUASHFS(); \
     64 			} else { \
     65 				fprintf(stderr, s, ## args); \
     66 				enable_progress_bar(); \
     67 			} \
     68 		} while(0)
     69 
     70 #define EXIT_MKSQUASHFS() \
     71 		do {\
     72 			prep_exit();\
     73 			exit(1);\
     74 		} while(0)
     75 
     76 #define BAD_ERROR(s, args...) \
     77 		do {\
     78 			progressbar_error("FATAL ERROR:" s, ##args); \
     79 			EXIT_MKSQUASHFS();\
     80 		} while(0)
     81 
     82 #define EXIT_UNSQUASH(s, args...) BAD_ERROR(s, ##args)
     83 
     84 #define MEM_ERROR() \
     85 	do {\
     86 		progressbar_error("FATAL ERROR: Out of memory (%s)\n", \
     87 								__func__); \
     88 		EXIT_MKSQUASHFS();\
     89 	} while(0)
     90 #endif
     91