PageRenderTime 27ms CodeModel.GetById 18ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/src/FreeImage/Source/LibTIFF/tif_msdos.c

https://bitbucket.org/cabalistic/ogredeps/
C | 193 lines | 127 code | 26 blank | 40 comment | 12 complexity | 8d26eb7bf0f6707d12e1f842811c7e7f MD5 | raw file
  1/* $Header: /cvsroot/freeimage/FreeImage/Source/LibTIFF/tif_msdos.c,v 1.35 2011/04/10 17:14:09 drolon Exp $ */
  2
  3/*
  4 * Copyright (c) 1988-1997 Sam Leffler
  5 * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  6 *
  7 * Permission to use, copy, modify, distribute, and sell this software and 
  8 * its documentation for any purpose is hereby granted without fee, provided
  9 * that (i) the above copyright notices and this permission notice appear in
 10 * all copies of the software and related documentation, and (ii) the names of
 11 * Sam Leffler and Silicon Graphics may not be used in any advertising or
 12 * publicity relating to the software without the specific, prior written
 13 * permission of Sam Leffler and Silicon Graphics.
 14 * 
 15 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
 16 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
 17 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
 18 * 
 19 * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
 20 * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
 21 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
 22 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
 23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
 24 * OF THIS SOFTWARE.
 25 */
 26
 27/*
 28 * TIFF Library MSDOS-specific Routines.
 29 */
 30#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
 31#include <io.h>		/* for open, close, etc. function prototypes */
 32#include <stdio.h>
 33#endif
 34#include "tiffiop.h"
 35
 36static tsize_t 
 37_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
 38{
 39	return (read((int) fd, buf, size));
 40}
 41
 42static tsize_t
 43_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
 44{
 45	return (write((int) fd, buf, size));
 46}
 47
 48static toff_t
 49_tiffSeekProc(thandle_t fd, toff_t off, int whence)
 50{
 51	return (lseek((int) fd, (off_t) off, whence));
 52}
 53
 54static int
 55_tiffCloseProc(thandle_t fd)
 56{
 57	return (close((int) fd));
 58}
 59
 60#include <sys/stat.h>
 61
 62static toff_t
 63_tiffSizeProc(thandle_t fd)
 64{
 65	struct stat sb;
 66	return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
 67}
 68
 69static int
 70_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
 71{
 72	return (0);
 73}
 74
 75static void
 76_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
 77{
 78}
 79
 80/*
 81 * Open a TIFF file descriptor for read/writing.
 82 */
 83TIFF*
 84TIFFFdOpen(int fd, const char* name, const char* mode)
 85{
 86	TIFF* tif;
 87
 88	tif = TIFFClientOpen(name, mode,
 89	    (void*) fd,
 90	    _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
 91	    _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
 92	if (tif)
 93		tif->tif_fd = fd;
 94	return (tif);
 95}
 96
 97/*
 98 * Open a TIFF file for read/writing.
 99 */
100TIFF*
101TIFFOpen(const char* name, const char* mode)
102{
103	static const char module[] = "TIFFOpen";
104	int m, fd;
105        TIFF *ret;
106
107	m = _TIFFgetMode(mode, module);
108	if (m == -1)
109		return ((TIFF*)0);
110	fd = open(name, m|O_BINARY, 0666);
111	if (fd < 0) {
112		TIFFErrorExt(0, module, "%s: Cannot open", name);
113		return ((TIFF*)0);
114	}
115	return (TIFFFdOpen(fd, name, mode));
116
117        ret = TIFFFdOpen(fd, name, mode);
118
119        if (ret == NULL) close(fd);
120
121        return ret;
122}
123
124#ifdef __GNUC__
125extern	char* malloc();
126extern	char* realloc();
127#else
128#include <malloc.h>
129#endif
130
131tdata_t
132_TIFFmalloc(tsize_t s)
133{
134	return (malloc((size_t) s));
135}
136
137void
138_TIFFfree(tdata_t p)
139{
140	free(p);
141}
142
143tdata_t
144_TIFFrealloc(tdata_t p, tsize_t s)
145{
146	return (realloc(p, (size_t) s));
147}
148
149void
150_TIFFmemset(tdata_t p, int v, tsize_t c)
151{
152	memset(p, v, (size_t) c);
153}
154
155void
156_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
157{
158	memcpy(d, s, (size_t) c);
159}
160
161int
162_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
163{
164	return (memcmp(p1, p2, (size_t) c));
165}
166
167static void
168msdosWarningHandler(const char* module, const char* fmt, va_list ap)
169{
170	if (module != NULL)
171		fprintf(stderr, "%s: ", module);
172	fprintf(stderr, "Warning, ");
173	vfprintf(stderr, fmt, ap);
174	fprintf(stderr, ".\n");
175}
176TIFFErrorHandler _TIFFwarningHandler = msdosWarningHandler;
177
178static void
179msdosErrorHandler(const char* module, const char* fmt, va_list ap)
180{
181	if (module != NULL)
182		fprintf(stderr, "%s: ", module);
183	vfprintf(stderr, fmt, ap);
184	fprintf(stderr, ".\n");
185}
186TIFFErrorHandler _TIFFerrorHandler = msdosErrorHandler;
187/*
188 * Local Variables:
189 * mode: c
190 * c-basic-offset: 8
191 * fill-column: 78
192 * End:
193 */