![]() |
Disk ARchive 2.7.18
Full featured and portable backup and archiving tool
|
#include <trivial_sar.hpp>
Inherits libdar::generic_file, libdar::contextual, and libdar::mem_ui.
Public Member Functions | |
| trivial_sar (const std::shared_ptr< user_interaction > &dialog, gf_mode open_mode, const std::string &base_name, const std::string &extension, const entrepot &where, const label &internal_nale, const label &data_name, const std::string &execute, bool allow_over, bool warn_over, bool force_permission, U_I permission, hash_algo x_hash, const infinint &min_digits, bool format_07_compatible) | |
| constructor to build a new single sliced archive | |
| trivial_sar (const std::shared_ptr< user_interaction > &dialog, const std::string &pipename, bool lax) | |
| constructor to read a (single sliced) archive from a pipe | |
| trivial_sar (const std::shared_ptr< user_interaction > &dialog, int filedescriptor, bool lax) | |
| trivial_sar (const std::shared_ptr< user_interaction > &dialog, generic_file *f, const label &internal_name, const label &data_name, bool format_07_compatible, const std::string &execute) | |
| constructor to write a (single sliced) archive to a anonymous pipe | |
| trivial_sar (const trivial_sar &ref)=delete | |
| copy constructor (disabled) | |
| trivial_sar (trivial_sar &&ref) noexcept=delete | |
| move constructor | |
| trivial_sar & | operator= (const trivial_sar &ref)=delete |
| assignment operator (disabled) | |
| trivial_sar & | operator= (trivial_sar &&ref) noexcept=delete |
| move operator | |
| ~trivial_sar () | |
| destructor | |
| virtual bool | skippable (skippability direction, const infinint &amount) override |
| whether the implementation is able to skip | |
| virtual bool | skip (const infinint &pos) override |
| skip at the absolute position | |
| virtual bool | skip_to_eof () override |
| skip to the end of file | |
| virtual bool | skip_relative (S_I x) override |
| skip relatively to the current position | |
| virtual bool | truncatable (const infinint &pos) const override |
| whether the implementation is able to truncate to the given position | |
| virtual infinint | get_position () const override |
| get the current read/write position | |
| virtual bool | is_an_old_start_end_archive () const override |
| returns whether the archive is a old archive (format < 8) | |
| virtual const label & | get_data_name () const override |
| obtain the data_name of the archive (label associated with the archive's data) | |
| const infinint & | get_slice_header_size () const |
| size of the slice header | |
| void | disable_natural_destruction () |
| disable execution of user command when destroying the current object | |
| void | enable_natural_destruction () |
| enable back execution of user command when destroying the current object | |
Public Member Functions inherited from libdar::generic_file | |
| generic_file (gf_mode m) | |
| main constructor | |
| generic_file (const generic_file &ref) | |
| copy constructor | |
| generic_file (generic_file &&ref) noexcept | |
| move constructor | |
| generic_file & | operator= (const generic_file &ref) |
| assignment operator | |
| generic_file & | operator= (generic_file &&ref) noexcept |
| move operator | |
| ~generic_file () noexcept(false) | |
| virtual destructor, | |
| void | terminate () |
| destructor-like call, except that it is allowed to throw exceptions | |
| bool | operator== (generic_file &ref) |
| bool | operator!= (generic_file &ref) |
| gf_mode | get_mode () const |
| retreive the openning mode for this object | |
| void | read_ahead (const infinint &amount) |
| void | ignore_read_ahead (bool mode) |
| virtual U_I | read (char *a, U_I size) override |
| read data from the generic_file inherited from proto_generic_file | |
| virtual void | write (const char *a, U_I size) override |
| write data to the generic_file inherited from proto_generic_file | |
| void | write (const std::string &arg) |
| write a string to the generic_file | |
| S_I | read_back (char &a) |
| skip back one char, read on char and skip back one char | |
| S_I | read_forward (char &a) |
| read one char | |
| virtual void | truncate (const infinint &pos) |
| truncate file at the given offset | |
| virtual void | copy_to (generic_file &ref) |
| copy all data from current position to the object in argument | |
| virtual void | copy_to (generic_file &ref, const infinint &crc_size, crc *&value) |
| copy all data from the current position to the object in argument and computes a CRC value of the transmitted data | |
| U_32 | copy_to (generic_file &ref, U_32 size) |
| small copy (up to 4GB) with CRC calculation | |
| infinint | copy_to (generic_file &ref, infinint size) |
| copy the given amount to the object in argument | |
| bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value) |
| compares the contents with the object in argument | |
| bool | diff (generic_file &f, const infinint &me_read_ahead, const infinint &you_read_ahead, const infinint &crc_size, crc *&value, infinint &err_offset) |
| void | reset_crc (const infinint &width) |
| reset CRC on read or writen data | |
| bool | crc_status () const |
| to known whether CRC calculation is activated or not | |
| crc * | get_crc () |
| get CRC of the transfered date since last reset | |
| void | sync_write () |
| write any pending data | |
| void | flush_read () |
| be ready to read at current position, reseting all pending data for reading, cached and in compression engine for example | |
Public Member Functions inherited from libdar::proto_generic_file | |
| proto_generic_file (const proto_generic_file &ref)=default | |
| copy constructor | |
| proto_generic_file (proto_generic_file &&ref) noexcept=default | |
| move constructor | |
| proto_generic_file & | operator= (const proto_generic_file &ref)=default |
| assignment operator | |
| proto_generic_file & | operator= (proto_generic_file &&ref) noexcept=default |
| move operator | |
| virtual | ~proto_generic_file () noexcept(false) |
| virtual destructor | |
Public Member Functions inherited from libdar::contextual | |
| contextual (const contextual &ref)=default | |
| contextual (contextual &&ref) noexcept=default | |
| contextual & | operator= (const contextual &ref)=default |
| contextual & | operator= (contextual &&ref) noexcept=default |
| virtual void | set_info_status (const std::string &s) |
| defines the new contextual value | |
| virtual std::string | get_info_status () const |
| get the current contextual value | |
Protected Member Functions | |
| virtual void | inherited_read_ahead (const infinint &amount) override |
| tells the object that several calls to read() will follow to probably obtain at least the given amount of data | |
| virtual U_I | inherited_read (char *a, U_I size) override |
| implementation of read() operation | |
| virtual void | inherited_write (const char *a, U_I size) override |
| implementation of the write() operation | |
| virtual void | inherited_truncate (const infinint &pos) override |
| truncate file at the give offset | |
| virtual void | inherited_sync_write () override |
| write down any pending data | |
| virtual void | inherited_flush_read () override |
| reset internal engine, flush caches in order to read the data at current position | |
| virtual void | inherited_terminate () override |
| destructor-like call, except that it is allowed to throw exceptions | |
Protected Member Functions inherited from libdar::generic_file | |
| void | set_mode (gf_mode x) |
| bool | is_terminated () const |
Protected Member Functions inherited from libdar::mem_ui | |
| user_interaction & | get_ui () const |
| get access to the user_interaction object | |
| std::shared_ptr< user_interaction > | get_pointer () const |
| get access to the shared_ptr pointing to the user_interaction | |
| mem_ui (const std::shared_ptr< user_interaction > &dialog) | |
| constructor | |
| mem_ui (const mem_ui &ref)=default | |
| the copy constructor | |
| mem_ui (mem_ui &&ref) noexcept=default | |
| the move constructor | |
| mem_ui & | operator= (const mem_ui &ref)=default |
| assignement operator | |
| mem_ui & | operator= (mem_ui &&ref) noexcept=default |
| move operator | |
| virtual | ~mem_ui () noexcept(false) |
| destructor | |
Private Member Functions | |
| void | init (const label &internal_name) |
| write the slice header and set the offset field (write mode), or (read-mode), reads the slice header an set offset field | |
| void | where_am_i () |
Private Attributes | |
| generic_file * | reference |
| points to the underlying data, owned by "this" | |
| infinint | offset |
| offset to apply to get the first byte of data out of SAR headers | |
| infinint | cur_pos |
| current position as returned by get_position() | |
| infinint | end_of_slice |
| when end of slice/archive is met, there is an offset by 1 compared to the offset of reference. end_of_slice is set to 1 in that situation, else it is always equal to zero | |
| std::string | hook |
| command to execute after slice writing (not used in read-only mode) | |
| std::string | base |
| basename of the archive (used for string susbstitution in hook) | |
| std::string | ext |
| extension of the archive (used for string substitution in hook) | |
| label | of_data_name |
| archive's data name | |
| bool | old_sar |
| true if the read sar has an old header (format <= "07") or the to be written must keep a version 07 format. | |
| infinint | min_digits |
| minimum number of digits in slice name | |
| std::string | hook_where |
| what value to use for p substitution in hook | |
| std::string | base_url |
| what value to use for u substitution in hook | |
| bool | natural_destruction |
| whether user command is executed once the single sliced archive is completed (disable upon user interaction) | |
Additional Inherited Members | |
Public Types inherited from libdar::generic_file | |
| enum | skippability { skip_backward , skip_forward } |
"trivial sar" proposes the same interface a sar but does the work slightly differently using different constructors
depending on the constructor used trivial sar can:
Definition at line 53 of file trivial_sar.hpp.
| libdar::trivial_sar::trivial_sar | ( | const std::shared_ptr< user_interaction > & | dialog, |
| gf_mode | open_mode, | ||
| const std::string & | base_name, | ||
| const std::string & | extension, | ||
| const entrepot & | where, | ||
| const label & | internal_nale, | ||
| const label & | data_name, | ||
| const std::string & | execute, | ||
| bool | allow_over, | ||
| bool | warn_over, | ||
| bool | force_permission, | ||
| U_I | permission, | ||
| hash_algo | x_hash, | ||
| const infinint & | min_digits, | ||
| bool | format_07_compatible ) |
constructor to build a new single sliced archive
| dialog | how to interact with the user |
| open_mode | read_write or write_only are the only acceptable values |
| base_name | archive basename to create |
| extension | archive extension |
| where | where to store the archive |
| internal_nale | tag common to all slices of the archive |
| data_name | tag that follows the data when archive is dar_xform'ed |
| execute | command line to execute at end of slice creation |
| allow_over | whether to allow overwriting |
| warn_over | whether to warn before overwriting |
| force_permission | whether to enforce slice permission or not |
| permission | value of permission to use if permission enforcement is used |
| x_hash | whether to build a hash of the slice, and which algo to use for that |
| min_digits | is the minimum number of digits the slices number is stored with in the filename |
| format_07_compatible | build a slice header backward compatible with 2.3.x |
| libdar::trivial_sar::trivial_sar | ( | const std::shared_ptr< user_interaction > & | dialog, |
| const std::string & | pipename, | ||
| bool | lax ) |
constructor to read a (single sliced) archive from a pipe
| dialog | how to interact with the user |
| pipename | if set to '-' the data are read from standard input, else the given file is expected to be named pipe to read data from |
| lax | whether to be laxist or follow the normal and strict controlled procedure |
| libdar::trivial_sar::trivial_sar | ( | const std::shared_ptr< user_interaction > & | dialog, |
| int | filedescriptor, | ||
| bool | lax ) |
| dialog | how to interact with the user |
| filedescriptor | if set to '-' the data are read from standard input, else the given file is expected to be named pipe to read data from |
| lax | whether to be laxist or follow the normal and strict controlled procedure |
| libdar::trivial_sar::trivial_sar | ( | const std::shared_ptr< user_interaction > & | dialog, |
| generic_file * | f, | ||
| const label & | internal_name, | ||
| const label & | data_name, | ||
| bool | format_07_compatible, | ||
| const std::string & | execute ) |
constructor to write a (single sliced) archive to a anonymous pipe
| dialog | user interaction |
| f | in case of exception the generic_file "f" is not released, this is the duty of the caller to do so, else (success), the object becomes owned by the trivial_sar and must not be released by the caller. |
| internal_name | internal name ti use |
| data_name | data name |
| format_07_compatible | whether we have to avoid creating a slice trailer |
| execute | command to execute after each slice |
|
inline |
disable execution of user command when destroying the current object
Definition at line 125 of file trivial_sar.hpp.
References natural_destruction.
|
inline |
enable back execution of user command when destroying the current object
Definition at line 128 of file trivial_sar.hpp.
References natural_destruction.
|
inlineoverridevirtual |
obtain the data_name of the archive (label associated with the archive's data)
Implements libdar::contextual.
Definition at line 119 of file trivial_sar.hpp.
References of_data_name.
|
inlineoverridevirtual |
get the current read/write position
Implements libdar::generic_file.
Definition at line 115 of file trivial_sar.hpp.
References cur_pos.
|
inline |
|
inlineoverrideprotectedvirtual |
reset internal engine, flush caches in order to read the data at current position
Implements libdar::generic_file.
Definition at line 136 of file trivial_sar.hpp.
References libdar::generic_file::flush_read(), and reference.
|
overrideprotectedvirtual |
implementation of read() operation
| [in,out] | a | where to put the data to read |
| [in] | size | says how much data to read |
Implements libdar::generic_file.
|
inlineoverrideprotectedvirtual |
tells the object that several calls to read() will follow to probably obtain at least the given amount of data
| [in] | amount | is the maximum expected amount of data that is known to be read |
Implements libdar::generic_file.
Definition at line 131 of file trivial_sar.hpp.
References libdar::generic_file::read_ahead(), and reference.
|
inlineoverrideprotectedvirtual |
write down any pending data
Implements libdar::generic_file.
Definition at line 135 of file trivial_sar.hpp.
References reference, and libdar::generic_file::sync_write().
|
overrideprotectedvirtual |
destructor-like call, except that it is allowed to throw exceptions
Implements libdar::generic_file.
|
inlineoverrideprotectedvirtual |
truncate file at the give offset
Implements libdar::generic_file.
Definition at line 134 of file trivial_sar.hpp.
References cur_pos, offset, reference, and libdar::generic_file::truncate().
|
overrideprotectedvirtual |
implementation of the write() operation
| [in] | a | what data to write |
| [in] | size | amount of data to write |
Implements libdar::generic_file.
|
inlineoverridevirtual |
returns whether the archive is a old archive (format < 8)
Implements libdar::contextual.
Definition at line 118 of file trivial_sar.hpp.
References old_sar.
|
overridevirtual |
skip at the absolute position
| [in] | pos | the offset in byte where next read/write operation must start |
Implements libdar::generic_file.
|
overridevirtual |
skip relatively to the current position
Implements libdar::generic_file.
|
inlineoverridevirtual |
skip to the end of file
Implements libdar::generic_file.
Definition at line 112 of file trivial_sar.hpp.
References libdar::generic_file::is_terminated(), reference, and libdar::generic_file::skip_to_eof().
|
inlineoverridevirtual |
whether the implementation is able to skip
Implements libdar::generic_file.
Definition at line 110 of file trivial_sar.hpp.
References reference, and libdar::generic_file::skippable().
|
inlineoverridevirtual |
whether the implementation is able to truncate to the given position
Implements libdar::generic_file.
Definition at line 114 of file trivial_sar.hpp.
References offset, reference, and libdar::generic_file::truncatable().
|
private |
basename of the archive (used for string susbstitution in hook)
Definition at line 145 of file trivial_sar.hpp.
|
private |
what value to use for u substitution in hook
Definition at line 151 of file trivial_sar.hpp.
|
private |
current position as returned by get_position()
Definition at line 142 of file trivial_sar.hpp.
Referenced by get_position(), and inherited_truncate().
|
private |
when end of slice/archive is met, there is an offset by 1 compared to the offset of reference. end_of_slice is set to 1 in that situation, else it is always equal to zero
Definition at line 143 of file trivial_sar.hpp.
|
private |
extension of the archive (used for string substitution in hook)
Definition at line 146 of file trivial_sar.hpp.
|
private |
command to execute after slice writing (not used in read-only mode)
Definition at line 144 of file trivial_sar.hpp.
|
private |
what value to use for p substitution in hook
Definition at line 150 of file trivial_sar.hpp.
|
private |
minimum number of digits in slice name
Definition at line 149 of file trivial_sar.hpp.
|
private |
whether user command is executed once the single sliced archive is completed (disable upon user interaction)
Definition at line 152 of file trivial_sar.hpp.
Referenced by disable_natural_destruction(), and enable_natural_destruction().
|
private |
|
private |
offset to apply to get the first byte of data out of SAR headers
Definition at line 141 of file trivial_sar.hpp.
Referenced by get_slice_header_size(), inherited_truncate(), and truncatable().
|
private |
true if the read sar has an old header (format <= "07") or the to be written must keep a version 07 format.
Definition at line 148 of file trivial_sar.hpp.
Referenced by is_an_old_start_end_archive().
|
private |
points to the underlying data, owned by "this"
Definition at line 140 of file trivial_sar.hpp.
Referenced by inherited_flush_read(), inherited_read_ahead(), inherited_sync_write(), inherited_truncate(), skip_to_eof(), skippable(), and truncatable().