#ifdef _WIN32
setmode(fd, O_BINARY);
#endif
- if ((rz = calloc(1, sizeof(RAZF))) == NULL) {
+ if ((rz = calloc(1, RAZF_STRUCT_SIZE)) == NULL) {
fprintf(stderr, "[%s] failure to allocate RAZF structure.\n", __func__);
return NULL;
}
+ rz->stream = (z_stream *)rz + sizeof(RAZF);
+ rz->inbuf = rz->stream + sizeof(z_stream);
+ rz->outbuf = rz->inbuf + RZ_BUFFER_SIZE;
+ rz->index = rz->outbuf + RZ_BUFFER_SIZE;
+ rz->header = (gz_header *)rz->index + sizeof(ZBlockIndex);
+ rz->header->extra = (Bytef *)rz->header + sizeof(gz_header);
rz->mode = 'w';
#ifdef _USE_KNETFILE
- rz->x.fpw = fd;
+ rz->x.fpw = fd;
#else
rz->filedes = fd;
#endif
- if ((rz->stream = calloc(sizeof(z_stream), 1)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate stream buffer.\n", __func__);
- free(rz);
- return NULL;
- }
- if ((rz->inbuf = malloc(RZ_BUFFER_SIZE)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate input buffer.\n", __func__);
- free(rz->stream);
- free(rz);
- return NULL;
- }
- if ((rz->outbuf = malloc(RZ_BUFFER_SIZE)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate output buffer.\n", __func__);
- free(rz->stream);
- free(rz->inbuf);
- free(rz);
- return NULL;
- }
- if ((rz->index = calloc(sizeof(ZBlockIndex), 1)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate index.\n", __func__);
- free(rz->stream);
- free(rz->inbuf);
- free(rz->outbuf);
- free(rz);
- return NULL;
- }
-
deflateInit2(rz->stream, RZ_COMPRESS_LEVEL, Z_DEFLATED, WINDOW_BITS + 16, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
rz->stream->avail_out = RZ_BUFFER_SIZE;
rz->stream->next_out = rz->outbuf;
- if ((rz->header = calloc(sizeof(gz_header), 1)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate header buffer.\n", __func__);
- free(rz->stream);
- free(rz->inbuf);
- free(rz->outbuf);
- free(rz->index);
- free(rz);
- return NULL;
- }
rz->header->os = 0x03; //Unix
rz->header->text = 0;
rz->header->time = 0;
- if ((rz->header->extra = malloc(7)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate header buffer.\n", __func__);
- free(rz->stream);
- free(rz->inbuf);
- free(rz->outbuf);
- free(rz->index);
- free(rz->header);
- free(rz);
- return NULL;
- }
strncpy((char*)rz->header->extra, "RAZF", 4);
rz->header->extra[4] = 1; // obsolete field
// block size = RZ_BLOCK_SIZE, Big-Endian
int n, is_be, ret;
int64_t end;
unsigned char c[] = "RAZF";
- if ((rz = calloc(1, sizeof(RAZF))) == NULL) {
+ if ((rz = calloc(1, RAZF_STRUCT_SIZE)) == NULL) {
fprintf(stderr, "[%s] failure to allocate RAZF structure.\n", __func__);
return NULL;
}
+ rz->stream = (z_stream *)rz + sizeof(RAZF);
+ rz->inbuf = rz->stream + sizeof(z_stream);
+ rz->outbuf = rz->inbuf + RZ_BUFFER_SIZE;
+ rz->index = rz->outbuf + RZ_BUFFER_SIZE;
+ rz->header = (gz_header *)rz->index + sizeof(ZBlockIndex);
+ rz->header->extra = (Bytef *)rz->header + sizeof(gz_header);
rz->mode = 'r';
#ifdef _USE_KNETFILE
rz->x.fpr = fp;
#endif
rz->filedes = fd;
#endif
- if ((rz->stream = calloc(sizeof(z_stream), 1)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate z_stream.\n", __func__);
- free(rz);
- return NULL;
- }
- if ((rz->inbuf = malloc(RZ_BUFFER_SIZE)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate input buffer.\n", __func__);
- free(rz->stream);
- free(rz);
- return NULL;
- }
- if ((rz->outbuf = malloc(RZ_BUFFER_SIZE)) == NULL) {
- fprintf(stderr, "[%s] failure to allocate output buffer.\n", __func__);
- free(rz->inbuf);
- free(rz->stream);
- free(rz);
- return NULL;
- }
rz->end = rz->src_end = 0x7FFFFFFFFFFFFFFFLL;
#ifdef _USE_KNETFILE
n = knet_read(rz->x.fpr, rz->inbuf, RZ_BUFFER_SIZE);