-
Notifications
You must be signed in to change notification settings - Fork 8
/
compressor.c
75 lines (59 loc) · 2.03 KB
/
compressor.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include "private/compressor.h"
#include "private/errors.h"
#include <unistd.h> /* size_t */
#if BP_USE_SNAPPY == 1
#include <snappy-c.h>
size_t bp__max_compressed_size(size_t size) {
return snappy_max_compressed_length(size);
}
int bp__compress(const char* input,
size_t input_length,
char* compressed,
size_t* compressed_length) {
int ret = snappy_compress(input, input_length, compressed, compressed_length);
return ret == SNAPPY_OK ? BP_OK : BP_ECOMP;
}
int bp__uncompressed_length(const char* compressed,
size_t compressed_length,
size_t* result) {
int ret = snappy_uncompressed_length(compressed, compressed_length, result);
return ret == SNAPPY_OK ? BP_OK : BP_EDECOMP;
}
int bp__uncompress(const char* compressed,
size_t compressed_length,
char* uncompressed,
size_t* uncompressed_length) {
int ret = snappy_uncompress(compressed,
compressed_length,
uncompressed,
uncompressed_length);
return ret == SNAPPY_OK ? BP_OK : BP_EDECOMP;
}
#else
#include <string.h> /* memcpy */
size_t bp__max_compressed_size(size_t size) {
return size;
}
int bp__compress(const char* input,
size_t input_length,
char* compressed,
size_t* compressed_length) {
memcpy(compressed, input, input_length);
*compressed_length = input_length;
return BP_OK;
}
int bp__uncompressed_length(const char* compressed,
size_t compressed_length,
size_t* result) {
*result = compressed_length;
return BP_OK;
}
int bp__uncompress(const char* compressed,
size_t compressed_length,
char* uncompressed,
size_t* uncompressed_length) {
memcpy(uncompressed, compressed, compressed_length);
*uncompressed_length = compressed_length;
return BP_OK;
}
#endif