#include <unistd.h>
#include <zck.h>
+#define BLK_SIZE 32768
+
int main (int argc, char *argv[]) {
char *out_name;
exit(1);
}
- zckCtx *zck = zck_create();
+ zckCtx *zck = zck_init_read(src_fd);
if(zck == NULL)
exit(1);
- if(!zck_decompress_to_file(zck, src_fd, dst_fd)) {
- unlink(out_name);
- free(out_name);
- close(src_fd);
- close(dst_fd);
- zck_free(&zck);
- exit(1);
+ char *data = malloc(BLK_SIZE);
+ int good_exit = False;
+ while(True) {
+ ssize_t read = zck_read(zck, data, BLK_SIZE);
+ if(read < 0)
+ goto error;
+ if(read == 0)
+ break;
+ if(read > BLK_SIZE)
+ printf("read: %lu\n", read);
+ if(write(dst_fd, data, read) != read) {
+ printf("Error writing to %s\n", out_name);
+ goto error;
+ }
}
+ good_exit = True;
+error:
+ free(data);
+ if(!good_exit)
+ unlink(out_name);
free(out_name);
+ zck_close(zck);
close(src_fd);
close(dst_fd);
zck_free(&zck);
+ if(!good_exit)
+ exit(1);
+ exit(0);
}
}
free(out_name);
- zckCtx *zck = zck_create();
- if(zck == NULL)
- exit(1);
- if(!zck_init_write(zck, dst_fd))
+ zckCtx *zck = zck_init_write(dst_fd);
+ if(zck == NULL) {
+ printf("Unable to write to %s\n", out_name);
exit(1);
+ }
/*if(!zck_set_compression_type(zck, ZCK_COMP_NONE)) {
perror("Unable to set compression type\n");
}
prev_srpm = next_srpm;
printf("Compressing %li bytes\n", next-found);
- if(!zck_write(zck, found, next-found))
+ if(zck_write(zck, found, next-found) < 0)
exit(1);
- if(!zck_end_chunk(zck))
+ if(zck_end_chunk(zck) < 0)
exit(1);
found = next;
search = next + 1;
search = data + in_size;
} else {
printf("Completing %li bytes\n", data+in_size-found);
- if(!zck_write(zck, found, data+in_size-found))
+ if(zck_write(zck, found, data+in_size-found) < 0)
exit(1);
- if(!zck_end_chunk(zck))
+ if(zck_end_chunk(zck) < 0)
exit(1);
search = NULL;
}
cur_loc = data + in_size;
}
printf("Completing %li bytes\n", cur_loc-start);
- if(!zck_write(zck, start, cur_loc-start))
+ if(zck_write(zck, start, cur_loc-start) < 0)
exit(1);
- if(!zck_end_chunk(zck))
+ if(zck_end_chunk(zck) < 0)
exit(1);
start = cur_loc;
}
}
free(data);
}
- if(!zck_write_file(zck))
+ if(!zck_close(zck))
exit(1);
zck_free(&zck);
close(dst_fd);
#include <zck.h>
int main (int argc, char *argv[]) {
- zckCtx *zck_src = zck_create();
- zckCtx *zck_tgt = zck_create();
-
- /*zck_set_log_level(ZCK_LOG_DEBUG);*/
-
if(argc != 3) {
printf("Usage: %s <source> <target>\n", argv[0]);
exit(1);
perror("");
exit(1);
}
- if(!zck_read_header(zck_src, src_fd)) {
+ zckCtx *zck_src = zck_init_read(src_fd);
+ if(zck_src == NULL) {
printf("Unable to open %s\n", argv[1]);
exit(1);
}
- close(src_fd);
+ zck_close(zck_src);
int tgt_fd = open(argv[2], O_RDONLY);
if(tgt_fd < 0) {
perror("");
exit(1);
}
- if(!zck_read_header(zck_tgt, tgt_fd)) {
+ zckCtx *zck_tgt = zck_init_read(tgt_fd);
+ if(zck_tgt == NULL) {
printf("Unable to open %s\n", argv[2]);
exit(1);
}
- close(tgt_fd);
+ zck_close(zck_tgt);
if(zck_get_chunk_hash_type(zck_tgt) != zck_get_chunk_hash_type(zck_src)) {
printf("ERROR: Chunk hash types don't match:\n");
#include <zck.h>
int main (int argc, char *argv[]) {
- zckCtx *zck_src = zck_create();
zckCtx *zck_tgt = zck_create();
- if(zck_src == NULL || zck_tgt == NULL)
+ if(zck_tgt == NULL)
exit(1);
zck_dl_global_init();
perror("");
exit(1);
}
- if(!zck_read_header(zck_src, src_fd)) {
+ zckCtx *zck_src = zck_init_read(src_fd);
+ if(zck_src == NULL) {
printf("Unable to open %s\n", argv[1]);
exit(1);
}
#include <zck.h>
int main (int argc, char *argv[]) {
- zckCtx *zck = zck_create();
-
zck_set_log_level(ZCK_LOG_DEBUG);
if(argc != 2) {
perror("");
exit(1);
}
- if(!zck_read_header(zck, src_fd)) {
+ zckCtx *zck = zck_init_read(src_fd);
+ if(zck == NULL) {
perror("Unable to read header\n");
exit(1);
}
+ zck_close(zck);
close(src_fd);
printf("Overall checksum type: %s\n", zck_hash_name_from_type(zck_get_full_hash_type(zck)));