srcanamdw/codescanner/pyinstaller/source/zlib/ioapi.c
author noe\swadi
Thu, 18 Feb 2010 12:29:02 +0530
changeset 1 22878952f6e2
permissions -rw-r--r--
Committing the CodeScanner Core tool This component has been moved from the StaticAnaApps package. BUG : 5889 (http://developer.symbian.org/webbugs/show_bug.cgi?id=5889).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     1
/* ioapi.c -- IO base function header for compress/uncompress .zip
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     2
   files using zlib + zip or unzip API
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     3
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     4
   Version 1.01e, February 12th, 2005
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     5
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     6
   Copyright (C) 1998-2005 Gilles Vollant
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     7
*/
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     8
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
     9
#include <stdio.h>
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    10
#include <stdlib.h>
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    11
#include <string.h>
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    12
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    13
#include "zlib.h"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    14
#include "ioapi.h"
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    15
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    16
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    17
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    18
/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    19
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    20
#ifndef SEEK_CUR
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    21
#define SEEK_CUR    1
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    22
#endif
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    23
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    24
#ifndef SEEK_END
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    25
#define SEEK_END    2
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    26
#endif
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    27
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    28
#ifndef SEEK_SET
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    29
#define SEEK_SET    0
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    30
#endif
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    31
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    32
voidpf ZCALLBACK fopen_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    33
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    34
   const char* filename,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    35
   int mode));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    36
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    37
uLong ZCALLBACK fread_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    38
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    39
   voidpf stream,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    40
   void* buf,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    41
   uLong size));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    42
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    43
uLong ZCALLBACK fwrite_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    44
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    45
   voidpf stream,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    46
   const void* buf,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    47
   uLong size));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    48
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    49
long ZCALLBACK ftell_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    50
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    51
   voidpf stream));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    52
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    53
long ZCALLBACK fseek_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    54
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    55
   voidpf stream,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    56
   uLong offset,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    57
   int origin));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    58
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    59
int ZCALLBACK fclose_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    60
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    61
   voidpf stream));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    62
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    63
int ZCALLBACK ferror_file_func OF((
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    64
   voidpf opaque,
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    65
   voidpf stream));
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    66
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    67
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    68
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    69
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    70
   const char* filename;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    71
   int mode;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    72
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    73
    FILE* file = NULL;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    74
    const char* mode_fopen = NULL;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    75
    if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    76
        mode_fopen = "rb";
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    77
    else
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    78
    if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    79
        mode_fopen = "r+b";
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    80
    else
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    81
    if (mode & ZLIB_FILEFUNC_MODE_CREATE)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    82
        mode_fopen = "wb";
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    83
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    84
    if ((filename!=NULL) && (mode_fopen != NULL))
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    85
        file = fopen(filename, mode_fopen);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    86
    return file;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    87
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    88
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    89
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    90
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    91
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    92
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    93
   void* buf;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    94
   uLong size;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    95
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    96
    uLong ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    97
    ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    98
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
    99
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   100
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   101
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   102
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   103
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   104
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   105
   const void* buf;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   106
   uLong size;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   107
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   108
    uLong ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   109
    ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   110
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   111
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   112
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   113
long ZCALLBACK ftell_file_func (opaque, stream)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   114
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   115
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   116
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   117
    long ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   118
    ret = ftell((FILE *)stream);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   119
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   120
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   121
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   122
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   123
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   124
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   125
   uLong offset;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   126
   int origin;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   127
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   128
    int fseek_origin=0;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   129
    long ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   130
    switch (origin)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   131
    {
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   132
    case ZLIB_FILEFUNC_SEEK_CUR :
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   133
        fseek_origin = SEEK_CUR;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   134
        break;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   135
    case ZLIB_FILEFUNC_SEEK_END :
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   136
        fseek_origin = SEEK_END;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   137
        break;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   138
    case ZLIB_FILEFUNC_SEEK_SET :
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   139
        fseek_origin = SEEK_SET;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   140
        break;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   141
    default: return -1;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   142
    }
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   143
    ret = 0;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   144
    fseek((FILE *)stream, offset, fseek_origin);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   145
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   146
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   147
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   148
int ZCALLBACK fclose_file_func (opaque, stream)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   149
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   150
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   151
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   152
    int ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   153
    ret = fclose((FILE *)stream);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   154
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   155
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   156
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   157
int ZCALLBACK ferror_file_func (opaque, stream)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   158
   voidpf opaque;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   159
   voidpf stream;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   160
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   161
    int ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   162
    ret = ferror((FILE *)stream);
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   163
    return ret;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   164
}
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   165
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   166
void fill_fopen_filefunc (pzlib_filefunc_def)
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   167
  zlib_filefunc_def* pzlib_filefunc_def;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   168
{
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   169
    pzlib_filefunc_def->zopen_file = fopen_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   170
    pzlib_filefunc_def->zread_file = fread_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   171
    pzlib_filefunc_def->zwrite_file = fwrite_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   172
    pzlib_filefunc_def->ztell_file = ftell_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   173
    pzlib_filefunc_def->zseek_file = fseek_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   174
    pzlib_filefunc_def->zclose_file = fclose_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   175
    pzlib_filefunc_def->zerror_file = ferror_file_func;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   176
    pzlib_filefunc_def->opaque = NULL;
22878952f6e2 Committing the CodeScanner Core tool
noe\swadi
parents:
diff changeset
   177
}