Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
gzguts.h File Reference
#include <stdio.h>
#include "zlib.h"
#include <fcntl.h>
#include <errno.h>

Go to the source code of this file.

Classes

struct  gz_state

Macros

#define ZLIB_INTERNAL
#define _POSIX_SOURCE
#define local   static
#define zstrerror()
#define DEF_MEM_LEVEL   MAX_MEM_LEVEL
#define GZBUFSIZE   8192
#define GZ_NONE   0
#define GZ_READ   7247
#define GZ_WRITE   31153
#define GZ_APPEND   1 /* mode set to GZ_WRITE after the file is opened */
#define LOOK   0 /* look for a gzip header */
#define COPY   1 /* copy input directly */
#define GZIP   2 /* decompress a gzip stream */
#define GT_OFF(x)

Typedefs

typedef gz_state FAR * gz_statep

Functions

voidp malloc (uInt size)
void free (voidpf ptr)
ZEXTERN gzFile ZEXPORT gzopen64 (const char *, const char *)
ZEXTERN z_off64_t ZEXPORT gzseek64 (gzFile, z_off64_t, int)
ZEXTERN z_off64_t ZEXPORT gztell64 (gzFile)
ZEXTERN z_off64_t ZEXPORT gzoffset64 (gzFile)
void ZLIB_INTERNAL gz_error (gz_statep, int, const char *)
unsigned ZLIB_INTERNAL gz_intmax (void)

Macro Definition Documentation

◆ _POSIX_SOURCE

#define _POSIX_SOURCE

Definition at line 29 of file gzguts.h.

◆ COPY

#define COPY   1 /* copy input directly */

Definition at line 165 of file gzguts.h.

Referenced by gz_fetch(), gz_look(), gz_read(), gzseek64(), inflate(), and inflateMark().

◆ DEF_MEM_LEVEL

#define DEF_MEM_LEVEL   MAX_MEM_LEVEL

Definition at line 150 of file gzguts.h.

Referenced by deflateInit_(), and gz_init().

◆ GT_OFF

#define GT_OFF ( x)
Value:
(sizeof(int) == sizeof(z_off64_t) && (x) > gz_intmax())
unsigned ZLIB_INTERNAL gz_intmax(void)
Definition gzlib.c:570

Definition at line 214 of file gzguts.h.

Referenced by gz_skip(), gz_zero(), and gzseek64().

◆ GZ_APPEND

#define GZ_APPEND   1 /* mode set to GZ_WRITE after the file is opened */

Definition at line 161 of file gzguts.h.

Referenced by gz_open().

◆ GZ_NONE

#define GZ_NONE   0

Definition at line 158 of file gzguts.h.

Referenced by gz_open().

◆ GZ_READ

◆ GZ_WRITE

◆ GZBUFSIZE

#define GZBUFSIZE   8192

Definition at line 155 of file gzguts.h.

Referenced by gz_open().

◆ GZIP

#define GZIP   2 /* decompress a gzip stream */

Definition at line 166 of file gzguts.h.

◆ local

◆ LOOK

#define LOOK   0 /* look for a gzip header */

Definition at line 164 of file gzguts.h.

Referenced by gz_decomp(), gz_fetch(), gz_read(), gz_reset(), gzdirect(), and gzungetc().

◆ ZLIB_INTERNAL

◆ zstrerror

#define zstrerror ( )
Value:
strerror(errno)

Definition at line 132 of file gzguts.h.

Referenced by gz_comp(), and gz_load().

Typedef Documentation

◆ gz_statep

typedef gz_state FAR* gz_statep

Definition at line 202 of file gzguts.h.

Function Documentation

◆ free()

◆ gz_error()

void ZLIB_INTERNAL gz_error ( gz_statep state,
int err,
const char * msg )

Definition at line 529 of file gzlib.c.

529 {
530 /* free previously allocated message and clear */
531 if (state->msg != NULL) {
532 if (state->err != Z_MEM_ERROR)
533 free(state->msg);
534 state->msg = NULL;
535 }
536
537 /* if fatal, set state->x.have to 0 so that the gzgetc() macro fails */
538 if (err != Z_OK && err != Z_BUF_ERROR)
539 state->x.have = 0;
540
541 /* set error code, and if no message, then done */
542 state->err = err;
543 if (msg == NULL)
544 return;
545
546 /* for an out of memory error, return literal string when requested */
547 if (err == Z_MEM_ERROR)
548 return;
549
550 /* construct error message with path */
551 if ((state->msg = (char *)malloc(strlen(state->path) + strlen(msg) + 3)) ==
552 NULL) {
553 state->err = Z_MEM_ERROR;
554 return;
555 }
556#if !defined(NO_snprintf) && !defined(NO_vsnprintf)
557 (void)snprintf(state->msg, strlen(state->path) + strlen(msg) + 3,
558 "%s%s%s", state->path, ": ", msg);
559#else
560 strcpy(state->msg, state->path);
561 strcat(state->msg, ": ");
562 strcat(state->msg, msg);
563#endif
564}
void free(voidpf ptr)
voidp malloc(uInt size)
#define Z_BUF_ERROR
Definition zlib.h:184
#define Z_OK
Definition zlib.h:177
#define Z_MEM_ERROR
Definition zlib.h:183

