18bd6d9a1c60db6cf70c8e9876bb3b8249908ce9bPhillip Lougher#ifndef ERROR_H 28bd6d9a1c60db6cf70c8e9876bb3b8249908ce9bPhillip Lougher#define ERROR_H 32477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher/* 42477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * Create a squashfs filesystem. This is a highly compressed read only 52477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * filesystem. 62477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * 785776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher * Copyright (c) 2012, 2013, 2014 883d42a3fc898962aa1f1e8387f2ccb1114e0d294Phillip Lougher * Phillip Lougher <phillip@squashfs.org.uk> 92477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * 102477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * This program is free software; you can redistribute it and/or 112477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * modify it under the terms of the GNU General Public License 122477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * as published by the Free Software Foundation; either version 2, 132477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * or (at your option) any later version. 142477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * 152477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * This program is distributed in the hope that it will be useful, 162477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * but WITHOUT ANY WARRANTY; without even the implied warranty of 172477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 182477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * GNU General Public License for more details. 192477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * 202477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * You should have received a copy of the GNU General Public License 212477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * along with this program; if not, write to the Free Software 222477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 232477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * 242477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher * error.h 252477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher */ 262477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 2785776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougherextern int exit_on_error; 2885776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher 299b7c3c2fa85f7002ca5a5335ab7c3dab4b136573Phillip Lougherextern void prep_exit(); 309a0e8bb0899e0971fe1d81b7d8b83d2a21701b2bPhillip Lougherextern void progressbar_error(char *fmt, ...); 319a0e8bb0899e0971fe1d81b7d8b83d2a21701b2bPhillip Lougherextern void progressbar_info(char *fmt, ...); 322477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 332477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#ifdef SQUASHFS_TRACE 342477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define TRACE(s, args...) \ 352477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher do { \ 360100fed4ec712daba9a0009c47f6e8390da5bd93Phillip Lougher progressbar_info("squashfs: "s, ## args);\ 372477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher } while(0) 382477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#else 392477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define TRACE(s, args...) 402477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#endif 412477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 422477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define INFO(s, args...) \ 432477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher do {\ 442477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher if(!silent)\ 4524551a8a473d7edb1835eb0f7dcf6e07e3a9d2e1Phillip Lougher progressbar_info(s, ## args);\ 462477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher } while(0) 472477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 482477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define ERROR(s, args...) \ 492477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher do {\ 502477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher progressbar_error(s, ## args); \ 512477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher } while(0) 522477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 5385776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher#define ERROR_START(s, args...) \ 5485776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher do { \ 5585776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher disable_progress_bar(); \ 5685776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher fprintf(stderr, s, ## args); \ 5785776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher } while(0) 5885776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher 5985776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher#define ERROR_EXIT(s, args...) \ 6085776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher do {\ 6185776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher if (exit_on_error) { \ 6285776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher fprintf(stderr, "\n"); \ 6385776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher EXIT_MKSQUASHFS(); \ 6485776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher } else { \ 6585776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher fprintf(stderr, s, ## args); \ 6685776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher enable_progress_bar(); \ 6785776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher } \ 6885776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher } while(0) 6985776df7ba8c5a0bb56ddccfff2bf6a0fc48cac8Phillip Lougher 702477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define EXIT_MKSQUASHFS() \ 712477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher do {\ 729b7c3c2fa85f7002ca5a5335ab7c3dab4b136573Phillip Lougher prep_exit();\ 732477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher exit(1);\ 742477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher } while(0) 752477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher 762477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher#define BAD_ERROR(s, args...) \ 772477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher do {\ 782477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher progressbar_error("FATAL ERROR:" s, ##args); \ 792477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher EXIT_MKSQUASHFS();\ 802477d0defc9d6dade582bb36596eed2e3cfddf8cPhillip Lougher } while(0) 814483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher 820100fed4ec712daba9a0009c47f6e8390da5bd93Phillip Lougher#define EXIT_UNSQUASH(s, args...) BAD_ERROR(s, ##args) 830100fed4ec712daba9a0009c47f6e8390da5bd93Phillip Lougher 844483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher#define MEM_ERROR() \ 854483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher do {\ 864483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher progressbar_error("FATAL ERROR: Out of memory (%s)\n", \ 874483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher __func__); \ 884483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher EXIT_MKSQUASHFS();\ 894483d965675a0d6bf424b36e8da85c3300de2413Phillip Lougher } while(0) 908bd6d9a1c60db6cf70c8e9876bb3b8249908ce9bPhillip Lougher#endif 91