tesseract  4.00.00dev
iowin32.c File Reference
#include <stdlib.h>
#include "zlib.h"
#include "ioapi.h"
#include "iowin32.h"

Go to the source code of this file.

Classes

struct  WIN32FILE_IOWIN
 

Macros

#define INVALID_HANDLE_VALUE   (0xFFFFFFFF)
 
#define INVALID_SET_FILE_POINTER   ((DWORD)-1)
 

Functions

voidpf ZCALLBACK win32_open_file_func OF ((voidpf opaque, const char *filename, int mode))
 
uLong ZCALLBACK win32_read_file_func OF ((voidpf opaque, voidpf stream, void *buf, uLong size))
 
uLong ZCALLBACK win32_write_file_func OF ((voidpf opaque, voidpf stream, const void *buf, uLong size))
 
long ZCALLBACK win32_tell_file_func OF ((voidpf opaque, voidpf stream))
 
long ZCALLBACK win32_seek_file_func OF ((voidpf opaque, voidpf stream, uLong offset, int origin))
 
voidpf ZCALLBACK win32_open_file_func (voidpf opaque, const char *filename, int mode)
 
uLong ZCALLBACK win32_read_file_func (voidpf opaque, voidpf stream, void *buf, uLong size)
 
uLong ZCALLBACK win32_write_file_func (voidpf opaque, voidpf stream, const void *buf, uLong size)
 
long ZCALLBACK win32_tell_file_func (voidpf opaque, voidpf stream)
 
long ZCALLBACK win32_seek_file_func (voidpf opaque, voidpf stream, uLong offset, int origin)
 
int ZCALLBACK win32_close_file_func (voidpf opaque, voidpf stream)
 
int ZCALLBACK win32_error_file_func (voidpf opaque, voidpf stream)
 
void fill_win32_filefunc (zlib_filefunc_def *pzlib_filefunc_def)
 

Macro Definition Documentation

◆ INVALID_HANDLE_VALUE

#define INVALID_HANDLE_VALUE   (0xFFFFFFFF)

Definition at line 17 of file iowin32.c.

◆ INVALID_SET_FILE_POINTER

#define INVALID_SET_FILE_POINTER   ((DWORD)-1)

Definition at line 21 of file iowin32.c.

Function Documentation

◆ fill_win32_filefunc()

void fill_win32_filefunc ( zlib_filefunc_def pzlib_filefunc_def)

Definition at line 259 of file iowin32.c.

261 {
262  pzlib_filefunc_def->zopen_file = win32_open_file_func;
263  pzlib_filefunc_def->zread_file = win32_read_file_func;
264  pzlib_filefunc_def->zwrite_file = win32_write_file_func;
265  pzlib_filefunc_def->ztell_file = win32_tell_file_func;
266  pzlib_filefunc_def->zseek_file = win32_seek_file_func;
267  pzlib_filefunc_def->zclose_file = win32_close_file_func;
268  pzlib_filefunc_def->zerror_file = win32_error_file_func;
269  pzlib_filefunc_def->opaque=NULL;
270 }
voidpf opaque
Definition: ioapi.h:55
seek_file_func zseek_file
Definition: ioapi.h:52
read_file_func zread_file
Definition: ioapi.h:49
uLong ZCALLBACK win32_read_file_func(voidpf opaque, voidpf stream, void *buf, uLong size)
Definition: iowin32.c:117
long ZCALLBACK win32_seek_file_func(voidpf opaque, voidpf stream, uLong offset, int origin)
Definition: iowin32.c:186
voidpf ZCALLBACK win32_open_file_func(voidpf opaque, const char *filename, int mode)
Definition: iowin32.c:65
tell_file_func ztell_file
Definition: ioapi.h:51
int ZCALLBACK win32_error_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:247
close_file_func zclose_file
Definition: ioapi.h:53
uLong ZCALLBACK win32_write_file_func(voidpf opaque, voidpf stream, const void *buf, uLong size)
Definition: iowin32.c:140
long ZCALLBACK win32_tell_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:163
testerror_file_func zerror_file
Definition: ioapi.h:54
open_file_func zopen_file
Definition: ioapi.h:48
int ZCALLBACK win32_close_file_func(voidpf opaque, voidpf stream)
Definition: iowin32.c:227
write_file_func zwrite_file
Definition: ioapi.h:50

