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