21
21
static int const az_magic[3] = {0xfe, 0x03, 0x01}; /* az magic header */
23
/* gzip flag unsigned char */
24
24
#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
25
25
#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */
26
26
#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
259
259
else if (s->mode == 'w')
261
unsigned char buffer[AZHEADER_SIZE + AZMETA_BUFFER_SIZE];
261
uchar buffer[AZHEADER_SIZE + AZMETA_BUFFER_SIZE];
262
262
pread(s->file, buffer, AZHEADER_SIZE + AZMETA_BUFFER_SIZE, 0);
263
263
read_header(s, buffer);
264
264
s->pos= (size_t)my_seek(s->file, 0, MY_SEEK_END, MYF(0));
306
306
int4store(ptr + AZ_COMMENT_LENGTH_POS, s->comment_length); /* COMMENT Block */
307
307
int4store(ptr + AZ_META_POS, 0); /* Meta Block */
308
308
int4store(ptr + AZ_META_LENGTH_POS, 0); /* Meta Block */
309
int8store(ptr + AZ_START_POS, (uint64_t)s->start); /* Start of Data Block Index Block */
310
int8store(ptr + AZ_ROW_POS, (uint64_t)s->rows); /* Start of Data Block Index Block */
311
int8store(ptr + AZ_FLUSH_POS, (uint64_t)s->forced_flushes); /* Start of Data Block Index Block */
312
int8store(ptr + AZ_CHECK_POS, (uint64_t)s->check_point); /* Start of Data Block Index Block */
313
int8store(ptr + AZ_AUTOINCREMENT_POS, (uint64_t)s->auto_increment); /* Start of Data Block Index Block */
309
int8store(ptr + AZ_START_POS, (unsigned long long)s->start); /* Start of Data Block Index Block */
310
int8store(ptr + AZ_ROW_POS, (unsigned long long)s->rows); /* Start of Data Block Index Block */
311
int8store(ptr + AZ_FLUSH_POS, (unsigned long long)s->forced_flushes); /* Start of Data Block Index Block */
312
int8store(ptr + AZ_CHECK_POS, (unsigned long long)s->check_point); /* Start of Data Block Index Block */
313
int8store(ptr + AZ_AUTOINCREMENT_POS, (unsigned long long)s->auto_increment); /* Start of Data Block Index Block */
314
314
int4store(ptr+ AZ_LONGEST_POS , s->longest_row); /* Longest row */
315
315
int4store(ptr+ AZ_SHORTEST_POS, s->shortest_row); /* Shorest row */
316
316
int4store(ptr+ AZ_FRM_POS,
318
318
*(ptr + AZ_DIRTY_POS)= (unsigned char)s->dirty; /* Start of Data Block Index Block */
320
320
/* Always begin at the begining, and end there as well */
321
pwrite(s->file, (unsigned char*) buffer, AZHEADER_SIZE + AZMETA_BUFFER_SIZE, 0);
321
pwrite(s->file, (uchar*) buffer, AZHEADER_SIZE + AZMETA_BUFFER_SIZE, 0);
324
324
/* ===========================================================================
368
368
if (len) s->inbuf[0] = s->stream.next_in[0];
370
len = (uInt)pread(s->file, (unsigned char *)s->inbuf + len, AZ_BUFSIZE_READ >> len, s->pos);
370
len = (uInt)pread(s->file, (uchar *)s->inbuf + len, AZ_BUFSIZE_READ >> len, s->pos);
372
372
if (len == (uInt)-1) s->z_err = Z_ERRNO;
373
373
s->stream.avail_in += len;
402
402
s->minor_version= (unsigned int)buffer[AZ_MINOR_VERSION_POS];
403
403
s->block_size= 1024 * buffer[AZ_BLOCK_POS];
404
404
s->start= (size_t)uint8korr(buffer + AZ_START_POS);
405
s->rows= (uint64_t)uint8korr(buffer + AZ_ROW_POS);
406
s->check_point= (uint64_t)uint8korr(buffer + AZ_CHECK_POS);
407
s->forced_flushes= (uint64_t)uint8korr(buffer + AZ_FLUSH_POS);
408
s->auto_increment= (uint64_t)uint8korr(buffer + AZ_AUTOINCREMENT_POS);
405
s->rows= (unsigned long long)uint8korr(buffer + AZ_ROW_POS);
406
s->check_point= (unsigned long long)uint8korr(buffer + AZ_CHECK_POS);
407
s->forced_flushes= (unsigned long long)uint8korr(buffer + AZ_FLUSH_POS);
408
s->auto_increment= (unsigned long long)uint8korr(buffer + AZ_AUTOINCREMENT_POS);
409
409
s->longest_row= (unsigned int)uint4korr(buffer + AZ_LONGEST_POS);
410
410
s->shortest_row= (unsigned int)uint4korr(buffer + AZ_SHORTEST_POS);
411
411
s->frm_start_pos= (unsigned int)uint4korr(buffer + AZ_FRM_POS);
625
625
s->stream.next_out = s->outbuf;
626
if (pwrite(s->file, (unsigned char *)s->outbuf, AZ_BUFSIZE_WRITE, s->pos) != AZ_BUFSIZE_WRITE)
626
if (pwrite(s->file, (uchar *)s->outbuf, AZ_BUFSIZE_WRITE, s->pos) != AZ_BUFSIZE_WRITE)
628
628
s->z_err = Z_ERRNO;
667
if ((uInt)pwrite(s->file, (unsigned char *)s->outbuf, len, s->pos) != len)
667
if ((uInt)pwrite(s->file, (uchar *)s->outbuf, len, s->pos) != len)
669
669
s->z_err = Z_ERRNO;
705
705
static unsigned int azio_enable_aio(azio_stream *s)
707
pthread_cond_init(&s->container.threshhold, NULL);
708
pthread_mutex_init(&s->container.thresh_mutex, NULL);
707
VOID(pthread_cond_init(&s->container.threshhold, NULL));
708
VOID(pthread_mutex_init(&s->container.thresh_mutex, NULL));
718
pthread_mutex_destroy(&s->container.thresh_mutex);
719
pthread_cond_destroy(&s->container.threshhold);
718
VOID(pthread_mutex_destroy(&s->container.thresh_mutex));
719
VOID(pthread_cond_destroy(&s->container.threshhold));
721
721
s->method= AZ_METHOD_BLOCK;
730
730
if (s->mode == 'r')
732
732
unsigned char buffer[AZHEADER_SIZE + AZMETA_BUFFER_SIZE];
733
pread(s->file, (unsigned char*) buffer, AZHEADER_SIZE + AZMETA_BUFFER_SIZE, 0);
733
pread(s->file, (uchar*) buffer, AZHEADER_SIZE + AZMETA_BUFFER_SIZE, 0);
734
734
read_header(s, buffer); /* skip the .az header */
974
974
s->frm_length= length;
975
975
s->start+= length;
977
pwrite(s->file, (unsigned char*) blob, s->frm_length, s->frm_start_pos);
977
pwrite(s->file, (uchar*) blob, s->frm_length, s->frm_start_pos);
980
980
s->pos= (size_t)my_seek(s->file, 0, MY_SEEK_END, MYF(0));
985
985
int azread_frm(azio_stream *s, char *blob)
987
pread(s->file, (unsigned char*) blob, s->frm_length, s->frm_start_pos);
987
pread(s->file, (uchar*) blob, s->frm_length, s->frm_start_pos);
1005
1005
s->comment_length= length;
1006
1006
s->start+= length;
1008
pwrite(s->file, (unsigned char*) blob, s->comment_length, s->comment_start_pos);
1008
pwrite(s->file, (uchar*) blob, s->comment_length, s->comment_start_pos);
1010
1010
write_header(s);
1011
1011
s->pos= (size_t)my_seek(s->file, 0, MY_SEEK_END, MYF(0));
1016
1016
int azread_comment(azio_stream *s, char *blob)
1018
pread(s->file, (unsigned char*) blob, s->comment_length, s->comment_start_pos);
1018
pread(s->file, (uchar*) blob, s->comment_length, s->comment_start_pos);
1069
1069
#ifdef AZIO_AIO
1072
s->stream.avail_in = (uInt)pread(s->file, (unsigned char *)s->inbuf,
1072
s->stream.avail_in = (uInt)pread(s->file, (uchar *)s->inbuf,
1073
1073
AZ_BUFSIZE_READ, s->pos);
1074
1074
s->pos+= s->stream.avail_in;