◆ OF() [1/5]

voidpf ZCALLBACK win32_open_file_func OF ( (voidpf opaque, const char *filename, int mode )

◆ OF() [2/5]

◆ OF() [3/5]

◆ OF() [4/5]

◆ OF() [5/5]

◆ win32_close_file_func()

int ZCALLBACK win32_close_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 227 of file iowin32.c.

230 {
231  int ret=-1;
232 
233  if (stream!=NULL)
234  {
235  HANDLE hFile;
236  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
237  if (hFile != NULL)
238  {
239  CloseHandle(hFile);
240  ret=0;
241  }
242  free(stream);
243  }
244  return ret;
245 }
voidpf stream
Definition: ioapi.h:39

◆ win32_error_file_func()

int ZCALLBACK win32_error_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 247 of file iowin32.c.

250 {
251  int ret=-1;
252  if (stream!=NULL)
253  {
254  ret = ((WIN32FILE_IOWIN*)stream) -> error;
255  }
256  return ret;
257 }
voidpf stream
Definition: ioapi.h:39

◆ win32_open_file_func()

voidpf ZCALLBACK win32_open_file_func ( voidpf  opaque,
const char*  filename,
int  mode 
)

Definition at line 65 of file iowin32.c.

69 {
70  const char* mode_fopen = NULL;
71  DWORD dwDesiredAccess,dwCreationDisposition,dwShareMode,dwFlagsAndAttributes ;
72  HANDLE hFile = 0;
73  voidpf ret=NULL;
74 
75  dwDesiredAccess = dwShareMode = dwFlagsAndAttributes = 0;
76 
78  {
79  dwDesiredAccess = GENERIC_READ;
80  dwCreationDisposition = OPEN_EXISTING;
81  dwShareMode = FILE_SHARE_READ;
82  }
83  else
85  {
86  dwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
87  dwCreationDisposition = OPEN_EXISTING;
88  }
89  else
91  {
92  dwDesiredAccess = GENERIC_WRITE | GENERIC_READ;
93  dwCreationDisposition = CREATE_ALWAYS;
94  }
95 
96  if ((filename!=NULL) && (dwDesiredAccess != 0))
97  hFile = CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, NULL,
98  dwCreationDisposition, dwFlagsAndAttributes, NULL);
99 
100  if (hFile == INVALID_HANDLE_VALUE)
101  hFile = NULL;
102 
103  if (hFile != NULL)
104  {
105  WIN32FILE_IOWIN w32fiow;
106  w32fiow.hf = hFile;
107  w32fiow.error = 0;
108  ret = malloc(sizeof(WIN32FILE_IOWIN));
109  if (ret==NULL)
110  CloseHandle(hFile);
111  else *((WIN32FILE_IOWIN*)ret) = w32fiow;
112  }
113  return ret;
114 }
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER
Definition: ioapi.h:19
#define ZLIB_FILEFUNC_MODE_CREATE
Definition: ioapi.h:22
const char int mode
Definition: ioapi.h:38
#define INVALID_HANDLE_VALUE
Definition: iowin32.c:17
const char * filename
Definition: ioapi.h:38
HANDLE hf
Definition: iowin32.c:61
#define ZLIB_FILEFUNC_MODE_EXISTING
Definition: ioapi.h:21
#define ZLIB_FILEFUNC_MODE_READ
Definition: ioapi.h:17
typedef voidpf(ZCALLBACK *open_file_func) OF((voidpf opaque

◆ win32_read_file_func()

uLong ZCALLBACK win32_read_file_func ( voidpf  opaque,
voidpf  stream,
void*  buf,
uLong  size 
)

Definition at line 117 of file iowin32.c.

122 {
123  uLong ret=0;
124  HANDLE hFile = NULL;
125  if (stream!=NULL)
126  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
127  if (hFile != NULL)
128  if (!ReadFile(hFile, buf, size, &ret, NULL))
129  {
130  DWORD dwErr = GetLastError();
131  if (dwErr == ERROR_HANDLE_EOF)
132  dwErr = 0;
133  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
134  }
135 
136  return ret;
137 }
voidpf stream
Definition: ioapi.h:39
voidpf void uLong size
Definition: ioapi.h:39
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
voidpf void * buf
Definition: ioapi.h:39

◆ win32_seek_file_func()

long ZCALLBACK win32_seek_file_func ( voidpf  opaque,
voidpf  stream,
uLong  offset,
int  origin 
)

Definition at line 186 of file iowin32.c.

191 {
192  DWORD dwMoveMethod=0xFFFFFFFF;
193  HANDLE hFile = NULL;
194 
195  long ret=-1;
196  if (stream!=NULL)
197  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
198  switch (origin)
199  {
201  dwMoveMethod = FILE_CURRENT;
202  break;
204  dwMoveMethod = FILE_END;
205  break;
207  dwMoveMethod = FILE_BEGIN;
208  break;
209  default: return -1;
210  }
211 
212  if (hFile != NULL)
213  {
214  DWORD dwSet = SetFilePointer(hFile, offset, NULL, dwMoveMethod);
215  if (dwSet == INVALID_SET_FILE_POINTER)
216  {
217  DWORD dwErr = GetLastError();
218  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
219  ret = -1;
220  }
221  else
222  ret=0;
223  }
224  return ret;
225 }
voidpf stream
Definition: ioapi.h:39
voidpf uLong offset
Definition: ioapi.h:42
#define ZLIB_FILEFUNC_SEEK_SET
Definition: ioapi.h:15
#define ZLIB_FILEFUNC_SEEK_END
Definition: ioapi.h:14
#define ZLIB_FILEFUNC_SEEK_CUR
Definition: ioapi.h:13
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
voidpf uLong int origin
Definition: ioapi.h:42
#define INVALID_SET_FILE_POINTER
Definition: iowin32.c:21

◆ win32_tell_file_func()

long ZCALLBACK win32_tell_file_func ( voidpf  opaque,
voidpf  stream 
)

Definition at line 163 of file iowin32.c.

166 {
167  long ret=-1;
168  HANDLE hFile = NULL;
169  if (stream!=NULL)
170  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
171  if (hFile != NULL)
172  {
173  DWORD dwSet = SetFilePointer(hFile, 0, NULL, FILE_CURRENT);
174  if (dwSet == INVALID_SET_FILE_POINTER)
175  {
176  DWORD dwErr = GetLastError();
177  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
178  ret = -1;
179  }
180  else
181  ret=(long)dwSet;
182  }
183  return ret;
184 }
voidpf stream
Definition: ioapi.h:39
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
#define INVALID_SET_FILE_POINTER
Definition: iowin32.c:21

◆ win32_write_file_func()

uLong ZCALLBACK win32_write_file_func ( voidpf  opaque,
voidpf  stream,
const void*  buf,
uLong  size 
)

Definition at line 140 of file iowin32.c.

145 {
146  uLong ret=0;
147  HANDLE hFile = NULL;
148  if (stream!=NULL)
149  hFile = ((WIN32FILE_IOWIN*)stream) -> hf;
150 
151  if (hFile !=NULL)
152  if (!WriteFile(hFile, buf, size, &ret, NULL))
153  {
154  DWORD dwErr = GetLastError();
155  if (dwErr == ERROR_HANDLE_EOF)
156  dwErr = 0;
157  ((WIN32FILE_IOWIN*)stream) -> error=(int)dwErr;
158  }
159 
160  return ret;
161 }
voidpf stream
Definition: ioapi.h:39
voidpf void uLong size
Definition: ioapi.h:39
typedef uLong(ZCALLBACK *read_file_func) OF((voidpf opaque
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
voidpf void * buf
Definition: ioapi.h:39