source: MondoRescue/branches/3.2/mondo/src/include/my-stuff.h@ 3494

Last change on this file since 3494 was 3494, checked in by Bruno Cornec, 10 years ago

Update mondo to point to the isolinux subdir now created for ISO images and use the images subdir also for coherency for boot.cat files

  • Property svn:keywords set to Id
File size: 13.0 KB
Line 
1/* my-stuff.h
2 $Id: my-stuff.h 3494 2016-01-05 00:45:53Z bruno $
3*/
4
5#define HAVE_MALLOC 1
6
7
8// Extra info for ACLs and SELINUX users
9#define STAR_ACL_SZ "-xattr -acl"
10
11/**
12 * @file
13 * The main header file for Mondo.
14 */
15
16#if !defined(bool) && !defined(__cplusplus)
17/**
18 * Create the illusion of a Boolean type.
19 */
20#define bool int
21#define TRUE 1
22#define FALSE 0
23#endif
24
25#ifndef _MY_STUFF_H_
26#define _MY_STUFF_H_
27
28#ifdef HAVE_CONFIG_H
29#include <config.h>
30#endif
31
32#ifndef __FreeBSD__
33#include <getopt.h>
34#endif
35#include <sys/types.h>
36#include <sys/ipc.h>
37#include <sys/ioctl.h>
38#include <sys/sem.h>
39#include <sys/param.h>
40#include <stdio.h>
41#include <stdlib.h>
42#ifndef __USE_FILE_OFFSET64
43#define __USE_FILE_OFFSET64
44#endif
45#ifndef __USE_LARGEFILE64
46#define __USE_LARGEFILE64
47#endif
48#include <sys/stat.h>
49#include <fcntl.h>
50#include <errno.h>
51#include <stddef.h>
52#include <sys/stat.h>
53#include <sys/wait.h>
54#include <time.h>
55#include <unistd.h>
56#include <signal.h>
57//#include <curses.h>
58#include <newt.h>
59#include <ctype.h>
60#include <string.h>
61#include <pthread.h>
62#include <assert.h>
63
64#if defined(DEBUG) && !__cplusplus
65int count;
66char trace_log[255]; /*buffer for logging */
67char *trace_log_ptr;
68#endif /* DEBUG */
69
70#define IA64_BOOT_SIZE "16384" /* Should be coherent with mindi */
71#define STD_PREFIX "mondorescue" /* Should be coherent with mindi */
72
73/**
74 * The location where mindi media images are stored.
75 */
76#define MINDI_CACHE_REL "var/cache/mindi" /* Should be coherent with mindi */
77#define MINDI_CACHE "/"MINDI_CACHE_REL
78#define MINDI_LOGFILE "/var/log/mindi.log"
79#define MINDI_RUNFILE "/var/log/mindi.run"
80
81/**
82 * The location where mondo changed info are stored.
83 */
84#define MONDO_CACHE "/var/cache/mondo"
85
86/**
87 * The RAID kernel proc file
88 */
89#define MDSTAT_FILE "/proc/mdstat"
90
91#ifdef __FreeBSD__
92#define CMDLINE "/tmp/cmdline"
93#else
94// Default Linux
95#define CMDLINE "/proc/cmdline"
96#endif
97
98#undef assert
99
100extern void _mondo_assert_fail(const char *file, const char *function,
101 int line, const char *exp);
102
103/**
104 * An assert macro that calls _mondo_assert_fail() when it fails.
105 */
106#ifdef NDEBUG
107#define assert(exp) ((void)0)
108#else
109#define assert(exp) ((exp)?((void)0):_mondo_assert_fail(__FILE__, __FUNCTION__, __LINE__, #exp))
110#endif
111
112#define CRC_M16 0xA001 ///< Mask for crc16.
113#define CRC_MTT 0x1021 ///< Mask for crc-ccitt.
114
115#define FALSE 0 ///< The ubiquitous FALSE macro.
116#define TRUE 1 ///< The even more ubiquitous TRUE macro.
117
118#define SCREEN_LENGTH 25 ///< The default size of the screen.
119#define NOOF_ERR_LINES 6 ///< The number of lines of log output to keep at the bottom of the screen.
120#define ARBITRARY_MAXIMUM 2000 ///< The maximum number of items showing at once in the mountlist or filelist editor.
121#define MAX_TAPECATALOG_ENTRIES 16384 ///< The maximum number of entries in the tape catalog.
122#define MAX_MOUNTLIST_ENTRIES 8192 ///< The maximum number of entries in the mountlist.
123#define MAX_STR_LEN 512 ///< The maximum length of almost all @p char buffers in Mondo.
124 /// Note: Make this divisible by eight to avoid aligment issues
125 /// on 64bit platforms like ia64.
126#define MAXIMUM_RAID_DEVS 32 ///< The maximum number of RAID devices in the raidlist.
127#define MAXIMUM_ADDITIONAL_RAID_VARS 32 ///< The maximum number of additional RAID variables per RAID device in the raidlist.
128#define MAXIMUM_DISKS_PER_RAID_DEV 1024 ///< The maximum number of disks per RAID device in the raidtab.
129
130#define RAIDTAB_FNAME "/etc/raidtab" ///< The filename of the raidtab file, at least on Linux.
131
132#define BLK_START_OF_BACKUP 1 ///< Marker block: start a backup.
133#define BLK_START_OF_TAPE 2 ///< Marker block: start a tape.
134#define BLK_START_AFIOBALLS 10 ///< Marker block: start the afioball section.
135#define BLK_STOP_AFIOBALLS 19 ///< Marker block: stop the afioball section.
136#define BLK_START_AN_AFIO_OR_SLICE 20 ///< Marker block: start an afioball or a slice.
137#define BLK_STOP_AN_AFIO_OR_SLICE 29 ///< Marker block: stop an afioball or a slice.
138#define BLK_START_BIGGIEFILES 30 ///< Marker block: start the biggiefile section.
139#define BLK_STOP_BIGGIEFILES 39 ///< Marker block: stop the biggiefile section.
140#define BLK_START_A_NORMBIGGIE 40 ///< Marker block: start a normal biggiefile.
141#define BLK_START_A_PIHBIGGIE 41 ///< Marker block: start a ntfsprog'd biggiefile
142#define BLK_START_EXTENDED_ATTRIBUTES 45 ///< Marker block: start xattr/acl info
143#define BLK_STOP_EXTENDED_ATTRIBUTES 46 ///< Marker block: stop xattr/acl info
144#define BLK_START_EXAT_FILE 47
145#define BLK_STOP_EXAT_FILE 48
146#define BLK_STOP_A_BIGGIE 59 ///< Marker block: stop a biggiefile.
147#define BLK_START_FILE 80 ///< Marker block: start a file (non-afio or slice).
148#define BLK_STOP_FILE 89 ///< Marker block: stop a file (non-afio or slice).
149#define BLK_END_OF_TAPE 100 ///< Marker block: end of tape.
150#define BLK_END_OF_BACKUP 101 ///< Marker block: end of backup.
151#define BLK_ABORTED_BACKUP 102 ///< Marker block: backup was aborted.
152
153/// The external tape blocksize.
154#ifdef EXTTAPE
155#define TAPE_BLOCK_SIZE (long)EXTTAPE
156#else
157#define TAPE_BLOCK_SIZE 131072L /* was 8192; 06/2002-->65536; 11/2002-->131072 */
158#endif
159
160#define DEFAULT_INTERNAL_TAPE_BLOCK_SIZE 32768 // Nov 2003?
161
162
163
164
165#define SLICE_SIZE 4096 ///< The size of a slice of a biggiefile.
166
167
168
169
170
171
172/**
173 * Determine whether @p x (t_bkptype) is a streaming backup.
174 */
175#define IS_THIS_A_STREAMING_BACKUP(x) (x == tape || x == udev || x == cdstream)
176
177
178#define MONDO_MKISOFS_CMD "mkisofs"
179#define MONDO_GENISOIMAGE_CMD "genisoimage"
180#define MONDO_MKISOFS " -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL_Version "
181#define MONDO_MKISOFS_UEFI " -eltorito-alt-boot -efi-boot images/mindi-bootroot.img -no-emul-boot "
182
183/**
184 * @c mkisofs command to generate a bootable CD using isolinux, except for -o option and the directory to image.
185 */
186#define MONDO_MKISOFS_REGULAR_SYSLINUX MONDO_MKISOFS"-J -boot-info-table -no-emul-boot -b isolinux/isolinux.bin -c isolinux/boot.cat -boot-load-size 4 "
187
188/**
189 * @c mkisofs command to generate a bootable CD using LILO, except for -o option and the directory to image.
190 */
191#define MONDO_MKISOFS_REGULAR_LILO MONDO_MKISOFS_REGULAR_SYSLINUX
192
193/**
194 * @c mkisofs command to generate a bootable CD using ELILO, except for -o option and the directory to image.
195 */
196#define MONDO_MKISOFS_REGULAR_ELILO MONDO_MKISOFS"-J -no-emul-boot -b images/mindi-bootroot.img -c images/boot.cat "
197
198/**
199 * The stub name of the temporary ISO image to create, burn, and remove.
200 */
201#define MONDO_TMPISOS "temporary.iso"
202
203/**
204 * @c growisofs command to generate a bootable DVD using isolinux, except for the directory to image.
205 */
206#define MONDO_GROWISOFS_REGULAR_SYSLINUX "growisofs -use-the-force-luke -J -no-emul-boot -boot-load-size 4 -b isolinux/isolinux.bin --boot-info-table -c isolinux/boot.cat -boot-load-size 4 -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL_Version -V _CD#_ -v"
207
208/**
209 * @c growisofs command to generate a bootable DVD using LILO, except for the directory to image.
210 */
211#define MONDO_GROWISOFS_REGULAR_ELILO "growisofs -use-the-force-luke -no-emul-boot -b images/mindi-bootroot.img -c images/boot.cat -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
212
213/**
214 * @c growisofs command to generate a bootable DVD using LILO, except for the directory to image.
215 */
216#define MONDO_GROWISOFS_REGULAR_LILO "growisofs -no-emul-boot -b isolinux/isolinux.bin -c isolinux/boot.cat -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
217
218/**
219 * @c growisofs command to generate a nonbootable DVD, except for the directory to image.
220 */
221#define MONDO_GROWISOFS_NONBOOT "growisofs -use-the-force-luke -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
222
223/**
224 * Welcome string displayed at the top of the newt interface.
225 */
226#define WELCOME_STRING "W E L C O M E T O M O N D O R E S C U E"
227
228/**
229 * The maximum length of a filename in the tape catalog.
230 */
231#define MAX_TAPECAT_FNAME_LEN 32
232
233/**
234 * Assert that (@p x != NULL) and (@p x[0] != '\\0').
235 */
236#define assert_string_is_neither_NULL_nor_zerolength(x) {assert(x!=NULL);assert(x[0]!='\0');}
237
238/**
239 * Log the file, line, Mondo error message, and OS error message (errno).
240 */
241#define log_OS_error(x) {log_msg(0, "%s (%s)", x, strerror(errno));}
242
243/**
244 * Assert that (@p x != NULL).
245 */
246#define assert_pointer_is_not_NULL(x) {assert(x!=NULL);}
247
248/**
249 * close() @p x and log a message if it fails.
250 */
251#define paranoid_close(x) {if(close(x)) {log_msg(5, "close err");} x=-999; }
252
253/**
254 * fclose() @p x and log a message if it fails.
255 */
256#define paranoid_fclose(x) {if(fclose(x)) {log_msg(5, "fclose err");} x=NULL; }
257
258/**
259 * pclose() @p x and log a message if it fails.
260 */
261#define paranoid_pclose(x) {if(pclose(x)) {log_msg(5, "pclose err");} x=NULL; }
262
263/**
264 * Run the command @p x and log it if it fails.
265 */
266#define paranoid_system(x) {if(system(x)) log_msg(4, x); }
267
268/**
269 * Free @p x and set it to NULL.
270 */
271#define paranoid_free(x) {if (x != NULL) free(x); x=NULL;}
272
273/**
274 * Free variables and call finish(@p x).
275 */
276#define paranoid_MR_finish(x) {free_MR_global_filenames (); finish(x); }
277
278/**
279 * Yes, we want malloc() to help us fix bugs.
280 */
281#define MALLOC_CHECK_ 1
282
283/**
284 * Malloc @p x to be MAX_STR_LEN bytes and call fatal_error() if we're out of memory.
285 */
286#define malloc_string(x) { x = (char *)malloc(MAX_STR_LEN); if (!x) { fatal_error("Unable to malloc"); } x[0] = x[1] = '\0'; }
287
288/**
289 * Path to the location the hard drive is mounted on during a restore.
290 */
291#define MNT_RESTORING "/mnt/RESTORING"
292
293/** @def VANILLA_SCSI_CDROM The first SCSI CD-ROM in the system (most likely to be the one to write to). */
294/** @def VANILLA_SCSI_TAPE The first SCSI tape in the system (most likely to be the one towrite to. */
295/** @def DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE A string whose presence in a device name indicates the
296 * inability to check this device for errors in the mountlist. */
297/** @def RAID_DEVICE_STUB The stub of a RAID device (set up RAID if we find it). */
298/** @def SANE_FORMATS Sane formats for this OS, separated by spaces. */
299/** @def ALT_TAPE The first IDE tape in the system. */
300/** @def MKE2FS_OR_NEWFS @c mke2fs or @c newfs, depending on the OS. */
301/** @def CP_BIN The GNU @c cp binary to use. */
302#ifdef __FreeBSD__
303#define VANILLA_SCSI_CDROM "/dev/cd0"
304#define VANILLA_SCSI_TAPE "/dev/sa0"
305#define VANILLA_USB_DEVICE "tobegivenbybsdguru"
306#define DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE "/dev/vinum/"
307#define RAID_DEVICE_STUB DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE
308#define SANE_FORMATS "swap image msdosfs nfs ntfs ntfs-3g raid lvm ffs ufs ext2fs"
309#define ALT_TAPE "/dev/ast0"
310#define MKE2FS_OR_NEWFS "newfs"
311#define CP_BIN "gcp"
312#else
313#define VANILLA_SCSI_CDROM "/dev/scd0"
314#define VANILLA_SCSI_TAPE "/dev/st0"
315#define VANILLA_USB_DEVICE "/dev/hda"
316#define DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE "/dev/md"
317#define RAID_DEVICE_STUB DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE
318#define SANE_FORMATS "swap image vfat ext2 ext3 ext4 xfs vfs jfs reiserfs vmfs dos minix coda fuse.sshfs nfs nfs4 ntfs ntfs-3g hpfs raid lvm cifs ocfs ocfs2 btrfs"
319#define ALT_TAPE "/dev/ht0"
320#define MKE2FS_OR_NEWFS "mke2fs"
321#define CP_BIN "cp"
322#endif
323
324
325/**
326 * The template for a filelist filename.
327 * The first argument (%s) is the tempdir and the second (%d) is the filelist number.
328 */
329#define FILELIST_FNAME_RAW_SZ "%s/filelist.%ld"
330
331#define XATTR_LIST_FNAME_RAW_SZ "%s/xattr_list.%ld.gz"
332#define XATTR_BIGGLST_FNAME_RAW_SZ "%s/xattr_list.big.gz"
333#define ACL_LIST_FNAME_RAW_SZ "%s/acl_list.%ld.gz"
334#define ACL_BIGGLST_FNAME_RAW_SZ "%s/acl_list.big.gz"
335
336#define BIGGIEMAXSIZE 64L*1024L
337/**
338 * The template for an afioball filename.
339 * The first argument (%s) is the tempdir and the second (%d) is the filelist number.
340 */
341#define AFIOBALL_FNAME_RAW_SZ (bkpinfo->use_star)?"%s/tmpfs/%ld.star.%s":"%s/tmpfs/%ld.afio.%s"
342#define ARCH_THREADS 2 ///< The number of simultaneous threads running afio in the background.
343#define ARCH_BUFFER_NUM (ARCH_THREADS*4) // Number of permissible queued afio files
344#define FORTY_SPACES " " ///< 40 spaces.
345#define DO_MBR_PLEASE "/tmp/DO-MBR-PLEASE"
346#define MONDO_MNTLISTCHG "/tmp/mountlist.changed"
347
348
349/**
350 * Compatibility define to change log_it() calls to log_debug_msg() calls.
351 */
352#define log_it(format, args...) log_debug_msg(2, __FILE__, __FUNCTION__, __LINE__, format, ## args)
353
354/**
355 * Macro to log a message along with file, line, and function information.
356 */
357#define log_msg(level, format, args...) log_debug_msg(level, __FILE__, __FUNCTION__, __LINE__, format, ## args)
358
359#define DEFAULT_DVD_DISK_SIZE 4480 ///< The default size (in MB) of a DVD disk, unless the user says otherwise.
360
361#define DEFAULT_DEBUG_LEVEL 4 ///< By default, don't log messages with a loglevel higher than this.
362
363#define SZ_NTFSPROG_VOLSIZE "1048576" // was 4096
364#define NTFSPROG_PARAMS "-z0 -V" SZ_NTFSPROG_VOLSIZE " -o -b -d -g1"
365
366#define MNT_CDROM "/mnt/cdrom"
367#define MNT_FLOPPY "/mnt/floppy"
368
369#define DEFAULT_MR_LOGLEVEL 4
370
371#endif /* _MY_STUFF_H_ */
Note: See TracBrowser for help on using the repository browser.