• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/timemachine/zlib-1.2.3/examples/

Lines Matching defs:log

21 /* log object structure */
24 int fd; /* log file descriptor */
62 /* release a log object */
63 local void log_clean(gz_log *log)
65 unlock(log->fd);
66 (void)close(log->fd);
67 free(log);
131 /* initialize a log object with locking */
138 gz_log *log;
140 /* allocate log structure */
141 log = malloc(sizeof(gz_log));
142 if (log == NULL)
144 log->id = GZLOGID;
147 log->fd = open(path, O_RDWR | O_CREAT, 0600);
148 if (log->fd < 0) {
149 free(log);
152 if (lock(log->fd)) {
153 close(log->fd);
154 free(log);
159 if (lseek(log->fd, 0, SEEK_END) == 0) {
160 if (write(log->fd, empty_gz, sizeof(empty_gz)) != sizeof(empty_gz)) {
161 log_clean(log);
167 (void)lseek(log->fd, 0, SEEK_SET);
168 if (read(log->fd, temp, 12) != 12 || temp[0] != 0x1f ||
170 log_clean(log);
178 if (xlen < 4 || read(log->fd, temp, 4) != 4)
189 (void)lseek(log->fd, sub_len, SEEK_CUR);
193 log_clean(log);
198 log->extra = lseek(log->fd, 0, SEEK_CUR);
199 if (read(log->fd, temp, 16) != 16) {
200 log_clean(log);
203 log->mark_off = make_off(temp);
204 log->last_off = make_off(temp + 8);
207 (void)lseek(log->fd, log->last_off, SEEK_SET);
208 if (read(log->fd, temp, 13) != 13 ||
210 log_clean(log);
213 log->crc = make_ulg(temp + 5);
214 log->len = make_ulg(temp + 9);
217 (void)lseek(log->fd, log->last_off + 5, SEEK_SET);
218 log->stored = 0;
219 return (void *)log;
225 /* write a block to a log object */
230 gz_log *log;
233 log = (gz_log *)obj;
234 if (log == NULL || log->id != GZLOGID)
239 some = MAX_BLOCK - log->stored;
242 if (write(log->fd, data, some) != some)
244 log->crc = crc32(log->crc, data, some);
245 log->len += some;
248 log->stored += some;
251 if (log->stored == MAX_BLOCK) {
252 (void)lseek(log->fd, log->last_off, SEEK_SET);
254 dice_ulg(log->stored + ((unsigned long)(~log->stored) << 16),
256 if (write(log->fd, temp, 5) != 5)
258 log->last_off = lseek(log->fd, log->stored, SEEK_CUR);
259 (void)lseek(log->fd, 5, SEEK_CUR);
260 log->stored = 0;
267 local int recomp(gz_log *log)
276 len = log->last_off - log->mark_off;
286 (void)lseek(log->fd, log->mark_off, SEEK_SET);
287 if (read(log->fd, in, len) != len) {
332 (void)lseek(log->fd, log->mark_off, SEEK_SET);
334 if (write(log->fd, out, len) != len) {
341 log->mark_off = log->last_off = lseek(log->fd, 0, SEEK_CUR);
344 dice_ulg(log->crc, temp + 5);
345 dice_ulg(log->len, temp + 9);
346 if (write(log->fd, temp, 13) != 13)
350 ftruncate(log->fd, lseek(log->fd, 0, SEEK_CUR));
353 (void)lseek(log->fd, log->extra, SEEK_SET);
354 dice_off(log->mark_off, temp);
355 dice_off(log->last_off, temp + 8);
356 if (write(log->fd, temp, 16) != 16)
364 /* close log object */
368 gz_log *log;
371 log = (gz_log *)obj;
372 if (log == NULL || log->id != GZLOGID)
376 (void)lseek(log->fd, log->last_off, SEEK_SET);
379 if (log->stored) {
381 dice_ulg(log->stored + ((unsigned long)(~log->stored) << 16),
383 if (write(log->fd, temp, 5) != 5)
385 log->last_off = lseek(log->fd, log->stored, SEEK_CUR);
389 if (write(log->fd, "\001\000\000\377\377", 5) != 5)
393 dice_ulg(log->crc, temp);
394 dice_ulg(log->len, temp + 4);
395 if (write(log->fd, temp, 8) != 8)
399 (void)lseek(log->fd, log->extra + 8, SEEK_SET);
400 dice_off(log->last_off, temp);
401 if (write(log->fd, temp, 8) != 8)
405 if (log->last_off - log->mark_off > MAX_STORED) {
406 if (recomp(log))
411 log_clean(log);