source: branches/2.2.2/mondo/src/common/my-stuff.h @ 1315

Last change on this file since 1315 was 1315, checked in by bruno, 12 years ago

Log files are now consistent: mondoarchive.log for mondoarchive (containing also mindi.log) and mondorestore.log for mondorestore (copied from /tmp (ram) to /var/log (disk) at the end of the restore)
One include has been created for each bianry containing only that declaration ofr the moment, but which will be extended to include all local definitions (ps_* e.g.)
Doc updated accordingly
LOGFILE in restore process is now passed in the environment and not duplicated anymore
LogIt? is not redifined either
LOGFILE should be put in environment by mondoarchive for mindi's usage but that's a step left for later.

  • Property svn:keywords set to Id
File size: 15.7 KB
Line 
1/* my-stuff.h
2   $Id: my-stuff.h 1315 2007-04-16 14:13:59Z bruno $
3.
4
5
607/14
7- ARCH_THREADS is now 2; buffers, 4
8
907/10
10- added acl, xattr stuff
11
1206/19
13- added AUX_VER
14
1506/14
16- added DO_MBR_PLEASE
17
1804/17
19- replaced INTERNAL_TAPE_BLK_SIZE with g_internal_tape_block_size
20  and DEFAULT_INTERNAL_TAPE_BLOCK_SIZE
21
2204/13
23- log_msg is now calling standard_log_debug_msg, not the alias (log_debug_msg)
24
2504/03/2004
26- added star and SELINUX support
27
2811/20/2003
29- boot from isolinux.bin, not mindi-boot.2880.img
30
3111/15
32- reduced SLICE_SIZE from 8192 to 4096
33
3410/08
35- set p-i-h volsize to 1GB
36
3710/21
38- added MNT_CDROM and FREELOADER
39
4010/11
41- added DEFAULT_DVD_DISK_SIZE
42- added PARTIMAGE_DEBUG_LEVEL
43
4409/27
45- better logging
46
4709/24
48- added MR_LOGFILE="/tmp/mondo-restore.log"
49
5009/22
51- added bool, FALSE, TRUE
52
5309/20
54- increasd PPCFG_RAMDISK_SIZE to 150
55
5609/12
57- reduced MAX_STR_LEN from 512 to 460
58
5909/10
60- moved PPCFG_RAMDISK_SIZE here
61
6209/05
63- better config.h stuff
64
6506/05
66- changed fgrep to grep
67
6805/19
69- added CP_BIN
70
7105/05
72- added #include <sys/param.h> and sys/sem.h and ioctl.h
73
7405/03
75- added kill_anything_like_this()
76
7704/24/2003
78- added *STUB #define's
79
8011/22/2002
81- added INTERNAL_TAPE_BLK_SIZE
82
8310/10
84- use #define to create XMondo-friendly log file name if appropriate
85
8608/30
87- changed ARBITRARY_MAXIMUM to 512
88
8908/26
90- set MAX_STR_LEN at 512 but halved it within many _structures_
91- changed ARBITRARY_MAXIMUM to 128
92
9308/08
94- added '#include <signal.h>'
95- added WELCOME_STRING
96
9706/19
98- changed tape block size from 8192 to 65536
99
10004/08
101- added manual_cd_tray flag to bkpinfo
102
10303/31
104- added restore_path to struct s_bkpinfo
105
10603/21
107- updated version# to 1.42
108
10902/20
110- added bkpinfo->using_cdstream
111
11202/06
113- added MONDO_VERSION
114
11502/02
116- added MONDO_CFG_FILE
117- added SLICE_SIZE
118
11901/31
120- removed MINDI_HOME: it is unnecessary
121- replaced MONDO_HOME with variable g_mondo_home
122
12301/25
124- added MONDO_HOME, MINDI_HOME
125
12601/21
127- added s_node{} structure
128
12901/17
130- added sys/shm.h, types.h, ipc.h
131
13201/02/2002
133- added that groovy bkpinfo{} stuff
134
13511/29/2001
136- added raidlist{} struct
137
13808/27
139- stuff
140*/
141
142#define HAVE_MALLOC 1
143
144
145// Extra info for ACLs and SELINUX users
146#define STAR_ACL_SZ "-xfflags -acl"
147//#define STAR_ACL_SZ "-xfflags"
148//#define STAR_ACL_SZ ""
149// Enable the first line and disable the second if you are a Fedora Core 2 user
150
151/**
152 * @file
153 * The main header file for Mondo.
154 */
155
156#if !defined(bool) && !defined(__cplusplus)
157/**
158 * Create the illusion of a Boolean type.
159 */
160#define bool int
161#define TRUE 1
162#define FALSE 0
163#endif
164
165#ifndef _MY_STUFF_H_
166#define _MY_STUFF_H_
167
168#ifdef HAVE_CONFIG_H
169#include <config.h>
170#endif
171
172#ifndef __FreeBSD__
173#include <getopt.h>
174#endif
175#include <sys/types.h>
176#include <sys/shm.h>
177#include <sys/ipc.h>
178#include <sys/ioctl.h>
179#include <sys/sem.h>
180#include <sys/param.h>
181#include <stdio.h>
182#include <stdlib.h>
183#ifndef  __USE_FILE_OFFSET64
184#define  __USE_FILE_OFFSET64
185#endif
186#ifndef  __USE_LARGEFILE64
187#define  __USE_LARGEFILE64
188#endif
189#include <sys/stat.h>
190#include <fcntl.h>
191#include <errno.h>
192#include <stddef.h>
193#include <sys/stat.h>
194#include <sys/wait.h>
195#include <time.h>
196#include <unistd.h>
197#include <signal.h>
198//#include <curses.h>
199#include <newt.h>
200#include <ctype.h>
201#include <string.h>
202#include <pthread.h>
203#include <assert.h>
204
205#if defined(DEBUG) && !__cplusplus
206int count;
207char trace_log[255];            /*buffer for logging */
208char *trace_log_ptr;
209#endif                          /* DEBUG */
210
211#define IA64_BOOT_SIZE "8192"   /* Should be coherent with mindi */
212#define STD_PREFIX "mondorescue"    /* Should be coherent with mindi */
213
214/**
215 * The biggielist stub (appended to the directory where all.tar.gz was unpacked).
216 */
217#define BIGGIELIST_TXT_STUB "tmp/biggielist.txt"
218
219/**
220 * The filelist stub (appended to the directory where all.tar.gz was unpacked).
221 */
222#define FILELIST_FULL_STUB "tmp/filelist.full.gz"
223
224/**
225 * The mountlist stub (appended to the directory where all.tar.gz was unpacked).
226 */
227#define MOUNTLIST_FNAME_STUB "tmp/mountlist.txt"
228
229/**
230 * The mondo-restore.cfg stub (appended to the directory where all.tar.gz was unpacked).
231 */
232#define MONDO_CFG_FILE_STUB "tmp/mondo-restore.cfg"
233
234/**
235 * The RAID kernel proc file
236 */
237#define MDSTAT_FILE "/proc/mdstat"
238
239/**
240 * @bug Apparently unused.
241 */
242#define MONDO_TRACEFILE "/var/log/mondo-tracefile.log"
243
244#undef assert
245
246extern void _mondo_assert_fail(const char *file, const char *function,
247                               int line, const char *exp);
248
249/**
250 * An assert macro that calls _mondo_assert_fail() when it fails.
251 */
252#ifdef NDEBUG
253#define assert(exp) ((void)0)
254#else
255#define assert(exp) ((exp)?((void)0):_mondo_assert_fail(__FILE__, __FUNCTION__, __LINE__, #exp))
256#endif
257
258#define CRC_M16 0xA001          ///< Mask for crc16.
259#define CRC_MTT 0x1021          ///< Mask for crc-ccitt.
260
261#define FALSE 0                 ///< The ubiquitous FALSE macro.
262#define TRUE 1                  ///< The even more ubiquitous TRUE macro.
263
264#define SCREEN_LENGTH 25        ///< The default size of the screen.
265#define NOOF_ERR_LINES 6        ///< The number of lines of log output to keep at the bottom of the screen.
266#define ARBITRARY_MAXIMUM 2000  ///< The maximum number of items showing at once in the mountlist or filelist editor.
267#define MAX_TAPECATALOG_ENTRIES 8192    ///< The maximum number of entries in the tape catalog.
268#define MAX_STR_LEN 384         ///< The maximum length of almost all @p char buffers in Mondo.
269                                        ///  Note: Make this divisible by eight to avoid aligment issues
270                                        ///        on 64bit platforms like ia64.
271#define MAXIMUM_RAID_DEVS 32    ///< The maximum number of RAID devices in the raidlist.
272#define MAXIMUM_ADDITIONAL_RAID_VARS 32 ///< The maximum number of additional RAID variables per RAID device in the raidlist.
273#define MAXIMUM_DISKS_PER_RAID_DEV 32   ///< The maximum number of disks per RAID device in the raidtab.
274
275#define RAIDTAB_FNAME "/etc/raidtab"    ///< The filename of the raidtab file, at least on Linux.
276
277#define BLK_START_OF_BACKUP     1   ///< Marker block: start a backup.
278#define BLK_START_OF_TAPE       2   ///< Marker block: start a tape.
279#define BLK_START_AFIOBALLS 10  ///< Marker block: start the afioball section.
280#define BLK_STOP_AFIOBALLS  19  ///< Marker block: stop the afioball section.
281#define BLK_START_AN_AFIO_OR_SLICE      20  ///< Marker block: start an afioball or a slice.
282#define BLK_STOP_AN_AFIO_OR_SLICE   29  ///< Marker block: stop an afioball or a slice.
283#define BLK_START_BIGGIEFILES   30  ///< Marker block: start the biggiefile section.
284#define BLK_STOP_BIGGIEFILES    39  ///< Marker block: stop the biggiefile section.
285#define BLK_START_A_NORMBIGGIE  40  ///< Marker block: start a normal biggiefile.
286#define BLK_START_A_PIHBIGGIE   41  ///< Marker block: start a ntfsprog'd biggiefile
287#define BLK_START_EXTENDED_ATTRIBUTES 45    ///< Marker block: start xattr/acl info
288#define BLK_STOP_EXTENDED_ATTRIBUTES 46 ///< Marker block: stop xattr/acl info
289#define BLK_START_EXAT_FILE     47
290#define BLK_STOP_EXAT_FILE      48
291#define BLK_STOP_A_BIGGIE   59  ///< Marker block: stop a biggiefile.
292#define BLK_START_FILE          80  ///< Marker block: start a file (non-afio or slice).
293#define BLK_STOP_FILE           89  ///< Marker block: stop a file (non-afio or slice).
294#define BLK_END_OF_TAPE         100 ///< Marker block: end of tape.
295#define BLK_END_OF_BACKUP       101 ///< Marker block: end of backup.
296#define BLK_ABORTED_BACKUP      102 ///< Marker block: backup was aborted.
297
298/// The external tape blocksize.
299#ifdef EXTTAPE
300#define TAPE_BLOCK_SIZE (long)EXTTAPE
301#else
302#define TAPE_BLOCK_SIZE 131072L /* was 8192; 06/2002-->65536; 11/2002-->131072 */
303#endif
304
305#define DEFAULT_INTERNAL_TAPE_BLOCK_SIZE 32768  // Nov 2003?
306
307
308
309
310#define SLICE_SIZE 4096         ///< The size of a slice of a biggiefile.
311
312
313
314
315
316
317/**
318 * Determine whether @p x (t_bkptype) is a streaming backup.
319 */
320#define IS_THIS_A_STREAMING_BACKUP(x) (x == tape || x == udev || x == cdstream)
321
322
323/**
324 * @c mkisofs command to generate a nonbootable CD, except for -o option and the directory to image.
325 */
326#define MONDO_MKISOFS_NONBOOT   "mkisofs -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL_Version -V _CD#_"
327
328/**
329 * @c mkisofs command to generate a bootable CD using isolinux, except for -o option and the directory to image.
330 */
331#define MONDO_MKISOFS_REGULAR_SYSLINUX  "mkisofs -J -boot-info-table -no-emul-boot -b isolinux.bin -c boot.cat -boot-load-size 4 -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL_Version -V _CD#_"
332
333/**
334 * @c mkisofs command to generate a bootable CD using LILO, except for -o option and the directory to image.
335 */
336// -b images/mindi-boot.2880.img
337#define MONDO_MKISOFS_REGULAR_LILO      "mkisofs -boot-info-table -no-emul-boot -b isolinux.bin -c boot.cat -boot-load-size 4 -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_"
338
339/**
340 * @c mkisofs command to generate a bootable CD using ELILO, except for -o option and the directory to image.
341 */
342// -b images/mindi-boot.2880.img
343// Should replace 8192 by IA64_BOOT_SIZE
344#define MONDO_MKISOFS_REGULAR_ELILO      "mkisofs -no-emul-boot -b images/mindi-bootroot.8192.img -c boot.cat -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_"
345
346/**
347 * The stub name of the temporary ISO image to create, burn, and remove.
348 */
349#define MONDO_TMPISOS "/temporary.iso"
350
351/**
352 * @c growisofs command to generate a bootable DVD using isolinux, except for the directory to image.
353 */
354#define MONDO_GROWISOFS_REGULAR_SYSLINUX "growisofs -use-the-force-luke -J -no-emul-boot -boot-load-size 4 -b isolinux.bin --boot-info-table -c boot.cat -boot-load-size 4 -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL_Version -V _CD#_ -v"
355
356/**
357 * @c growisofs command to generate a bootable DVD using LILO, except for the directory to image.
358     */// -b images/mindi-boot.2880.img
359#define MONDO_GROWISOFS_REGULAR_ELILO     "growisofs -use-the-force-luke -no-emul-boot -b images/mindi-boot.2880.img -c boot.cat -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
360
361/**
362 * @c growisofs command to generate a bootable DVD using LILO, except for the directory to image.
363     */// -b images/mindi-boot.2880.img
364#define MONDO_GROWISOFS_REGULAR_LILO     "growisofs -no-emul-boot -b isolinux.bin -c boot.cat -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
365
366/**
367 * @c growisofs command to generate a nonbootable DVD, except for the directory to image.
368 */
369#define MONDO_GROWISOFS_NONBOOT          "growisofs -use-the-force-luke -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ -v"
370
371/**
372 * Welcome string displayed at the top of the newt interface.
373 */
374#define WELCOME_STRING "W E L C O M E   T O   M O N D O   R E S C U E"
375
376/**
377 * The maximum length of a filename in the tape catalog.
378 */
379#define MAX_TAPECAT_FNAME_LEN 32
380
381//#define strcpy(y,x) strncpy(y, x, sizeof(y)-1)
382
383
384/**
385 * Assert that (@p x != NULL) and (@p x[0] != '\\0').
386 */
387#define assert_string_is_neither_NULL_nor_zerolength(x) {assert(x!=NULL);assert(x[0]!='\0');}
388
389/**
390 * Log the file, line, Mondo error message, and OS error message (errno).
391 */
392#define log_OS_error(x) {log_msg(0, "%s, line %ld: %s (%s)", __FILE__, __LINE__, x, strerror(errno));}
393
394/**
395 * Assert that (@p x != NULL).
396 */
397#define assert_pointer_is_not_NULL(x) {assert(x!=NULL);}
398
399/**
400 * close() @p x and log a message if it fails.
401 */
402#define paranoid_close(x) {if(close(x)) {log_msg(5, "close err");} x=-999; }
403
404/**
405 * fclose() @p x and log a message if it fails.
406 */
407#define paranoid_fclose(x) {if(fclose(x)) {log_msg(5, "fclose err");} x=NULL; }
408
409/**
410 * pclose() @p x and log a message if it fails.
411 */
412#define paranoid_pclose(x) {if(pclose(x)) {log_msg(5, "pclose err");} x=NULL; }
413
414/**
415 * Run the command @p x and log it if it fails.
416 */
417#define paranoid_system(x) {if(system(x)) log_msg(4, x); }
418
419/**
420 * Free @p x and set it to NULL.
421 */
422#define paranoid_free(x) {if (x != NULL) free(x); x=NULL;}
423
424/**
425 * Free variables and call finish(@p x).
426 */
427#define paranoid_MR_finish(x) {free_MR_global_filenames (); if (g_bkpinfo_DONTUSETHIS) paranoid_free ( g_bkpinfo_DONTUSETHIS ); finish(x); }
428
429/**
430 * Log file, function, line, and @p x.
431 */
432#define iamhere(x) {log_it("%s, %s, %ld: %s", __FILE__, __FUNCTION__, __LINE__, x);}
433
434/**
435 * Yes, we want malloc() to help us fix bugs.
436 */
437#define MALLOC_CHECK_ 1
438
439/**
440 * Malloc @p x to be MAX_STR_LEN bytes and call fatal_error() if we're out of memory.
441 */
442#define malloc_string(x) { x = (char *)malloc(MAX_STR_LEN); if (!x) { fatal_error("Unable to malloc"); } x[0] = x[1] = '\0'; }
443
444/**
445 * Path to the location the hard drive is mounted on during a restore.
446 */
447#define MNT_RESTORING "/mnt/RESTORING"
448
449/** @def VANILLA_SCSI_CDROM The first SCSI CD-ROM in the system (most likely to be the one to write to). */
450/** @def VANILLA_SCSI_TAPE  The first SCSI tape in the system (most likely to be the one towrite to. */
451/** @def DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE A string whose presence in a device name indicates the
452 * inability to check this device for errors in the mountlist. */
453/** @def RAID_DEVICE_STUB The stub of a RAID device (set up RAID if we find it). */
454/** @def SANE_FORMATS Sane formats for this OS, separated by spaces. */
455/** @def ALT_TAPE The first IDE tape in the system. */
456/** @def MKE2FS_OR_NEWFS @c mke2fs or @c newfs, depending on the OS. */
457/** @def CP_BIN The GNU @c cp binary to use. */
458#ifdef __FreeBSD__
459#define VANILLA_SCSI_CDROM  "/dev/cd0"
460#define VANILLA_SCSI_TAPE   "/dev/sa0"
461#define DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE  "/dev/vinum/"
462#define RAID_DEVICE_STUB    DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE
463#define SANE_FORMATS        "swap image msdosfs nfs ntfs raid lvm ffs ufs ext2fs"
464#define ALT_TAPE        "/dev/ast0"
465#define MKE2FS_OR_NEWFS "newfs"
466#define CP_BIN      "gcp"
467#else
468#define VANILLA_SCSI_CDROM  "/dev/scd0"
469#define VANILLA_SCSI_TAPE   "/dev/st0"
470#define DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE  "/dev/md"
471#define RAID_DEVICE_STUB    DONT_KNOW_HOW_TO_EVALUATE_THIS_DEVICE_TYPE
472#define SANE_FORMATS        "swap image vfat ext2 ext3 xfs vfs jfs reiserfs dos minix coda nfs ntfs hpfs raid lvm cifs"
473#define ALT_TAPE        "/dev/ht0"
474#define MKE2FS_OR_NEWFS "mke2fs"
475#define CP_BIN      "cp"
476#endif
477
478
479/**
480 * The template for a filelist filename.
481 * The first argument (%s) is the tempdir and the second (%d) is the filelist number.
482 */
483#define FILELIST_FNAME_RAW_SZ "%s/filelist.%ld"
484
485#define XATTR_LIST_FNAME_RAW_SZ      "%s/xattr_list.%ld.gz"
486#define XATTR_BIGGLST_FNAME_RAW_SZ   "%s/xattr_list.big.gz"
487#define ACL_LIST_FNAME_RAW_SZ        "%s/acl_list.%ld.gz"
488#define ACL_BIGGLST_FNAME_RAW_SZ     "%s/acl_list.big.gz"
489
490/**
491 * The template for an afioball filename.
492 * The first argument (%s) is the tempdir and the second (%d) is the filelist number.
493 */
494#define AFIOBALL_FNAME_RAW_SZ (bkpinfo->use_star)?"%s/tmpfs/%ld.star.%s":"%s/tmpfs/%ld.afio.%s"
495#define ARCH_THREADS 2          ///< The number of simultaneous threads running afio in the background.
496#define ARCH_BUFFER_NUM (ARCH_THREADS*4)    // Number of permissible queued afio files
497#define FORTY_SPACES "                                         "    ///< 40 spaces.
498#define PPCFG_RAMDISK_SIZE 350  ///< Size of the tmpfs, in megabytes, to attempt to mount (to speed up Mondo).
499
500#define DO_MBR_PLEASE "/tmp/DO-MBR-PLEASE"
501
502
503/**
504 * Compatibility define to change log_it() calls to log_debug_msg() calls.
505 */
506#define log_it(format, args...) log_debug_msg(2, __FILE__, __FUNCTION__, __LINE__, format, ## args)
507
508/**
509 * Macro to log a message along with file, line, and function information.
510 */
511#define log_msg(level, format, args...) log_debug_msg(level, __FILE__, __FUNCTION__, __LINE__, format, ## args)
512
513#define DEFAULT_DVD_DISK_SIZE 4380  ///< The default size (in MB) of a DVD disk, unless the user says otherwise.
514
515#define DEFAULT_DEBUG_LEVEL 4   ///< By default, don't log messages with a loglevel higher than this.
516
517#define SZ_NTFSPROG_VOLSIZE "1048576"   // was 4096
518#define NTFSPROG_PARAMS "-z0 -V" SZ_NTFSPROG_VOLSIZE " -o -b -d -g1"
519
520#define MNT_CDROM "/mnt/cdrom"
521#define MNT_FLOPPY "/mnt/floppy"
522
523#define DEFAULT_MR_LOGLEVEL 4
524
525#endif                          /* _MY_STUFF_H_ */
Note: See TracBrowser for help on using the repository browser.