226#include <sys/types.h>
250 int gzlog_count = -1;
251# define BAIL(n) do { if (n == gzlog_bail && gzlog_count-- == 0) \
252 longjmp(gzlog_jump, gzlog_bail); } while (0)
278#define PULL2(p) ((p)[0]+((uint)((p)[1])<<8))
279#define PULL4(p) (PULL2(p)+((ulong)PULL2(p+2)<<16))
280#define PULL8(p) (PULL4(p)+((off_t)PULL4(p+4)<<32))
283#define PUT2(p,a) do {(p)[0]=a;(p)[1]=(a)>>8;} while(0)
284#define PUT4(p,a) do {PUT2(p,a);PUT2(p+2,a>>16);} while(0)
285#define PUT8(p,a) do {PUT4(p,a);PUT4(p+4,a>>32);} while(0)
288#define LOGID "\106\035\172"
312 39, 0,
'a',
'p', 35, 0
316#define HEAD sizeof(log_gzhead)
320 52, 0, 0, 0, 0, 0, 0, 0,
321 52, 0, 0, 0, 0, 0, 0, 0,
322 0, 0, 0, 0, 0, 0, 0, 0,
323 0, 0, 0, 0, 0, 0, 0, 0,
328#define EXTRA sizeof(log_gzext)
337#define BODY sizeof(log_gzbody)
353 strcpy(
log->
end,
".lock");
354 while ((fd = open(
log->
path, O_CREAT | O_EXCL, 0644)) < 0) {
376 strcpy(
log->
end,
".lock");
388 strcpy(
log->
end,
".lock");
400 strcpy(
log->
end,
".lock");
428 op = (
buf[
HEAD + 34] >> 3) & 3;
440 unsigned char ext[
EXTRA];
449 ext[34] =
log->
back - 3 + (op << 3);
465 unsigned char buf[6];
469 len = back > 8 ? 2 : 1;
470 mask = 0x80 >> ((back - 1) & 7);
505 unsigned char buf[8];
582 strcpy(
log->
end,
".dict");
587 strcpy(
log->
end,
".temp");
590 if (ret && errno != ENOENT)
628 strcpy(
log->
end,
".dict");
629 fd = open(
log->
path, O_RDONLY, 0);
654 max = (((
uint)0 - 1) >> 1) + 1;
724 strcpy(
log->
end,
".repairs");
728 fprintf(rec,
"%.24s %s recovery: %s\n", ctime(&now), op ==
APPEND_OP ?
729 "append" : (op ==
COMPRESS_OP ?
"compress" :
"replace"), record);
741 unsigned char *data =
NULL;
752 len = (size_t)(st.st_size);
758 if ((fd = open(
log->
path, O_RDONLY, 0)) < 0) {
789 log_log(
log, op, ret ?
"failure" :
"complete");
845 strcpy(
log->
end,
".dict");
915 unsigned char *data,
buf[5];
944 if (next + block >
len ||
945 read(
log->
fd, (
char *)data + next, block) != block)
955 fd = open(
log->
path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
964 strcpy(
log->
end,
".temp");
965 fd = open(
log->
path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
969 ret = (size_t)
write(
fd, (
char *)data +
len - next, next) != next;
1015 strcpy(
log->
end,
".add");
1016 fd = open(
log->
path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
1020 if (ret | close(
fd))
1058 strcpy(
log->
id,
"bad");
unsigned long ZEXPORT crc32(unsigned long crc, const unsigned char FAR *buf, uInt len)
int ZEXPORT deflateSetDictionary(z_streamp strm, const Bytef *dictionary, uInt dictLength)
int ZEXPORT deflatePrime(z_streamp strm, int bits, int value)
int ZEXPORT deflateEnd(z_streamp strm)
int ZEXPORT deflate(z_streamp strm, int flush)
int log_last(struct log *log, int last)
void log_unlock(struct log *log)
int log_mark(struct log *log, int op)
int gzlog_compress(gzlog *logd)
int gzlog_write(gzlog *logd, void *data, size_t len)
gzlog * gzlog_open(char *path)
int gzlog_close(gzlog *logd)
int log_append(struct log *log, unsigned char *data, size_t len)
int log_head(struct log *log)
void log_close(struct log *log)
unsigned char log_gzhead[]
int log_check(struct log *log)
unsigned char log_gzbody[]
int log_replace(struct log *log)
unsigned char log_gzext[]
void log_touch(struct log *log)
void log_log(struct log *log, int op, char *record)
int log_recover(struct log *log, int op)
int log_open(struct log *log)
int log_compress(struct log *log, unsigned char *data, size_t len)
int log_lock(struct log *log)
int memcmp(const void *s1, const void *s2, size_t len)
size_t strlen(const char *)
if((ID)(DISPID) nameid !=nameid)
#define Z_DEFAULT_STRATEGY
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy)
#define Z_DEFAULT_COMPRESSION
int write(ozstream &zs, const T *x, Items items)
int read(izstream &zs, T *x, Items items)