tif_msdos.c
上传用户:looem2003
上传日期:2014-07-20
资源大小:13733k
文件大小:4k
源码类别:

打印编程

开发平台:

Visual C++

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