OLD | NEW |
1 /* gzio.c -- IO on .gz files | 1 /* gzio.c -- IO on .gz files |
2 * Copyright (C) 1995-2005 Jean-loup Gailly. | 2 * Copyright (C) 1995-2005 Jean-loup Gailly. |
3 * For conditions of distribution and use, see copyright notice in zlib.h | 3 * For conditions of distribution and use, see copyright notice in zlib.h |
4 * | 4 * |
5 * Compile this file with -DNO_GZCOMPRESS to avoid the compression code. | 5 * Compile this file with -DNO_GZCOMPRESS to avoid the compression code. |
6 */ | 6 */ |
7 | 7 |
8 /* @(#) $Id: gzio.c,v 3.7 2005/08/04 19:14:14 tor%cs.brown.edu Exp $ */ | 8 /* @(#) $Id: gzio.c,v 3.7 2005/08/04 19:14:14 tor%cs.brown.edu Exp $ */ |
9 | 9 |
10 #include <stdio.h> | 10 #include <stdio.h> |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 char mode; /* 'w' or 'r' */ | 67 char mode; /* 'w' or 'r' */ |
68 z_off_t start; /* start of compressed data in file (header skipped) */ | 68 z_off_t start; /* start of compressed data in file (header skipped) */ |
69 z_off_t in; /* bytes into deflate or inflate */ | 69 z_off_t in; /* bytes into deflate or inflate */ |
70 z_off_t out; /* bytes out of deflate or inflate */ | 70 z_off_t out; /* bytes out of deflate or inflate */ |
71 int back; /* one character push-back */ | 71 int back; /* one character push-back */ |
72 int last; /* true if push-back is last character */ | 72 int last; /* true if push-back is last character */ |
73 } gz_stream; | 73 } gz_stream; |
74 | 74 |
75 | 75 |
76 local gzFile gz_open OF((const char *path, const char *mode, int fd)); | 76 local gzFile gz_open OF((const char *path, const char *mode, int fd)); |
| 77 #ifndef NO_GZCOMPRESS // Google Gears addition, to avoid compile warning |
77 local int do_flush OF((gzFile file, int flush)); | 78 local int do_flush OF((gzFile file, int flush)); |
| 79 #endif |
78 local int get_byte OF((gz_stream *s)); | 80 local int get_byte OF((gz_stream *s)); |
79 local void check_header OF((gz_stream *s)); | 81 local void check_header OF((gz_stream *s)); |
80 local int destroy OF((gz_stream *s)); | 82 local int destroy OF((gz_stream *s)); |
| 83 #ifndef NO_GZCOMPRESS // Google Gears addition, to avoid compile warning |
81 local void putLong OF((FILE *file, uLong x)); | 84 local void putLong OF((FILE *file, uLong x)); |
| 85 #endif |
82 local uLong getLong OF((gz_stream *s)); | 86 local uLong getLong OF((gz_stream *s)); |
83 | 87 |
84 /* =========================================================================== | 88 /* =========================================================================== |
85 Opens a gzip (.gz) file for reading or writing. The mode parameter | 89 Opens a gzip (.gz) file for reading or writing. The mode parameter |
86 is as in fopen ("rb" or "wb"). The file is given either by file descriptor | 90 is as in fopen ("rb" or "wb"). The file is given either by file descriptor |
87 or path name (if fd == -1). | 91 or path name (if fd == -1). |
88 gz_open returns NULL if the file could not be opened or if there was | 92 gz_open returns NULL if the file could not be opened or if there was |
89 insufficient memory to allocate the (de)compression state; errno | 93 insufficient memory to allocate the (de)compression state; errno |
90 can be checked to distinguish the two cases (if errno is zero, the | 94 can be checked to distinguish the two cases (if errno is zero, the |
91 zlib error is Z_MEM_ERROR). | 95 zlib error is Z_MEM_ERROR). |
(...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
907 */ | 911 */ |
908 int ZEXPORT gzdirect (file) | 912 int ZEXPORT gzdirect (file) |
909 gzFile file; | 913 gzFile file; |
910 { | 914 { |
911 gz_stream *s = (gz_stream*)file; | 915 gz_stream *s = (gz_stream*)file; |
912 | 916 |
913 if (s == NULL || s->mode != 'r') return 0; | 917 if (s == NULL || s->mode != 'r') return 0; |
914 return s->transparent; | 918 return s->transparent; |
915 } | 919 } |
916 | 920 |
| 921 #ifndef NO_GZCOMPRESS // Google Gears addition, to avoid compile warning |
917 /* =========================================================================== | 922 /* =========================================================================== |
918 Outputs a long in LSB order to the given file | 923 Outputs a long in LSB order to the given file |
919 */ | 924 */ |
920 local void putLong (file, x) | 925 local void putLong (file, x) |
921 FILE *file; | 926 FILE *file; |
922 uLong x; | 927 uLong x; |
923 { | 928 { |
924 int n; | 929 int n; |
925 for (n = 0; n < 4; n++) { | 930 for (n = 0; n < 4; n++) { |
926 fputc((int)(x & 0xff), file); | 931 fputc((int)(x & 0xff), file); |
927 x >>= 8; | 932 x >>= 8; |
928 } | 933 } |
929 } | 934 } |
| 935 #endif |
930 | 936 |
931 /* =========================================================================== | 937 /* =========================================================================== |
932 Reads a long in LSB order from the given gz_stream. Sets z_err in case | 938 Reads a long in LSB order from the given gz_stream. Sets z_err in case |
933 of error. | 939 of error. |
934 */ | 940 */ |
935 local uLong getLong (s) | 941 local uLong getLong (s) |
936 gz_stream *s; | 942 gz_stream *s; |
937 { | 943 { |
938 uLong x = (uLong)get_byte(s); | 944 uLong x = (uLong)get_byte(s); |
939 int c; | 945 int c; |
(...skipping 24 matching lines...) Expand all Loading... |
964 if (do_flush (file, Z_FINISH) != Z_OK) | 970 if (do_flush (file, Z_FINISH) != Z_OK) |
965 return destroy((gz_stream*)file); | 971 return destroy((gz_stream*)file); |
966 | 972 |
967 putLong (s->file, s->crc); | 973 putLong (s->file, s->crc); |
968 putLong (s->file, (uLong)(s->in & 0xffffffff)); | 974 putLong (s->file, (uLong)(s->in & 0xffffffff)); |
969 #endif | 975 #endif |
970 } | 976 } |
971 return destroy((gz_stream*)file); | 977 return destroy((gz_stream*)file); |
972 } | 978 } |
973 | 979 |
974 #ifdef STDC | 980 // Google Gears modification: strerror is not present on WinCE. |
| 981 #if defined(STDC) && !defined(_WIN32_WCE) |
975 # define zstrerror(errnum) strerror(errnum) | 982 # define zstrerror(errnum) strerror(errnum) |
976 #else | 983 #else |
977 # define zstrerror(errnum) "" | 984 # define zstrerror(errnum) "" |
978 #endif | 985 #endif |
979 | 986 |
980 /* =========================================================================== | 987 /* =========================================================================== |
981 Returns the error message for the last error which occurred on the | 988 Returns the error message for the last error which occurred on the |
982 given compressed file. errnum is set to zlib error number. If an | 989 given compressed file. errnum is set to zlib error number. If an |
983 error occurred in the file system and not in the compression library, | 990 error occurred in the file system and not in the compression library, |
984 errnum is set to Z_ERRNO and the application may consult errno | 991 errnum is set to Z_ERRNO and the application may consult errno |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1017 void ZEXPORT gzclearerr (file) | 1024 void ZEXPORT gzclearerr (file) |
1018 gzFile file; | 1025 gzFile file; |
1019 { | 1026 { |
1020 gz_stream *s = (gz_stream*)file; | 1027 gz_stream *s = (gz_stream*)file; |
1021 | 1028 |
1022 if (s == NULL) return; | 1029 if (s == NULL) return; |
1023 if (s->z_err != Z_STREAM_END) s->z_err = Z_OK; | 1030 if (s->z_err != Z_STREAM_END) s->z_err = Z_OK; |
1024 s->z_eof = 0; | 1031 s->z_eof = 0; |
1025 clearerr(s->file); | 1032 clearerr(s->file); |
1026 } | 1033 } |
OLD | NEW |