00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00028
00029
00030 #ifndef TOOLS_HPP
00031 #define TOOLS_HPP
00032
00033 #include "../my_config.h"
00034
00035 extern "C"
00036 {
00037 #if STDC_HEADERS
00038 #include <stdarg.h>
00039 #endif
00040 #if HAVE_SIGNAL_H
00041 #include <signal.h>
00042 #endif
00043 }
00044
00045 #include <string>
00046 #include <vector>
00047 #include "path.hpp"
00048 #include "infinint.hpp"
00049 #include "generic_file.hpp"
00050 #include "tuyau.hpp"
00051 #include "integers.hpp"
00052
00053 #define TOOLS_SI_SUFFIX 1000
00054 #define TOOLS_BIN_SUFFIX 1024
00055
00056 namespace libdar
00057 {
00058
00068
00070
00075 extern char *tools_str2charptr(const std::string &x);
00076
00078
00081 extern void tools_write_string(generic_file & f, const std::string & s);
00082
00084
00087 extern void tools_read_string(generic_file & f, std::string & s);
00088
00090
00093 extern void tools_write_string_all(generic_file & f, const std::string & s);
00094
00096
00100 extern void tools_read_string_size(generic_file & f, std::string & s, infinint taille);
00101
00103
00106 extern infinint tools_get_filesize(const path &p);
00107
00109
00113 extern infinint tools_get_extended_size(std::string s, U_I base);
00114
00116
00120 extern void tools_extract_basename(const char *command_name, std::string & basename);
00121
00123
00128 extern void tools_split_path_basename(const char *all, path * &chemin, std::string & base);
00129
00131
00136 extern void tools_split_path_basename(const std::string &all, std::string & chemin, std::string & base);
00137
00139
00146 extern void tools_open_pipes(user_interaction & dialog, const std::string &input, const std::string & output,
00147 tuyau *&in, tuyau *&out);
00148
00150
00153 extern void tools_blocking_read(int fd, bool mode);
00154
00156
00159 extern std::string tools_name_of_uid(U_16 uid);
00160
00162
00165 extern std::string tools_name_of_gid(U_16 gid);
00166
00168
00171 extern std::string tools_uword2str(U_16 x);
00172
00174
00177 extern std::string tools_int2str(S_I x);
00178
00180
00183 extern U_32 tools_str2int(const std::string & x);
00184
00186
00190 extern std::string tools_addspacebefore(std::string s, unsigned int expected_size);
00191
00193
00196 extern std::string tools_display_date(infinint date);
00197
00199
00203 extern infinint tools_convert_date(const std::string & repres);
00204
00206
00209 extern void tools_system(user_interaction & dialog, const std::vector<std::string> & argvector);
00210
00212
00215 extern void tools_write_vector(generic_file & f, const std::vector<std::string> & x);
00216
00218
00221 extern void tools_read_vector(generic_file & f, std::vector<std::string> & x);
00222
00224
00228 extern std::string tools_concat_vector(const std::string & separator,
00229 const std::vector<std::string> & x);
00230
00232
00236 std::vector<std::string> operator + (std::vector<std::string> a, std::vector<std::string> b);
00237
00239
00243 extern bool tools_is_member(const std::string & val, const std::vector<std::string> & liste);
00244
00246
00258 extern void tools_display_features(user_interaction & dialog,
00259 bool ea, bool largefile, bool nodump, bool special_alloc, U_I bits, bool thread_safe,
00260 bool libz,
00261 bool libbz2,
00262 bool libcrypto,
00263 bool new_blowfish);
00264
00266
00271 extern bool is_equal_with_hourshift(const infinint & hourshift, const infinint & date1, const infinint & date2);
00272
00274
00279 extern bool tools_my_atoi(char *a, U_I & val);
00280
00281
00283
00284 template <class T> std::vector<T> operator +=(std::vector<T> & a, const std::vector<T> & b)
00285 {
00286 a = a + b;
00287 return a;
00288 }
00289
00290
00292
00297 extern const char *tools_get_from_env(const char **env, char *clef);
00298
00300
00306 extern void tools_check_basename(user_interaction & dialog,
00307 const path & loc, std::string & base, const std::string & extension);
00308
00310
00311 extern std::string tools_getcwd();
00312
00314
00318 extern std::string tools_readlink(const char *root);
00319
00321
00326 extern bool tools_look_for(const char *argument, S_I argc, char *argv[]);
00327
00328
00330
00334 extern void tools_noexcept_make_date(const std::string & chem, const infinint & last_acc, const infinint & last_mod);
00335
00337
00341 extern void tools_make_date(const std::string & chemin, infinint access, infinint modif);
00342
00344
00348 extern bool tools_is_case_insensitive_equal(const std::string & a, const std::string & b);
00349
00353 extern void tools_to_upper(char *nts);
00354
00358 extern void tools_to_upper(std::string & r);
00359
00361
00364 extern void tools_remove_last_char_if_equal_to(char c, std::string & s);
00365
00367
00372 extern void tools_read_range(const std::string & s, U_I & min, U_I & max);
00373
00374
00376
00385 extern std::string tools_printf(char *format, ...);
00386
00388
00397 extern std::string tools_vprintf(char *format, va_list ap);
00398
00400
00405 extern bool tools_do_some_files_match_mask(user_interaction & ui, const std::string & c_chemin, const std::string & file_mask);
00406
00408
00414 extern void tools_unlink_file_mask(user_interaction & dialog, const std::string & c_chemin, const std::string & file_mask, bool info_details);
00415
00416
00418
00427 extern void tools_avoid_slice_overwriting(user_interaction & dialog,
00428 const path & chemin,
00429 const std::string & x_file_mask,
00430 bool info_details,
00431 bool allow_overwriting,
00432 bool warn_overwriting,
00433 bool dry_run);
00434
00436
00439 extern void tools_add_elastic_buffer(generic_file & f, U_32 max_size);
00440
00441
00443
00449 extern bool tools_are_on_same_filesystem(const std::string & file1, const std::string & file2);
00450
00451
00453
00457 extern path tools_relative2absolute_path(const path & src, const path & cwd);
00458
00460
00463 extern void tools_block_all_signals(sigset_t &old_mask);
00464
00466
00469 extern void tools_set_back_blocked_signals(sigset_t old_mask);
00470
00472
00476 extern U_I tools_count_in_string(const std::string & s, const char a);
00477
00479
00482 extern infinint tools_get_mtime(const std::string & s);
00483
00484
00486
00490 extern std::vector<std::string> tools_split_in_words(generic_file & f);
00491
00493
00494
00498 extern std::string tools_build_regex_for_exclude_mask(const std::string & prefix,
00499 const std::string & relative_part);
00500
00502
00505 extern std::string tools_output2xml(const std::string & src);
00506
00508
00513 extern void tools_memxor(void *dest, const void *src, size_t n);
00514
00515 }
00516
00517 #endif