| Disk ARchive 2.5.10 Full featured and portable backup and archiving tool

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

line_tools.hpp
Go to the documentation of this file.
1 /*********************************************************************/
2 // dar - disk archive - a backup/restoration program
3 // Copyright (C) 2002-2052 Denis Corbin
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 //
19 // to contact the author : http://dar.linux.free.fr/email.html
20 /*********************************************************************/
21
25
26 #ifndef LINE_TOOLS_HPP
27 #define LINE_TOOLS_HPP
28
29 #include "../my_config.h"
30
31 #include <string>
32 #include <vector>
33 #include "infinint.hpp"
34 #include "tlv_list.hpp"
35 #include "integers.hpp"
36 #include "criterium.hpp"
37
38 using namespace libdar;
39
42
43 class argc_argv
44 {
45 public:
46 argc_argv(S_I size = 0);
47 argc_argv(const argc_argv & ref) { throw Efeature("argc_argv"); };
48 const argc_argv & operator = (const argc_argv & ref) { throw Efeature("argc_argv"); };
49 ~argc_argv();
50
51 void resize(S_I size);
52 void set_arg(const std::string & arg, S_I index);
53 void set_arg(generic_file & f, U_I size, S_I index);
54
55 S_I argc() const { return x_argc; };
56 char* const * argv() const { return x_argv; }; // well, the const method is a bit silly, as the caller has the possibility to modify what is pointed to by the returned value...
57
58 private:
59 S_I x_argc;
60 char **x_argv;
61 };
62
63 extern void line_tools_slice_ownership(const std::string & cmd, std::string & slice_permission, std::string & slice_user_ownership, std::string & slice_group_ownership);
64 extern void line_tools_repeat_param(const std::string & cmd, infinint & repeat_count, infinint & repeat_byte);
65 extern void line_tools_tlv_list2argv(user_interaction & dialog, tlv_list & list, argc_argv & arg);
66
68 extern S_I line_tools_reset_getopt();
69
70
71 std::string::const_iterator line_tools_find_first_char_out_of_parenth(const std::string & argument, unsigned char to_find);
72 std::string::const_iterator line_tools_find_last_char_out_of_parenth(const std::string & argument, unsigned char to_find);
73
74 std::string line_tools_expand_user_comment(const std::string & user_comment, S_I argc, char *const argv[]);
75
77 std::vector<std::string> line_tools_explode_PATH(const char *the_path);
78
80 std::string line_tools_get_full_path_from_PATH(const std::vector<std::string> & the_path, const char * filename);
81
83 void line_tools_split_at_first_space(const char *field, std::string & before_space, std::string & after_space);
84
85 void line_tools_get_min_digits(std::string arg, infinint & num, infinint & ref_num, infinint & aux_num);
86
93 #if HAVE_GETOPT_LONG
94 #endif
96 extern void line_tools_look_for(const std::vector<char> & arguments,
99 S_I argc,
100 char *const argv[],
101 const char *getopt_string,
102 #if HAVE_GETOPT_LONG
103 const struct option *long_options,
104 #endif
105 char stop_scan,
106 std::vector<char> & presence);
107
108
114 #if HAVE_GETOPT_LONG
115 #endif
117 extern void line_tools_look_for_Q(S_I argc,
120 char *const argv[],
121 const char *getopt_string,
122 #if HAVE_GETOPT_LONG
123 const struct option *long_options,
124 #endif
125 char stop_scan,
126 bool & Q_is_present);
127
128
130
131 extern std::vector<std::string> line_tools_split(const std::string & val, char sep);
132
133 extern void line_tools_4_4_build_compatible_overwriting_policy(bool allow_over,
134 bool detruire,
135 bool more_recent,
136 const libdar::infinint & hourshift,
137 bool ea_erase,
138 const libdar::crit_action * & overwrite);
139
146 extern void line_tools_crypto_split_algo_pass(const secu_string & all,
147 crypto_algo & algo,
148 secu_string & pass,
149 bool & no_cipher_given,
150 std::vector<std::string> & recipients);
151
153 extern void line_tools_display_signatories(user_interaction & ui, const std::list<signator> & gnupg_signed);
154
156
157 #endif
criterium.hpp
contains classes that let the user define the policy for overwriting files
line_tools_crypto_split_algo_pass
void line_tools_crypto_split_algo_pass(const secu_string &all, crypto_algo &algo, secu_string &pass, bool &no_cipher_given, std::vector< std::string > &recipients)
integers.hpp
are defined here basic integer types that tend to be portable
line_tools_split_at_first_space
void line_tools_split_at_first_space(const char *field, std::string &before_space, std::string &after_space)
return split at the first space met the string given as first argument, and provide the two splitted ...
line_tools_get_full_path_from_PATH
std::string line_tools_get_full_path_from_PATH(const std::vector< std::string > &the_path, const char *filename)
return the full path of the given filename (eventually unchanged of pointing to the first file of tha...
line_tools_look_for
void line_tools_look_for(const std::vector< char > &arguments, S_I argc, char *const argv[], const char *getopt_string, char stop_scan, std::vector< char > &presence)
libdar::user_interaction
This is a pure virtual class that is used by libdar when interaction with the user is required...
Definition: user_interaction.hpp:98
line_tools_display_signatories
void line_tools_display_signatories(user_interaction &ui, const std::list< signator > &gnupg_signed)
display information about the signatories
line_tools_reset_getopt
S_I line_tools_reset_getopt()
returns the old position of parsing (next argument to parse)
line_tools_split
std::vector< std::string > line_tools_split(const std::string &val, char sep)
split a line in words given the separator character (sep)
libdar::crypto_algo
crypto_algo
the different cypher available for encryption (strong or weak)
Definition: crypto.hpp:51
line_tools_explode_PATH
std::vector< std::string > line_tools_explode_PATH(const char *the_path)
split a PATH environement variable string into its components (/usr/lib:/lib => /usr/lib /lib) ...
libdar::Efeature
exception used when a requested feature is not (yet) implemented
Definition: erreurs.hpp:206
libdar::crit_action
the global action for overwriting
Definition: criterium.hpp:77
line_tools_look_for_Q
void line_tools_look_for_Q(S_I argc, char *const argv[], const char *getopt_string, char stop_scan, bool &Q_is_present)
infinint.hpp
switch module to limitint (32 ou 64 bits integers) or infinint
libdar::secu_string
class secu_string
Definition: secu_string.hpp:57
libdar::generic_file
this is the interface class from which all other data transfer classes inherit
Definition: generic_file.hpp:100
tlv_list.hpp
List of Generic Type Length Value data structures.
libdar::infinint
the arbitrary large positive integer class
Definition: real_infinint.hpp:59
libdar
libdar namespace encapsulate all libdar symbols
Definition: archive.hpp:47