diff options
Diffstat (limited to 'tiff/contrib/mfs')
-rw-r--r-- | tiff/contrib/mfs/Makefile.am | 28 | ||||
-rw-r--r-- | tiff/contrib/mfs/Makefile.in | 421 | ||||
-rw-r--r-- | tiff/contrib/mfs/README | 37 | ||||
-rw-r--r-- | tiff/contrib/mfs/mfs_file.c | 586 |
4 files changed, 0 insertions, 1072 deletions
diff --git a/tiff/contrib/mfs/Makefile.am b/tiff/contrib/mfs/Makefile.am deleted file mode 100644 index 9a398c5..0000000 --- a/tiff/contrib/mfs/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -# Tag Image File Format (TIFF) Software -# -# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> -# -# Permission to use, copy, modify, distribute, and sell this software and -# its documentation for any purpose is hereby granted without fee, provided -# that (i) the above copyright notices and this permission notice appear in -# all copies of the software and related documentation, and (ii) the names of -# Sam Leffler and Silicon Graphics may not be used in any advertising or -# publicity relating to the software without the specific, prior written -# permission of Sam Leffler and Silicon Graphics. -# -# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, -# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -# -# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR -# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, -# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF -# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -# OF THIS SOFTWARE. - -# Process this file with automake to produce Makefile.in. - -EXTRA_DIST = README mfs_file.c - -INCLUDES = -I../../libtiff -I$(top_srcdir)/libtiff
\ No newline at end of file diff --git a/tiff/contrib/mfs/Makefile.in b/tiff/contrib/mfs/Makefile.in deleted file mode 100644 index e7e7850..0000000 --- a/tiff/contrib/mfs/Makefile.in +++ /dev/null @@ -1,421 +0,0 @@ -# Makefile.in generated by automake 1.11 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -# Tag Image File Format (TIFF) Software -# -# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu> -# -# Permission to use, copy, modify, distribute, and sell this software and -# its documentation for any purpose is hereby granted without fee, provided -# that (i) the above copyright notices and this permission notice appear in -# all copies of the software and related documentation, and (ii) the names of -# Sam Leffler and Silicon Graphics may not be used in any advertising or -# publicity relating to the software without the specific, prior written -# permission of Sam Leffler and Silicon Graphics. -# -# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, -# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -# -# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR -# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, -# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF -# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -# OF THIS SOFTWARE. - -# Process this file with automake to produce Makefile.in. -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = contrib/mfs -DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/acinclude.m4 \ - $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ - $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ - $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs -CONFIG_HEADER = $(top_builddir)/libtiff/tif_config.h \ - $(top_builddir)/libtiff/tiffconf.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GLUT_CFLAGS = @GLUT_CFLAGS@ -GLUT_LIBS = @GLUT_LIBS@ -GLU_CFLAGS = @GLU_CFLAGS@ -GLU_LIBS = @GLU_LIBS@ -GL_CFLAGS = @GL_CFLAGS@ -GL_LIBS = @GL_LIBS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBDIR = @LIBDIR@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTIFF_ALPHA_VERSION = @LIBTIFF_ALPHA_VERSION@ -LIBTIFF_DOCDIR = @LIBTIFF_DOCDIR@ -LIBTIFF_MAJOR_VERSION = @LIBTIFF_MAJOR_VERSION@ -LIBTIFF_MICRO_VERSION = @LIBTIFF_MICRO_VERSION@ -LIBTIFF_MINOR_VERSION = @LIBTIFF_MINOR_VERSION@ -LIBTIFF_RELEASE_DATE = @LIBTIFF_RELEASE_DATE@ -LIBTIFF_VERSION = @LIBTIFF_VERSION@ -LIBTIFF_VERSION_INFO = @LIBTIFF_VERSION_INFO@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PTHREAD_CC = @PTHREAD_CC@ -PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ -PTHREAD_LIBS = @PTHREAD_LIBS@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -XMKMF = @XMKMF@ -X_CFLAGS = @X_CFLAGS@ -X_EXTRA_LIBS = @X_EXTRA_LIBS@ -X_LIBS = @X_LIBS@ -X_PRE_LIBS = @X_PRE_LIBS@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -acx_pthread_config = @acx_pthread_config@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = README mfs_file.c -INCLUDES = -I../../libtiff -I$(top_srcdir)/libtiff -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign contrib/mfs/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign contrib/mfs/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/tiff/contrib/mfs/README b/tiff/contrib/mfs/README deleted file mode 100644 index 6f9befb..0000000 --- a/tiff/contrib/mfs/README +++ /dev/null @@ -1,37 +0,0 @@ -Date: Mon, 23 Jun 1997 13:30:48 +0200 -To: <sam@cthulhu.engr.sgi.com> - -From: "Mike Johnson" <mikehunt@swipnet.se> -Subject: libtiff - Thanks - -Return-Path: mikehunt@swipnet.se -Delivery-Date: Mon, 23 Jun 1997 06:53:39 -0700 - -Hi Sam, - -I noticed in the README from libtiff that you would like to know about -what people have done with libtiff, so I thought I would drop you a -line. - -We have used libtiff to create and convert TIFF images of financial -documents which are sent from and to major document processing systems -in Sweden and Denmark. - -I would like to express my deep gratitude to yourself and Sillicon -Graphics for making this excellent library available for public use. -There is obviously a lot of work that has gone in to libtiff and the -quality of the code and documentation is an example to others. - -One thing that libtiff did not do was work on a memory area rather than -files. In my applications I had already read a TIFF or other format -file in to memory and did not want to waste I/O writing it out again -for libtiff's benefit. I therefore constructed a set of functions to -pass up to TIFFClientOpen to simulate a file in memory. I have attached -my mfs (memory file system) source code for you to use or junk, as you -see fit. :-) - -Once again, thanks very much for making my life simpler. - -Best Regards, - -Mike Johnson. diff --git a/tiff/contrib/mfs/mfs_file.c b/tiff/contrib/mfs/mfs_file.c deleted file mode 100644 index 6675e2a..0000000 --- a/tiff/contrib/mfs/mfs_file.c +++ /dev/null @@ -1,586 +0,0 @@ -/* --------------------------------------------------------------------------------- -- Module : mem_file.c -- Description : A general purpose library for manipulating a memory area -- as if it were a file. -- mfs_ stands for memory file system. -- Author : Mike Johnson - Banctec AB 03/07/96 -- --------------------------------------------------------------------------------- -*/ - -/* - -Copyright (c) 1996 Mike Johnson -Copyright (c) 1996 BancTec AB - -Permission to use, copy, modify, distribute, and sell this software -for any purpose is hereby granted without fee, provided -that (i) the above copyright notices and this permission notice appear in -all copies of the software and related documentation, and (ii) the names of -Mike Johnson and BancTec may not be used in any advertising or -publicity relating to the software. - -THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, -EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -IN NO EVENT SHALL MIKE JOHNSON OR BANCTEC BE LIABLE FOR -ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, -OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, -WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF -LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -OF THIS SOFTWARE. - -*/ - - -/* --------------------------------------------------------------------------------- -- Includes --------------------------------------------------------------------------------- -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -/* --------------------------------------------------------------------------------- -- Definitions --------------------------------------------------------------------------------- -*/ - -#define MAX_BUFFS 20 -#define FALSE 0 -#define TRUE 1 - -/* --------------------------------------------------------------------------------- -- Globals --------------------------------------------------------------------------------- -*/ - -static char *buf[MAX_BUFFS]; /* Memory for each open buf */ -static long buf_off[MAX_BUFFS]; /* File pointer for each buf */ -static long buf_size[MAX_BUFFS]; /* Count of bytes allocated for each buf */ -static long fds[MAX_BUFFS]; /* File descriptor status */ -static int buf_mode[MAX_BUFFS]; /* Mode of buffer (r, w, a) */ - -static int library_init_done = FALSE; - - -/* --------------------------------------------------------------------------------- -- Function prototypes --------------------------------------------------------------------------------- -*/ - -int mfs_open (void *ptr, int size, char *mode); -int mfs_lseek (int fd, int offset, int whence); -int mfs_read (int fd, void *buf, int size); -int mfs_write (int fd, void *buf, int size); -int mfs_size (int fd); -int mfs_map (int fd, char **addr, size_t *len); -int mfs_unmap (int fd); -int mfs_close (int fd); -static int extend_mem_file (int fd, int size); -static void mem_init (); - -/* --------------------------------------------------------------------------------- -- Function code --------------------------------------------------------------------------------- -*/ - -/* --------------------------------------------------------------------------------- -- Function : mfs_open () -- -- Arguments : Pointer to allocated buffer, initial size of buffer, -- mode spec (r, w, a) -- -- Returns : File descriptor or -1 if error. -- -- Description : Register this area of memory (which has been allocated -- and has a file read into it) under the mem_file library. -- A file descriptor is returned which can the be passed -- back to TIFFClientOpen and used as if it was a disk -- based fd. -- If the call is for mode 'w' then pass (void *)NULL as -- the buffer and zero size and the library will -- allocate memory for you. -- If the mode is append then pass (void *)NULL and size -- zero or with a valid address. -- --------------------------------------------------------------------------------- -*/ - -int mfs_open (void *buffer, int size, char *mode) -{ - int ret, i; - void *tmp; - - if (library_init_done == FALSE) - { - mem_init (); - library_init_done = TRUE; - } - - ret = -1; - - /* Find a free fd */ - - for (i = 0; i < MAX_BUFFS; i++) - { - if (fds[i] == -1) - { - ret = i; - break; - } - } - - if (i == MAX_BUFFS) /* No more free descriptors */ - { - ret = -1; - errno = EMFILE; - } - - if (ret >= 0 && *mode == 'r') - { - if (buffer == (void *)NULL) - { - ret = -1; - errno = EINVAL; - } - else - { - buf[ret] = (char *)buffer; - buf_size[ret] = size; - buf_off[ret] = 0; - } - } - else if (ret >= 0 && *mode == 'w') - { - - if (buffer != (void *)NULL) - { - ret = -1; - errno = EINVAL; - } - - else - { - tmp = malloc (0); /* Get a pointer */ - if (tmp == (void *)NULL) - { - ret = -1; - errno = EDQUOT; - } - else - { - buf[ret] = (char *)tmp; - buf_size[ret] = 0; - buf_off[ret] = 0; - } - } - } - else if (ret >= 0 && *mode == 'a') - { - if (buffer == (void *) NULL) /* Create space for client */ - { - tmp = malloc (0); /* Get a pointer */ - if (tmp == (void *)NULL) - { - ret = -1; - errno = EDQUOT; - } - else - { - buf[ret] = (char *)tmp; - buf_size[ret] = 0; - buf_off[ret] = 0; - } - } - else /* Client has file read in already */ - { - buf[ret] = (char *)buffer; - buf_size[ret] = size; - buf_off[ret] = 0; - } - } - else /* Some other invalid combination of parameters */ - { - ret = -1; - errno = EINVAL; - } - - if (ret != -1) - { - fds[ret] = 0; - buf_mode[ret] = *mode; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_lseek () -- -- Arguments : File descriptor, offset, whence -- -- Returns : as per man lseek (2) -- -- Description : Does the same as lseek (2) except on a memory based file. -- Note: the memory area will be extended if the caller -- attempts to seek past the current end of file (memory). -- --------------------------------------------------------------------------------- -*/ - -int mfs_lseek (int fd, int offset, int whence) -{ - int ret; - long test_off; - - if (fds[fd] == -1) /* Not open */ - { - ret = -1; - errno = EBADF; - } - else if (offset < 0 && whence == SEEK_SET) - { - ret = -1; - errno = EINVAL; - } - else - { - switch (whence) - { - case SEEK_SET: - if (offset > buf_size[fd]) - extend_mem_file (fd, offset); - buf_off[fd] = offset; - ret = offset; - break; - - case SEEK_CUR: - test_off = buf_off[fd] + offset; - - if (test_off < 0) - { - ret = -1; - errno = EINVAL; - } - else - { - if (test_off > buf_size[fd]) - extend_mem_file (fd, test_off); - buf_off[fd] = test_off; - ret = test_off; - } - break; - - case SEEK_END: - test_off = buf_size[fd] + offset; - - if (test_off < 0) - { - ret = -1; - errno = EINVAL; - } - else - { - if (test_off > buf_size[fd]) - extend_mem_file (fd, test_off); - buf_off[fd] = test_off; - ret = test_off; - } - break; - - default: - errno = EINVAL; - ret = -1; - break; - } - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_read () -- -- Arguments : File descriptor, buffer, size -- -- Returns : as per man read (2) -- -- Description : Does the same as read (2) except on a memory based file. -- Note: An attempt to read past the end of memory currently -- allocated to the file will return 0 (End Of File) -- --------------------------------------------------------------------------------- -*/ - -int mfs_read (int fd, void *clnt_buf, int size) -{ - int ret; - - if (fds[fd] == -1 || buf_mode[fd] != 'r') - { - /* File is either not open, or not opened for read */ - - ret = -1; - errno = EBADF; - } - else if (buf_off[fd] + size > buf_size[fd]) - { - ret = 0; /* EOF */ - } - else - { - memcpy (clnt_buf, (void *) (buf[fd] + buf_off[fd]), size); - buf_off[fd] = buf_off[fd] + size; - ret = size; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_write () -- -- Arguments : File descriptor, buffer, size -- -- Returns : as per man write (2) -- -- Description : Does the same as write (2) except on a memory based file. -- Note: the memory area will be extended if the caller -- attempts to write past the current end of file (memory). -- --------------------------------------------------------------------------------- -*/ - -int mfs_write (int fd, void *clnt_buf, int size) -{ - int ret; - - if (fds[fd] == -1 || buf_mode[fd] == 'r') - { - /* Either the file is not open or it is opened for reading only */ - - ret = -1; - errno = EBADF; - } - else if (buf_mode[fd] == 'w') - { - /* Write */ - - if (buf_off[fd] + size > buf_size[fd]) - { - extend_mem_file (fd, buf_off[fd] + size); - buf_size[fd] = (buf_off[fd] + size); - } - - memcpy ((buf[fd] + buf_off[fd]), clnt_buf, size); - buf_off[fd] = buf_off[fd] + size; - - ret = size; - } - else - { - /* Append */ - - if (buf_off[fd] != buf_size[fd]) - buf_off[fd] = buf_size[fd]; - - extend_mem_file (fd, buf_off[fd] + size); - buf_size[fd] += size; - - memcpy ((buf[fd] + buf_off[fd]), clnt_buf, size); - buf_off[fd] = buf_off[fd] + size; - - ret = size; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_size () -- -- Arguments : File descriptor -- -- Returns : integer file size -- -- Description : This function returns the current size of the file in bytes. -- --------------------------------------------------------------------------------- -*/ - -int mfs_size (int fd) -{ - int ret; - - if (fds[fd] == -1) /* Not open */ - { - ret = -1; - errno = EBADF; - } - else - ret = buf_size[fd]; - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_map () -- -- Arguments : File descriptor, ptr to address, ptr to length -- -- Returns : Map status (succeeded or otherwise) -- -- Description : This function tells the client where the file is mapped -- in memory and what size the mapped area is. It is provided -- to satisfy the MapProc function in libtiff. It pretends -- that the file has been mmap (2)ped. -- --------------------------------------------------------------------------------- -*/ - -int mfs_map (int fd, char **addr, size_t *len) -{ - int ret; - - if (fds[fd] == -1) /* Not open */ - { - ret = -1; - errno = EBADF; - } - else - { - *addr = buf[fd]; - *len = buf_size[fd]; - ret = 0; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_unmap () -- -- Arguments : File descriptor -- -- Returns : UnMap status (succeeded or otherwise) -- -- Description : This function does nothing as the file is always -- in memory. -- --------------------------------------------------------------------------------- -*/ - -int mfs_unmap (int fd) -{ - return (0); -} - -/* --------------------------------------------------------------------------------- -- Function : mfs_close () -- -- Arguments : File descriptor -- -- Returns : close status (succeeded or otherwise) -- -- Description : Close the open memory file. (Make fd available again.) -- --------------------------------------------------------------------------------- -*/ - -int mfs_close (int fd) -{ - int ret; - - if (fds[fd] == -1) /* Not open */ - { - ret = -1; - errno = EBADF; - } - else - { - fds[fd] = -1; - ret = 0; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : extend_mem_file () -- -- Arguments : File descriptor, length to extend to. -- -- Returns : 0 - All OK, -1 - realloc () failed. -- -- Description : Increase the amount of memory allocated to a file. -- --------------------------------------------------------------------------------- -*/ - -static int extend_mem_file (int fd, int size) -{ - void *new_mem; - int ret; - - if ((new_mem = realloc (buf[fd], size)) == (void *) NULL) - ret = -1; - else - { - buf[fd] = (char *) new_mem; - ret = 0; - } - - return (ret); -} - -/* --------------------------------------------------------------------------------- -- Function : mem_init () -- -- Arguments : None -- -- Returns : void -- -- Description : Initialise the library. -- --------------------------------------------------------------------------------- -*/ - -static void mem_init () -{ - int i; - - for (i = 0; i < MAX_BUFFS; i++) - { - fds[i] = -1; - buf[i] = (char *)NULL; - buf_size[i] = 0; - buf_off[i] = 0; - } -} - -/* - * Local Variables: - * mode: c - * c-basic-offset: 8 - * fill-column: 78 - * End: - */ |