Commit Graph

2035 Commits

Author SHA1 Message Date
1b0dc9f680 src/catar/encoder.rs: correctly sort goodbye items by hash key 2018-12-31 10:11:28 +01:00
c60d34bdbf new catar binary
currently used for debugging
2018-12-30 18:02:46 +01:00
e75eac73ca fix doc syntax 2018-12-30 17:43:53 +01:00
0866748de6 catar cleanups ... 2018-12-30 17:32:52 +01:00
6cd28d200e binary_search_tree.rs: fix docs 2018-12-30 15:34:43 +01:00
3200579ce9 add some integreation tests for catar (compare with casync output) 2018-12-30 15:33:43 +01:00
389e562524 src/catar/encoder.rs: auto-resize file_copy_buffer, limit number of dirs 2018-12-30 14:09:59 +01:00
4fa71e0573 improve catar docs 2018-12-30 13:47:27 +01:00
48147efd12 add a comment about posible improvements 2018-12-29 19:43:25 +01:00
0b78833d8e src/catar/binary_search_tree.rs: add regression tests and fix one bug 2018-12-29 18:32:03 +01:00
b17d7149d2 src/catar/binary_search_tree.rs: improve docu 2018-12-29 17:38:50 +01:00
985567fb45 src/catar/encoder.rs: cleanup, factor out write_goodbye_table 2018-12-29 17:26:32 +01:00
95bd5dfec7 src/catar/encoder.rs: correctly sort goodby items 2018-12-29 17:00:48 +01:00
46b6fbd6ae use external crate siphasher
Because std:#️⃣:SipHasher is deprecated.
2018-12-28 19:50:07 +01:00
f0f3029e26 src/catar/encoder.rs: fix bug in file copy 2018-12-28 15:02:42 +01:00
d05f93215e src/catar/encoder.rs: fix symlinks 2018-12-28 15:02:42 +01:00
7ebb173352 getopt: cleanup: add trailing commas
It is customary in rust to always use trailing commas. (also
suggested by rustfmt)

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
2767c5d39b getopt: cleanup: don't condense 'if' statements too much
In a language which enforces curly braces this looks weird
and rustfmt doesn't like it.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
7d95c10da0 getopt: whitespace cleanup
to make rustfmt happy

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:27:38 +01:00
a0cc09b5f0 src/catar/encoder.rs: fix binary format, write goodby table
We still ned to sort the table (BST) ...
2018-12-28 14:27:00 +01:00
03fb895197 getopt: condense nested match to reduce indentation
The `match value` statement is the only thing covering the
entire RawArgument::Option case. `rustfmt` suggests this
more condensed way of writing this case.

