1/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_flush.c,v 1.3.2.1 2010-06-08 18:50:42 bfriesen 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. 29 */ 30#include "tiffiop.h" 31 32int 33TIFFFlush(TIFF* tif) 34{ 35 36 if (tif->tif_mode != O_RDONLY) { 37 if (!TIFFFlushData(tif)) 38 return (0); 39 if ((tif->tif_flags & TIFF_DIRTYDIRECT) && 40 !TIFFWriteDirectory(tif)) 41 return (0); 42 } 43 return (1); 44} 45 46/* 47 * Flush buffered data to the file. 48 * 49 * Frank Warmerdam'2000: I modified this to return 1 if TIFF_BEENWRITING 50 * is not set, so that TIFFFlush() will proceed to write out the directory. 51 * The documentation says returning 1 is an error indicator, but not having 52 * been writing isn't exactly a an error. Hopefully this doesn't cause 53 * problems for other people. 54 */ 55int 56TIFFFlushData(TIFF* tif) 57{ 58 if ((tif->tif_flags & TIFF_BEENWRITING) == 0) 59 return (0); 60 if (tif->tif_flags & TIFF_POSTENCODE) { 61 tif->tif_flags &= ~TIFF_POSTENCODE; 62 if (!(*tif->tif_postencode)(tif)) 63 return (0); 64 } 65 return (TIFFFlushData1(tif)); 66} 67 68/* 69 * Local Variables: 70 * mode: c 71 * c-basic-offset: 8 72 * fill-column: 78 73 * End: 74 */ 75