Module: RRDiff

Defined in:
lib/rrdiff/file.rb,
ext/rrdiff/rrdiff.c

Defined Under Namespace

Modules: File

Class Method Summary collapse

Class Method Details

.delta(new_file, sig_file, delta_file) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'ext/rrdiff/rrdiff.c', line 26

static VALUE rrdiff_delta(VALUE mod, VALUE new_file, VALUE sig_file, VALUE delta_file)
{
    FILE *newfile, *sigfile, *deltafile;

    rs_result result;
    rs_stats_t stats;
    rs_signature_t *sig;

    newfile = fopen(StringValuePtr(new_file), "rb");
    sigfile = fopen(StringValuePtr(sig_file), "rb");
    deltafile = fopen(StringValuePtr(delta_file), "wb");

    if((result = rs_loadsig_file(sigfile, &sig, &stats)) != RS_DONE)
        return Qnil;

    if ((result = rs_build_hash_table(sig)) != RS_DONE)
        return Qnil;

    result = rs_delta_file(sig, newfile, deltafile, &stats);

    rs_free_sumset(sig);

    fclose(newfile);
    fclose(sigfile);
    fclose(deltafile);

    return Qnil;
}

.patch(old_file, delta_file, patched_file) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'ext/rrdiff/rrdiff.c', line 55

static VALUE rrdiff_patch(VALUE mod, VALUE old_file, VALUE delta_file, VALUE patched_file)
{
    FILE *basisfile, *deltafile, *newfile;

    rs_stats_t stats;
    rs_result result;

    basisfile = fopen(StringValuePtr(old_file), "rb");
    deltafile = fopen(StringValuePtr(delta_file), "rb");
    newfile = fopen(StringValuePtr(patched_file), "wb");

    result = rs_patch_file(basisfile, deltafile, newfile, &stats);

    fclose(newfile);
    fclose(deltafile);
    fclose(basisfile);

    return Qnil;
}

.signature(old_file, sig_file) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'ext/rrdiff/rrdiff.c', line 8

static VALUE rrdiff_signature(VALUE mod, VALUE old_file, VALUE sig_file)
{
    FILE *basis, *signature;

    rs_result result;
    rs_stats_t stats;

    basis = fopen(StringValuePtr(old_file), "rb");
    signature = fopen(StringValuePtr(sig_file), "wb");

    result = rs_sig_file(basis, signature, RS_DEFAULT_BLOCK_LEN, RS_DEFAULT_STRONG_LEN, &stats);

    fclose(basis);
    fclose(signature);

    return Qnil;
}