libisoburn  1.5.4
About: libisoburn is a frontend for the libraries libburn and libisofs which enables creation and expansion of ISO-9660 filesystems on all media and file types supported by libburn. It implements the API and command interpreter of program xorriso, and installs this program as small dynamically linked binary. xorriso is suitable for incremental data backup and for production of bootable ISO 9660 images. A statically linked version is available as GNU xorriso.
  Fossies Dox: libisoburn-1.5.4.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

xorriso_private.h
Go to the documentation of this file.
1 
2 /* Command line oriented batch and dialog tool which creates, loads,
3  manipulates and burns ISO 9660 filesystem images.
4 
5  Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
6 
7  Provided under GPL version 2 or later.
8 
9  This file contains inner declarations of xorriso.
10  The public interface is in xorriso.h
11 */
12 
13 
14 /* For now, #ifdef Xorriso_is_xorriso_selF has no meaning.
15  But it is already now to be set only by the xorriso.c module.
16 */
17 
18 #ifndef Xorriso_private_includeD
19 #define Xorriso_private_includeD yes
20 
21 
22 /* <<< Disable this to disable pthread_mutex locking on message and result
23  output.
24 */
25 #define Xorriso_fetch_with_msg_queueS yes
26 
27 
28 /* for uint32_t */
29 #ifdef HAVE_STDINT_H
30 #include <stdint.h>
31 #else
32 #ifdef HAVE_INTTYPES_H
33 #include <inttypes.h>
34 #endif
35 #endif
36 
37 /* for pthread_mutex_t on OpenBSD */
38 #include <pthread.h>
39 
40 
41 /** The source code release timestamp */
42 #include "xorriso_timestamp.h"
43 #ifndef Xorriso_timestamP
44 #define Xorriso_timestamP "-none-given-"
45 #endif
46 
47 /** The binary build timestamp is to be set externally by the compiler
48  or by a macro definition in xorriso_buildstamp.h.
49 */
50 #include "xorriso_buildstamp.h"
51 #ifndef Xorriso_build_timestamP
52 #define Xorriso_build_timestamP "-none-given-"
53 #endif
54 
55 
56 #include "sfile.h"
57 #include "misc_funct.h"
58 
59 
60 struct ExclusionS; /* List of -not_* conditions */
61 struct PermiteM; /* Stack of temporarily altered access permissions */
62 struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
63 struct SectorbitmaP; /* Distiniction between valid and invalid sectors */
64 struct FindjoB; /* Program and status of a find run */
65 
66 
67 /* maximum number of history lines to be reported with -status:long_history */
68 #define Xorriso_status_history_maX 100
69 
70 
71 /** The list of startup file names */
72 #define Xorriso_rc_nuM 4
73 
74 
75 /* Default setting for the size limit of single data files:
76  100 extents with 4 GB - 2 kB each = 400 GB - 200 kB
77 */
78 #define Xorriso_default_file_size_limiT \
79  (((off_t) 400) * ((off_t) 1024*1024*1024) - (off_t) 204800)
80 
81 
82 /* Maximum number of appended partitions. Effectively usable number depends
83  on system area type.
84 */
85 #define Xorriso_max_appended_partitionS 8
86 
87 
88 /*
89  Maximum length of a disc label text plus 1.
90 */
91 #define Xorriso_disc_label_sizE 129
92 
93 
94 struct XorrisO { /* the global context of xorriso */
95 
97 
98  /* source */
101  int no_rc;
102 
103  /* Command line argument emulations:
104  0=xorriso mode
105  1=mkisofs mode
106  2=cdrecord mode
107  */
109 
110  /** List of startupfiles */
113 
115 
116  /* Whether .mkisofsrc has already been read */
118 
119  char wdi[SfileadrL];
120  char wdx[SfileadrL];
122 
124  off_t split_size;
125 
126  char list_delimiter[81];
127 
128  /* >>> put libisofs aspects here <<< */
129 
130  int ino_behavior; /* bit0= at image load time:
131  Do not load PX inode numbers but generate new
132  unique ones for all loaded IsoNode.
133  bit1= at image generation time:
134  Do not consolidate suitable nodes to hardlinks.
135  bit2= at restore-to-disk time:
136  Do not consolidate suitable nodes to hardlinks.
137  bit3= with update:
138  Do not try to detect hardlink splits and joinings.
139  bit4= with extract:
140  Do not create or use hln arrays if sort_lba_on
141  bit5= with command -lsl
142  Do not create hln array for hard link count
143  */
144 
149  int do_fat;
152  int ecma119_map; /* 0=unmapped , 1=stripped , 2=uppercase , 3=lowercase */
153  int joliet_map; /* 0=unmapped , 1=stripped */
154 
155  int do_aaip; /* bit0= ACL in
156  bit1= ACL out
157  bit2= EA in
158  bit3= EA out
159  bit4= record dev,inode per node, isofs_st_out in root
160  bit5= check dev,inode,isofs_st_in
161  bit6= omit content check if bit5 check is conclusive
162  bit7= omit dev check with bit5
163  bit8= store output charset in xattr "isofs.cs"
164  bit9= set input charset from xattr "isofs.cs"
165  bit10= if bit2: import from local filesystem all xattr
166  namespaces, not only "user."
167  if bit3: export to local filesystem all xattr
168  namespaces, not only "user."
169  */
170 
171  int do_md5; /* bit0= read MD5 array
172  bit1= write session MD5
173  bit2= write MD5 for each data file
174  bit3= make file content stability check by double reading
175  bit4= use recorded MD5 as proxy of ISO file
176  bit5= with bit0: do not check tags of superblock,tree,session
177  bit6= during extraction verify file content by recorded MD5
178  bit7= with bit6: take lack of MD5 as error
179  */
180 
181  int no_emul_toc; /* bit0= On overwritables:
182  write first session to LBA 0 rather than 32.
183  */
184 
185  int do_old_empty; /* See -compliance old_empty
186  own data content: range [0,31]. The new way is to have
187  a dedicated block to which all such files will point.
188  */
189 
194 
195  int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
196  int allow_dir_id_ext_dflt; /* -compliance allow_dir_id_ext still on default */
197  char rr_reloc_dir[256];
209  uid_t global_uid;
211  gid_t global_gid;
215 
216  int do_tao; /* 1= Use TAO or Incremental
217  -1= Use SAO or DAO
218  0= let libburn choose */
219 
222 
228  int zisofs_v2_enabled; /* 0=no, 1=as_needed, 2=force */
240 
241  int do_overwrite; /* 0=off, 1=on, 2=nondir */
242  int do_reassure; /* 0=off, 1=on, 2=tree */
243 
244  uint32_t isofs_size; /* Size of loaded ISO filesystem */
245  int isofs_has_what; /* bit0= hasRR
246  bit1= hasJoliet
247  bit2= hasIso1999
248  bit3= hasElTorito
249  */
250  int tree_loaded; /* 0= ISO 9660 , 1 = Joliet , 2 = ISO 9660:1999 */
251  int rr_loaded; /* 1= Rock Ridge information was used, 0= Not */
252 
253  char volid[33];
255  char loaded_volid[33];
258 
259  char preparer_id[129];
260 
261  char publisher[129];
262  char application_id[129];
263  char system_id[33];
264  char volset_id[129];
265 
266  char copyright_file[38];
267  char biblio_file[38];
268  char abstract_file[38];
269 
271 
275 
276  /* >>> put libburn/isoburn aspects here */
277 
281 
282  int toc_emulation_flag; /* bit0= bit3 for isoburn_drive_aquire()
283  scan -ROM profiles for ISO sessions
284  bit1= bit4 for isoburn_drive_aquire()
285  do not emulate TOC on overwritable media
286  bit2= bit7 for isoburn_drive_aquire()
287  pretend any media to be -ROM
288  bit3= bit9 for isoburn_drive_aquire()
289  Ignore enclosing session at LBA 0
290  */
291 
292  int image_start_mode; /* From what address to load the ISO image
293  bit0-15= addressing mode
294  0= automatic lba as deduced from media
295  1= value is session number
296  2= value is track number
297  3= value is lba
298  bit16= with mode 3 : value is possibly 16 too high.
299  Let isoburn_set_msc1() adjust it.
300  bit30= interference with normal msc1 processing
301  is enabled. Without this bit,
302  isoburn_set_msc1() will not be called.
303  bit31= image loading has happened,
304  setting is kept for rollback only.
305  Always apply as 0=auto.
306  */
307  char image_start_value[81]; /* value according image_start_mode */
308 
309  uint32_t displacement;
311 
312  int read_fs; /* bit0=norock , bit1=nojoliet */
313 
314  int drives_exclusive; /* burn_preset_device_open() param exclusive */
315  int drives_access; /* 0=readonly , 1=unrestricted */
316 
317  int linux_scsi_dev_family; /* 0= default, 1= sr, 2= scd, (3= st), 4= sg */
318 
319  int early_stdio_test; /* For burn_allow_drive_role_4():
320  bit1= Test whether a stdio drive can be opened for
321  read-write resp. read-only resp. write only.
322  bit2= Classify files which cannot be opened at all
323  as role 0 : useless dummy.
324  bit3= Classify non-empty role 5 drives as
325  BURN_DISC_APPENDABLE with NWA after the
326  end of the file. It is nevertheless
327  possible to change this address by call
328  burn_write_opts_set_start_byte().
329  */
330 
331  int cache_num_tiles; /* -data_cache_size */
333  int cache_default; /* bit0= cache_num_tiles, bit1= cache_tile_blocks */
334 
335  int do_calm_drive; /* bit0= calm down drive after acquiring it */
336 
338  void *in_drive_handle; /* interpreted only by libburnia oriented modules */
339  void *in_volset_handle; /* interpreted only by libburnia oriented modules */
340  char *in_charset; /* The charset to interpret the filename bytes */
342  int indev_access; /* see drives_access */
343  char indev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(indev)
344  when indev gets acquired. */
345 
346  time_t isofs_st_out; /* A time point at least 1 second before image
347  composition began. To be stored with image as
348  xattr "isofs.st". */
349  time_t isofs_st_in; /* That time point as read from "isofs.st" of the
350  loaded image. */
351 
352  int volset_change_pending; /* whether -commit would make sense
353  0= no change pending
354  1= change pending
355  2= change pending, but -as misofs -print-size
356  was performed on the changed image model
357  3= change pending, but the attempt to write it
358  failed
359  */
360  int no_volset_present; /* set to 1 on first failure */
361 
363  int check_media_bad_limit; /* values defined as Xorriso_read_quality_* */
364  struct SectorbitmaP *in_sector_map; /* eventual sector validity bitmap */
365 
366 
368  void *out_drive_handle; /* interpreted only by xorrisoburn.c */
369  char *out_charset; /* The charset to produce the filename bytes for */
370  int dev_fd_1; /* The fd which substitutes for /dev/fd/1 and is
371  connected to externaly perveived stdout.
372  */
374  int outdev_access; /* see drives_access */
375  char outdev_off_adr[SfileadrL]; /* Result of burn_drive_convert_fs_adr(outdev)
376  when outdev gets acquired. */
377 
378  int grow_blindly_msc2; /* if >= 0 this causes growing from drive to drive.
379  The value is used as block address offset for
380  image generation. Like in: mkisofs -C msc1,msc2
381  */
382 
384  int do_dummy;
385  int do_close;
386  int auto_close; /* Whether to let do_close depend on media state */
387 
388  int write_speed; /* Write speed in libburn units : 1000 bytes/second ,
389  0 = Max, -1 = Min, -2= do not set */
390  int read_speed; /* Read speed. See above */
391  int read_speed_force; /* >0 : use burn_nominal_slowdown() in
392  Xorriso_check_interval() */
393  int read_speed_corr; /* parameter max_corr for burn_nominal_slowdown */
394 
395  int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
396  int padding; /* number of bytes to add after ISO 9660 image */
397  int do_padding_by_libisofs; /* 0= by libburn , 1= by libisofs */
398 
399  int alignment; /* if > 0 : output size alignment in 2048 byte blocks.
400  This is always done by libburn, i.e. attached
401  outside the image. Eventual inner alignment of
402  the image end happens first.
403  */
404 
405  int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
406  >=16 means yes with number as start LBA */
407 
408  int dvd_obs; /* DVD write chunk size: 0, 32k or 64k */
409 
410  int modesty_on_drive; /* "enable" of burn_drive_set_buffer_waiting()
411  0= disable , 1= enable waiting ,
412  (-1 = do not change setting)
413  */
414  int min_buffer_usec; /* The other parameters for this function */
419 
420  int use_immed_bit; /* 1= on , 0= default , -1 = off */
421  int use_immed_bit_default; /* 1= on , 0= yet undefined , -1 = off */
422 
423  int stdio_sync; /* stdio fsync interval: -1, 0, >=32 */
424  int stdio_sync_is_default; /* 1= is still default , 0= has been set */
425 
428  int boot_image_cat_hidden; /* bit0= hidden in ISO/RR , bit1= in Joliet ,
429  bit2= in HFS+ */
430  int boot_count; /* number of already attached boot images */
431 
435  int patch_isolinux_image; /* bit0= boot-info-table , bit1= not with EFI
436  bit2-7= Mentioning in isohybrid GPT
437  1=EFI, 2=HFS+
438  bit8= Mention in isohybrid Apple Partition Map
439  bit9= GRUB2 boot provisions (patch at byte 1012)
440  */
441  int boot_image_emul; /* 0=no emulation
442  1=emulation as hard disk
443  2=emulation as floppy
444  */
445  int boot_emul_default; /* 1= boot_image_emul is still default */
447  int boot_img_size_default; /* 1= boot_image_load_size is still default */
448  int boot_img_full_size; /* 1= override boot_image_load_size by image size */
449  unsigned char boot_id_string[29];
450  unsigned char boot_selection_crit[21];
451 
452  int boot_image_isohybrid; /* 0=off , deprecated: 1=auto , 2=on , 3=force */
453 
454  int boot_efi_default; /* 0= no effect ,
455  1= apply --efi-boot parameters when attaching to img
456  */
457 
460  int system_area_options; /* bit0= "GRUB protective msdos label"
461  (a simple partition table)
462  bit1= isohybrid boot image pointer
463  and partition table
464  bit2-7= System area type
465  0= with bit0 or bit1: MBR
466  else: unspecified type
467  1= MIPS Big Endian Volume Header
468  2= MIPS Little Endian Boot Block
469  3= SUN Disk Label for SUN SPARC
470  4= HP-PA PALO boot sector
471  header version 4
472  5= HP-PA PALO boot sector
473  header version 5
474  bit8-9= Only with System area type 0
475  Cylinder alignment mode
476  0 = auto (align if bit1)
477  1 = always align
478  2 = never align
479  3 = align external partitions
480  bit10-13= System area sub type
481  With type 0 = MBR:
482  Gets overridden by bit0 and bit1.
483  0 = no particular sub type
484  1 = CHRP: A single MBR partition
485  of type 0x96 covers the ISO
486  image. Not compatible with
487  any other feature which
488  needs to have own MBR
489  partition entries.
490  2 = generic MBR
491  bit14= Only with System area type 0
492  GRUB2 boot provisions:
493  Patch system area at byte 92 to
494  99 with 512-block address + 1
495  of the first boot image file.
496  Little-endian 8-byte.
497  Should be combined with
498  options bit0.
499  bit15= Only with MBR:
500  Enforce MBR "bootable/active"
501  flag. In worst case by dummy
502  partition of type 0x00 which
503  occupies block 0.
504  */
505  int patch_system_area; /* Bits as of system_area_options.
506  to be applied to the loaded system
507  area of the image, if no
508  system_area_disk_path and no
509  system_area_options are set.
510  */
511 
512  /* The number of unclaimed 2K blocks before start of partition 1 as of
513  the MBR in system area.
514  If not 0 this will cause double volume descriptor sets and double tree.
515  */
517  /* Partition table parameter: 1 to 63, 0= disabled/default */
519  /* 1 to 255, 0= disabled/default */
521 
522  /* Disk file paths of content of PreP partition and EFI system partition */
525 
526  /* Path and type of image files to be appended as MBR partitions */
530  /* Flags in case that appended partitions show up in GPT:
531  bit0= appended_part_type_guids is valid
532  */
534  /* If 1: With appended partitions: create protective MBR and mark by GPT */
536  /* If 1: With appended partitions: mark by APM */
538 
539  /* If 1: Apply isohybrid gestures to non-isohybrid situations */
541 
542  /* MBR partition type of ISO filesystem partition or protective partition
543  if not real GPT or CHRP.
544  */
546  uint8_t iso_gpt_type_guid[16];
548  /* Flags in case that the partition table is GPT:
549  bit0= iso_gpt_type_guid is valid
550  */
551 
552  /* See libisoburn.h isoburn_igopt_set_gpt_guid() */
553  uint8_t gpt_guid[16];
555 
556  /* Eventual name of the non-ISO aspect of the image. E.g. SUN ASCII label.
557  */
559 
560  /* A data file of which the position and size shall be written after
561  a SUN Disk Label.
562  */
564 
565  /* HFS+ image serial number.
566  00...00 means that it shall be generated by libisofs.
567  */
568  uint8_t hfsp_serial_number[8];
569 
570  /* Allocation block size of HFS+ and APM : 0= auto , 512, or 2048
571  */
574 
575  /* User settable PVD time stamps */
580  /* To eventually override vol_modification_time by unconverted string
581  and timezone 0 */
582  char vol_uuid[17];
583  /* To flatly set all file timestamps to the same value
584  Special value: "set_to_mtime", see -find action "set_to_mtime"
585  */
586  char all_file_dates[80];
587 
588  /* Timestamp for ISO files which have no origin file on disk and thus
589  normally get time(NULL) as timestamps
590  */
593 
594 #ifdef Xorriso_with_libjtE
595  /* Parameters and state of Jigdo Template Export environment */
596  struct libjte_env *libjte_handle;
597 #endif
598 
599  /* List of -jigdo parameters since the most recent -jigdo clear */
602  int libjte_params_given; /* bits: 0= outfile , 1= verbosity , 2= template_path
603  3= jigdo_path , 4= checksum_path
604  5= min_size , 6= checksum_iso
605  7= checksum_template , 8= compression
606  9= exclude , 10= demand_checksum
607  11= mapping , 12= checksum_algorithm
608  */
609 
610  /* LBA of boot image after image loading */
612  /* Path of the catalog node after image loading */
614 
615  /* XORRISO options */
616  int allow_graft_points; /* if not zero: yes
617  special options:
618  bit1= unescape '\\' too,
619  continue unescaping after first real '='
620  */
621 
622  int allow_restore; /* -2=disallowed until special mode "unblock"
623  -1=permanently disallowed
624  0=disallowed, 1=allowed, 2=device files allowed */
625  int do_concat_split; /* 1= restore complete split file directories as
626  regular files
627  */
628  int do_auto_chmod; /* 1= eventually temporarily open access permissions
629  of self-owned directories during restore
630  */
631  int do_restore_sort_lba; /* 1= restore via node_array rather than via
632  tree traversal. Better read performance,
633  no directory mtime restore, needs do_auto_chmod
634  */
635  int do_strict_acl; /* bit0= do not tolerate inappropriate presence or
636  absence of directory "default" ACL
637  */
638 
639  int mount_opts_flag; /* bit0= "shared" = not "exclusive"
640  Try to emit non-exclusive mount command.
641  Do not give up drives.
642  Linux: use loop device even on block devices
643  in order to circumvent the ban to mount a
644  device twice (with different sbsector=)
645  FreeBSD: ?
646  */
647 
648  int dialog; /* 0=off , 1=single-line , 2=multi-line */
649 
650  struct Xorriso_lsT *buffered_dialog; /* If not NULL : read by dialog */
651 
653  /* whether to run input through Sfile_bsl_interpreter():
654  bit0-1= dialog and quoted file reading
655  0= no interpretation, leave unchanged
656  1= only inside double quotes
657  2= outside single quotes
658  3= everywhere
659  bit2-3= reserved as future expansion of bit0-1
660  bit4= interpretation within program start arguments
661  bit5= perform backslash encoding with results
662  bit6= perform backslash encoding with info texts
663  */
664 
665  int sh_style_result; /* Whether not to wrap into quotation marks the file
666  addresses reported by:
667  pwd pwdx ls lsd lsl lsdl lsx lsdx lslx lsdlx
668  du dus dux dusx findx find
669  and to make du* numbers left adjusted,
670  and not to append "/" to pwd*
671  */
672 
673  /* Pattern matching facility. It still carries legacy from scdbackup/askme.c
674  but is fully functional for xorriso.
675  */
677  /* 0= start text
678  1= fgrep ,
679  2= regular expression
680  3= (eventually structured) shell parser expression
681  4= shell parser expression for leaf name
682  */
683 
685  /* 0= flat text search
686  1= '/' is a significant separator that cannot be matched by wildcards
687  ( 2= like 1 : but report only occurrence in tree, no payload, no location )
688  ( 3= like 2 : but report first content level of matching directories )
689  4= actually not structured but unique find mode (with search_mode 4)
690  */
691 
692  int do_iso_rr_pattern; /* 0=off, 1=on, 2=ls */
693  int do_disk_pattern; /* 0=off, 1=on, 2=ls */
694 
696 
699 
701  int disk_excl_mode; /* bit0= on (else off)
702  bit1= parameter too (else recursion only)
703  bit2= whole subtree banned (else only exact path)
704  bit3= when comparing ignore excluded files rather
705  than to treat them as truly missing on disk
706  */
707 
711 
712  int use_stdin; /* use raw stdin even if readline support is compiled */
713  int tolerate_stdin_eof; /* Do not abort on EOF in Xorriso_dialog_input
714  but rather return -2. */
717  char mark_text[SfileadrL]; /* ( stdout+stderr, M: ) */
719  char logfile[4][SfileadrL];
720  FILE *logfile_fp[4];
721  FILE *pktlog_fp;
722  FILE *stderr_fp;
725  int msglist_flags[Xorriso_max_outlist_stacK]; /* bit0= result is redirected
726  bit1= info is redirected
727  */
729 
732  pthread_mutex_t lib_msg_queue_lock;
733  pthread_mutex_t result_msglists_lock;
734 
736  pthread_mutex_t write_to_channel_lock;
737 
739  pthread_mutex_t msg_watcher_lock;
740  int msg_watcher_state; /* 0= inactive
741  1= registered
742  2= started
743  3= request to end
744  */
745  int (*msgw_result_handler)(void *handle, char *text);
747  int (*msgw_info_handler)(void *handle, char *text);
750  int msgw_msg_pending; /* 0=no, 1=fetching(i.e. maybe) , 2=yes */
752  pthread_mutex_t msgw_fetch_lock;
753 
756 
757  int status_history_max; /* for -status long_history */
758 
759  /* 0= no logging of SCSI commands, 1= to stderr */
760  int scsi_log;
761 
765  char abort_on_text[20];
766  int abort_on_severity; /* A severity rank number as threshold */
767  int abort_on_is_default; /* will be set to 0 by first -abort_on */
768  int problem_status; /* Severity rank number. 0= no abort condition present */
771  pthread_mutex_t problem_status_lock;
772 
773  char errfile_log[SfileadrL]; /* for -errfile_log */
774  int errfile_mode; /* bit0= marked */
775  FILE *errfile_fp;
776 
777  int img_read_error_mode; /* 0=best_effort , 1=failure , 2=fatal */
778  int extract_error_mode; /* 0=best_effort , 1=keep , 2=delete */
779 
785 
786  /* temporary search facilities */
787  regex_t *re;
788  regmatch_t match[1];
789  char **re_constants;
790  int re_count;
791  int re_fill;
793 
794  /* run state */
795  int run_state; /* 0=preparing , 1=writing image */
798  char pending_option[SfileadrL]; /* eventual option entered at page prompt */
799  int request_to_abort; /* abort a single operation like -ls, not the program */
800  int request_not_to_ask; /* suppress reassure and pager */
801  double idle_time;
802  int re_failed_at; /* mismatch position with structured_search */
804  double insert_count;
805  double insert_bytes;
806  double error_count; /* double will not roll over */
808 
809  /* pacifiers */
810  int pacifier_style; /* 0= xorriso, 1=mkisofs 2=cdrecord */
812  double start_time;
814  /* optional global counters for brain reduced callback functions */
817  off_t pacifier_byte_count; /* auxiliary counter for data bytes */
818  off_t pacifier_prev_count; /* internal counter for speed measurement */
819 
821 
822  int find_compare_result; /* 1=everything matches , 0=mismatch , -1=error */
823  int find_check_md5_result; /* bit0= seen mismatch
824  bit1= seen error
825  bit2= seen data file without MD5
826  bit3= seen match
827  */
828  int find_unique_trunc_result; /* 0= some names are not uniquely truncatable
829  1= all names are uniquely truncatable
830  2= no names need truncation
831  */
832 
833  double last_abort_file_time; /* most recent check for aborting -check_md5 */
834 
835  /* Tree node collection and LBA sorting facility */
838  void **node_array;
841 
842  /* Hardlink matching at restore time memorizes hardlink target paths.
843  Array of nodes sorted by LBA. */
845  void **hln_array;
846  void **hln_targets;
847  int hln_change_pending; /* whether a change was made since hln creation */
848 
849  /* >>> this should count all temp_mem and thus change its name */
851 
852  /* Hardlink matching at update time:
853  Array of all nodes in the tree, sorted by disk dev,ino.
854  Bitmap of nodes which possibly got new hardlink siblings.
855  List of involved disk-iso path pairs. */
856  int di_count;
857  void **di_array;
858  char *di_do_widen;
861 
862  struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
863 
864  /* bit0= update_merge active: mark all newly added nodes as visited+found
865  */
867 
868  /* For find jobs show_hfs_cmd , show_hfs_as_mkisofs
869  */
870  /* bit0= do not record but only count
871  bit1= as_mkisofs mode
872  */
876 
877  /* Extraction to sparse files */
879 
880  /* result (stdout, R: ) */
885 
886 
887  /* info (stderr, I:) */
889 
890 };
891 
892 
893 #include "base_obj.h"
894 #include "aux_objects.h"
895 #include "findjob.h"
896 #include "check_media.h"
897 #include "misc_funct.h"
898 #include "text_io.h"
899 #include "match.h"
900 #include "emulators.h"
901 #include "disk_ops.h"
902 #include "cmp_update.h"
903 #include "parse_exec.h"
904 
905 
906 #endif /* Xorriso_private_includeD */
907 
#define SfileadrL
double insert_bytes
int iso_mbr_part_type
int system_area_options
char publisher[129]
unsigned char boot_id_string[29]
char volset_id[129]
int do_strict_acl
int part_like_isohybrid
int apm_block_size
char list_delimiter[81]
int zisofs_v2_enabled
off_t pacifier_count
int do_follow_mount
int zisofs_by_magic
int libs_are_started
int do_old_empty
struct ExclusionS * joliet_hidings
void ** hln_array
int do_iso_rr_pattern
int msglist_stackfill
pthread_mutex_t result_msglists_lock
uid_t global_uid
int boot_image_cat_hidden
int do_disk_pattern
off_t file_size_limit
pthread_mutex_t msg_watcher_lock
FILE * errfile_fp
int pacifier_style
int64_t zisofs_block_number_target
char boot_image_bin_form[16]
int result_msglists_lock_ini
int result_page_width
int find_unique_trunc_result
uint8_t appended_part_gpt_flags[8]
int do_global_mode
struct Xorriso_lsT * node_img_prefixes
int linux_scsi_dev_family
int outdev_is_exclusive
FILE * pktlog_fp
mode_t global_file_mode
regex_t * re
time_t now_time_override
void * pacifier_fifo
int mkisofsrc_done
double start_time
struct Xorriso_msg_sievE * msg_sieve
struct ExclusionS * disk_exclusions
int displacement_sign
int do_padding_by_libisofs
char preparer_id[129]
int do_rockridge
int session_blocks
mode_t global_dir_mode
int modesty_on_drive
char boot_image_cat_path[4096]
int zisofs_block_size_default
int read_speed_force
int allow_graft_points
int bsl_interpretation
struct Xorriso_lsT * di_disk_paths
int resolve_link_rec_count
double error_count
int errfile_mode
int partition_heads_per_cyl
int allow_restore
char efi_boot_partition[4096]
int keep_boot_image
int structured_search
uint32_t isofs_size
off_t sparse_min_gap
char errfile_log[4096]
char progname[4096]
struct PermiteM * perm_stack
char problem_status_text[20]
struct Xorriso_lsT * node_disk_prefixes
char abstract_file[38]
int library_msg_direct_print
int zisofs_v2_block_size_default
char indev_off_adr[4096]
struct Xorriso_lsT * filters
int do_follow_pattern
off_t split_size
uint8_t gpt_guid[16]
int boot_platform_id
time_t isofs_st_out
struct Xorriso_lsT * di_iso_paths
char indev[4096]
int arrange_args
int show_hfs_cmd_count
uint64_t zisofs_max_file_blocks
void ** di_array
int boot_image_emul
off_t pacifier_byte_count
int problem_status_lock_ini
int early_stdio_test
int do_follow_links
int do_calm_drive
int appended_as_gpt
int isofs_has_what
int img_read_error_mode
int appended_as_apm
time_t vol_effective_time
int rr_reloc_flags
int re_failed_at
int cache_tile_blocks
int untranslated_name_len
int boot_efi_default
char scdbackup_tag_listname[4096]
int find_check_md5_result
char * out_charset
char * di_do_widen
char eternal_problem_status_text[20]
int use_immed_bit
char system_id[33]
int ban_stdio_write
int ino_behavior
uint64_t zisofs_max_total_blocks
char all_file_dates[80]
int status_history_max
regmatch_t match[1]
int lib_msg_queue_lock_ini
int do_overwrite
time_t vol_creation_time
char reg_expr[2 *4096]
int stdio_sync_is_default
int image_start_mode
int zisofs_block_size
int cache_num_tiles
int drives_access
int min_buffer_percent
int prepended_wd
char volid[33]
int boot_img_full_size
char result_line[10 *4096]
int result_page_counter
int volset_change_pending
int sh_style_result
int msg_watcher_lock_ini
struct ExclusionS * iso_rr_hidings
char loaded_boot_cat_path[4096]
int boot_emul_default
int abort_on_severity
int no_volset_present
char scdbackup_tag_written[512]
FILE * stderr_fp
int filter_list_closed
uint8_t hfsp_serial_number[8]
char prep_partition[4096]
struct SectorbitmaP * in_sector_map
gid_t global_gid
struct Xorriso_lsT * info_msglists[Xorriso_max_outlist_stacK]
unsigned char boot_selection_crit[21]
int do_auto_chmod
char * appended_partitions[8]
int drives_exclusive
int bar_is_fresh
int cache_default
int do_restore_sort_lba
char info_text[10 *4096]
uint8_t appended_part_type_guids[8][16]
int do_follow_concat
void ** hln_targets
int max_buffer_usec
char ascii_disc_label[129]
int rc_filename_count
double insert_count
char system_area_disk_path[4096]
uint32_t partition_offset
struct ExclusionS * hfsplus_hidings
int msgw_msg_pending
int grow_blindly_msc2
int do_concat_split
char vol_uuid[17]
int iso_mbr_part_flag
int result_page_length
uint32_t displacement
int boot_img_size_default
char logfile[4][4096]
int min_buffer_usec
int write_to_channel_lock_ini
int mount_opts_flag
double zisofs_bpt_discard_free_ratio
uint8_t iso_gpt_type_guid[16]
int file_name_limit
char abort_on_text[20]
int show_hfs_cmd_flag
int buffer_timeout_sec
int patch_system_area
char rr_reloc_dir[256]
double pacifier_interval
int do_override_now_time
int do_global_gid
int request_to_abort
void ** node_array
pthread_mutex_t problem_status_lock
int follow_link_limit
int(* msgw_result_handler)(void *handle, char *text)
int libjte_params_given
int eternal_problem_status
int tolerate_stdin_eof
char scdbackup_tag_name[81]
char ** show_hfs_cmds
int hfsp_block_size
int volid_default
int argument_emulation
off_t pacifier_prev_count
struct Xorriso_lsT * buffered_dialog
int request_not_to_ask
void * in_volset_handle
char * in_charset
int partition_secs_per_head
int msgw_fetch_lock_ini
void * msgw_info_handle
int iso_level_is_default
char image_start_value[81]
int update_flags
int system_area_clear_loaded
off_t node_targets_availmem
int do_global_uid
char scdbackup_tag_time[19]
pthread_mutex_t lib_msg_queue_lock
int msg_watcher_state
time_t vol_modification_time
int launch_frontend_banned
int outdev_access
char return_with_text[20]
int hln_change_pending
int max_buffer_percent
char boot_image_bin_path[4096]
int node_counter
struct Xorriso_lsT * drive_blacklist
int extract_error_mode
char ** re_constants
void * out_drive_handle
char session_logfile[4096]
uint64_t zisofs_max_total_blocks_default
time_t isofs_st_in
char loaded_volid[33]
int return_with_value
int zlib_level_default
off_t boot_image_load_size
int return_with_severity
char assert_volid[4096]
char initial_wdx[4096]
int check_media_bad_limit
int disk_excl_mode
int resolve_link_rec_limit
int report_about_severity
char wdx[4096]
int zisofs_susp_z2
void * in_drive_handle
int packet_output
char outdev[4096]
pthread_mutex_t write_to_channel_lock
char copyright_file[38]
int find_compare_result
int indev_access
int node_array_size
struct Xorriso_lsT * result_msglists[Xorriso_max_outlist_stacK]
char application_use[4096]
char application_id[129]
char mark_text[4096]
double last_update_time
char report_about_text[20]
int result_line_counter
int do_follow_param
int temp_mem_limit
int zisofs_v2_block_size
int relax_compliance
char assert_volid_sev[80]
void * msgw_result_handle
char grub2_sparc_core[4096]
char rc_filenames[4][4096]
List of startupfiles.
int msglist_flags[Xorriso_max_outlist_stacK]
int abort_on_is_default
int allow_dir_id_ext_dflt
int patch_isolinux_image
uint64_t zisofs_max_file_blocks_default
char outdev_off_adr[4096]
double idle_time
int zisofs_susp_z2_default
int result_open_line_len
off_t pacifier_total
int gpt_guid_mode
struct Xorriso_lsT * jigdo_values
int use_immed_bit_default
int toc_emulation_flag
int do_stream_recording
struct Xorriso_lsT * jigdo_params
int(* msgw_info_handler)(void *handle, char *text)
struct Xorriso_lsT * drive_whitelist
int loaded_boot_bin_lba
char biblio_file[38]
struct CheckmediajoB * check_media_default
int msgw_stack_handle
time_t vol_expiration_time
int indev_is_exclusive
uint8_t appended_part_types[8]
int msg_sieve_disabled
double last_abort_file_time
struct Xorriso_lsT * drive_greylist
int boot_image_isohybrid
char wdi[4096]
int read_speed_corr
FILE * logfile_fp[4]
pthread_mutex_t msgw_fetch_lock
double zisofs_bpt_discard_free_ratio_default
int problem_status
char pending_option[4096]
int did_something_useful
char * text
Definition: aux_objects.h:69
#define Xorriso_max_outlist_stacK
Maximum number of stacked redirections.
Definition: xorriso.h:998
#define Xorriso_max_appended_partitionS
#define Xorriso_disc_label_sizE
#define Xorriso_rc_nuM
The list of startup file names.