Referenced by gz_comp(), gz_decomp(), gz_init(), gz_load(), gz_look(), gz_reset(), gzclearerr(), gzclose_r(), gzclose_w(), gzfread(), gzfwrite(), gzputs(), gzread(), gzseek64(), gzungetc(), and gzwrite().

◆ gz_intmax()

unsigned ZLIB_INTERNAL gz_intmax ( void )

Definition at line 570 of file gzlib.c.

570 {
571#ifdef INT_MAX
572 return INT_MAX;
573#else
574 unsigned p = 1, q;
575 do {
576 q = p;
577 p <<= 1;
578 p++;
579 } while (p > q);
580 return q >> 1;
581#endif
582}
#define INT_MAX
Definition templates.hh:90

◆ gzoffset64()

ZEXTERN z_off64_t ZEXPORT gzoffset64 ( gzFile file)

Definition at line 443 of file gzlib.c.

443 {
444 z_off64_t offset;
445 gz_statep state;
446
447 /* get internal structure and check integrity */
448 if (file == NULL)
449 return -1;
450 state = (gz_statep)file;
451 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
452 return -1;
453
454 /* compute and return effective offset in file */
455 offset = LSEEK(state->fd, 0, SEEK_CUR);
456 if (offset == -1)
457 return -1;
458 if (state->mode == GZ_READ) /* reading */
459 offset -= state->strm.avail_in; /* don't count buffered input */
460 return offset;
461}
G4ThreadLocal T * G4GeomSplitter< T >::offset
gz_state FAR * gz_statep
Definition gzguts.h:202
#define GZ_WRITE
Definition gzguts.h:160
#define GZ_READ
Definition gzguts.h:159
#define LSEEK
Definition gzlib.c:14

Referenced by gzoffset().

◆ gzopen64()

ZEXTERN gzFile ZEXPORT gzopen64 ( const char * path,
const char * mode )

Definition at line 265 of file gzlib.c.

265 {
266 return gz_open(path, -1, mode);
267}
local gzFile gz_open(const void *path, int fd, const char *mode)
Definition gzlib.c:85

◆ gzseek64()

ZEXTERN z_off64_t ZEXPORT gzseek64 ( gzFile file,
z_off64_t offset,
int whence )

Definition at line 339 of file gzlib.c.

339 {
340 unsigned n;
341 z_off64_t ret;
342 gz_statep state;
343
344 /* get internal structure and check integrity */
345 if (file == NULL)
346 return -1;
347 state = (gz_statep)file;
348 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
349 return -1;
350
351 /* check that there's no error */
352 if (state->err != Z_OK && state->err != Z_BUF_ERROR)
353 return -1;
354
355 /* can only seek from start or relative to current position */
356 if (whence != SEEK_SET && whence != SEEK_CUR)
357 return -1;
358
359 /* normalize offset to a SEEK_CUR specification */
360 if (whence == SEEK_SET)
361 offset -= state->x.pos;
362 else if (state->seek)
363 offset += state->skip;
364 state->seek = 0;
365
366 /* if within raw area while reading, just go there */
367 if (state->mode == GZ_READ && state->how == COPY &&
368 state->x.pos + offset >= 0) {
369 ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
370 if (ret == -1)
371 return -1;
372 state->x.have = 0;
373 state->eof = 0;
374 state->past = 0;
375 state->seek = 0;
376 gz_error(state, Z_OK, NULL);
377 state->strm.avail_in = 0;
378 state->x.pos += offset;
379 return state->x.pos;
380 }
381
382 /* calculate skip amount, rewinding if needed for back seek when reading */
383 if (offset < 0) {
384 if (state->mode != GZ_READ) /* writing -- can't go backwards */
385 return -1;
386 offset += state->x.pos;
387 if (offset < 0) /* before start of file! */
388 return -1;
389 if (gzrewind(file) == -1) /* rewind, then skip to offset */
390 return -1;
391 }
392
393 /* if reading, skip what's in output buffer (one less gzgetc() check) */
394 if (state->mode == GZ_READ) {
395 n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ?
396 (unsigned)offset : state->x.have;
397 state->x.have -= n;
398 state->x.next += n;
399 state->x.pos += n;
400 offset -= n;
401 }
402
403 /* request skip (if not zero) */
404 if (offset) {
405 state->seek = 1;
406 state->skip = offset;
407 }
408 return state->x.pos + offset;
409}
#define GT_OFF(x)
Definition gzguts.h:214
#define COPY
Definition gzguts.h:165
int ZEXPORT gzrewind(gzFile file)
Definition gzlib.c:318
void ZLIB_INTERNAL gz_error(gz_statep state, int err, const char *msg)
Definition gzlib.c:529

Referenced by gzseek().

◆ gztell64()

ZEXTERN z_off64_t ZEXPORT gztell64 ( gzFile file)

Definition at line 420 of file gzlib.c.

420 {
421 gz_statep state;
422
423 /* get internal structure and check integrity */
424 if (file == NULL)
425 return -1;
426 state = (gz_statep)file;
427 if (state->mode != GZ_READ && state->mode != GZ_WRITE)
428 return -1;
429
430 /* return position */
431 return state->x.pos + (state->seek ? state->skip : 0);
432}

Referenced by gztell().

◆ malloc()