See the `git diff -w` of this patch:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 9755af2..4db4579 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,8 +72,7 @@ pub fn parse_arguments<T: AsRef<str>>(
|             RawArgument::Separator => {
|                 break;
|             }
|-            RawArgument::Option { name, value } => {
|-                match value {
|+            RawArgument::Option { name, value } => match value {
|                 None => {
|                     let mut want_bool = false;
|                     let mut can_default = false;
|@@ -125,7 +124,6 @@ pub fn parse_arguments<T: AsRef<str>>(
|                     data.push((name, v));
|                 }
|             }
|-            }
|             RawArgument::Argument { value } => {
|                 rest.push(value);
|             }

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:16:58 +01:00
4d0ea9978b getopt: let parse_arguments() take a slice of AsRef<str>
We don't need the content to be owned strings, and we don't
need the list to be a Vec, since we only care about being
able to iterate through and copy out portions of the strings
we need, so take an &[T] where T: AsRef<str>.

This avoids .iter().map(to_string).collect() before calling
parse_arguments().

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 14:05:05 +01:00
2482c095b1 getopt: remove skip logic
The 'skip' variable was set to indicate that the "rest of
the args" is to be copied into the 'rest' vec. We can do
this directly and avoid the 'if' case in the loop
altogether.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:59:44 +01:00
99da3a073d getopt: indentation reduction
See the `git diff -w` output:
|diff --git a/src/getopts.rs b/src/getopts.rs
|index 6548a01..517cc37 100644
|--- a/src/getopts.rs
|+++ b/src/getopts.rs
|@@ -72,7 +72,10 @@ pub fn parse_arguments(
|     while pos < args.len() {
|         if skip {
|             rest.push(args[pos].clone());
|-        } else {
|+            pos += 1;
|+            continue;
|+        }
|+
|         match parse_argument(&args[pos]) {
|             RawArgument::Separator => {
|                 skip = true;
|@@ -135,7 +138,6 @@ pub fn parse_arguments(
|                 rest.push(value);
|             }
|         }
|-        }
|
|         pos += 1;
|     }

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:54:20 +01:00
ad8a98f7e4 parse_arguments: work with utf8 bytes and reduce indentation
We are only caring about '=' and '-' which are single-byte
codepoints, so there's no reason not to work on a byte
slice.

Also, some indentation reduction:

Transform
    if (a) {
        ...
        return A;
    }
    return B;
into
    if (!a)
        return B;
    return A;

and
    if (a)
        if (b)
            foo()
into
    if (a && b)
        return;

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-28 13:47:29 +01:00
248c17af39 src/catar/encoder.rs: write filenames 2018-12-28 11:48:47 +01:00
2e4ae0e239 src/catar/encoder.rs: write file data 2018-12-28 10:44:12 +01:00
3192ae968c src/catar/encoder.rs: write entry and symlink data 2018-12-28 09:55:26 +01:00
50ea43962e make map_struct functions public 2018-12-28 08:04:46 +01:00
d2b03f2397 catar/encoder.rs: improve error handling 2018-12-28 07:45:15 +01:00
0ff559990c cleanups, avoid compiler warnings 2018-12-28 07:14:12 +01:00
45281d4927 catar/encoder: detect symlink and regular files 2018-12-27 14:24:31 +01:00
fb8365b79f catar/encoder.rs: first try 2018-12-27 13:15:47 +01:00
fba3437f1e timer: setup_timeout_handler cannot fail
and if it does it panics anyway

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
2018-12-27 10:36:28 +01:00
bcd879cfb3 backup-client: allow to specify directories (prepare for catar backup) 2018-12-27 10:11:11 +01:00
b62b6cadf4 start implementing catar 2018-12-27 09:22:23 +01:00
dc3de618ed new helper map_struct and map_struct_mut 2018-12-27 09:20:17 +01:00
a198d74fc0 cleanup: reduce compiler warnings 2018-12-25 13:29:27 +01:00
991de6007b remove outdated comment 2018-12-25 13:24:50 +01:00
7ee2aa1b94 touch_chunk: use libc::lutimensat 2018-12-25 12:27:25 +01:00
2c32fdde86 move lookup_datastore() to backup/datastore.rs 2018-12-22 17:37:25 +01:00
64e53b2835 gather usage statistics during garbage collection 2018-12-22 16:58:16 +01:00
28b96b56e1 open_file_locked: improve error message 2018-12-22 15:59:55 +01:00
176e4af964 sweep_used_chunks: print percentage 2018-12-22 15:39:05 +01:00
7b2b40a893 use openssl for faster hashing 2018-12-22 14:31:59 +01:00
e95950e40a chunk_store: reduce number of directories
Else, scans everything takes too long ...
2018-12-22 14:04:05 +01:00
15e9b4ed60 src/api3/datastore.rs: new file 2018-12-21 13:38:41 +01:00
3c140f60cd use return value (avoid compiler warning) 2018-12-21 12:44:20 +01:00
03e4753d8e fix mutability for chunk store 2018-12-21 12:15:26 +01:00
2d9d143a8f backup-client: add optional chunk-size parameter 2018-12-21 11:18:08 +01:00