Return-Path: <tiff-bounces@lists.maptools.org>
X-Original-To: info@awaresystems.be
Delivered-To: info@awaresystems.be
Received: from mx-l.b-one.net (mx-l.one.com [91.198.169.59])
	by mail9.b-one.net (Postfix) with ESMTP id BE3A540080A
	for <info@awaresystems.be>; Tue,  2 Mar 2010 15:40:39 +0100 (CET)
Received: by mx-l.b-one.net (Postfix, from userid 106)
	id 94999E71A9B; Tue,  2 Mar 2010 15:40:38 +0100 (CET)
X-Virus-Scanned: by one.com
X-Spam-Score: 0
X-Spam-Level: 
X-Spam-Status: No, score=0 tagged_above=0 required=4 tests=[none]
X-Greylist: domain auto-whitelisted by SQLgrey-1.7.4
Received: from lists.maptools.org (lists.maptools.org [65.39.174.144]) by
 mx-l.b-one.net (Postfix) with ESMTP id CC8C1E75B40 for
 <info@awaresystems.be>; Tue,  2 Mar 2010 15:40:37 +0100 (CET)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by
 lists.maptools.org (Postfix) with ESMTP id DC3FA1D18E87F; Tue,  2 Mar 2010
 09:40:06 -0500 (EST)
Received: from mail.sidefx.com (mail.sidefx.com [38.99.137.163]) by
 lists.maptools.org (Postfix) with ESMTP id 5CAC01D1F41A4 for
 <tiff@lists.maptools.org>; Tue,  2 Mar 2010 09:21:59 -0500 (EST)
Message-ID: <4B8D1EF5.5060003@sidefx.com>
Date: Tue, 02 Mar 2010 09:21:41 -0500
From: Edward Lam <edward@sidefx.com>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
To: Eric Doenges <doenges@mvtec.com>
References: <4B878218.8@mvtec.com>
 <alpine.GSO.2.01.1002261048300.1592@freddy.simplesystems.org>
 <4B8CC8CF.7040807@mvtec.com>
In-Reply-To: <4B8CC8CF.7040807@mvtec.com>
Cc: tiff@lists.maptools.org
Subject: Re: [Tiff] Patch for tif_unix.c
X-BeenThere: tiff@lists.maptools.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TIFF and libtiff discussion <tiff.lists.maptools.org>
List-Unsubscribe: <http://lists.maptools.org/mailman/listinfo/tiff>,
 <mailto:tiff-request@lists.maptools.org?subject=unsubscribe>
List-Archive: <http://lists.maptools.org/mailman/private/tiff>
List-Post: <mailto:tiff@lists.maptools.org>
List-Help: <mailto:tiff-request@lists.maptools.org?subject=help>
List-Subscribe: <http://lists.maptools.org/mailman/listinfo/tiff>,
 <mailto:tiff-request@lists.maptools.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: tiff-bounces@lists.maptools.org
Errors-To: tiff-bounces@lists.maptools.org

Eric Doenges wrote:
> 1) Can I simply assume that SSIZE_MAX will be defined in <limits.h>, and
> that <limits.h> will be available for all platforms that matter to libtiff ?

If Visual Studio has SSIZE_MAX in <limits.h>, then it probably will be. :)

As for the patch, I alluded earlier (poorly?) that ssize_t is not 
available on all platforms. Specifically, it's not available on Windows. 
Despite it's name, tif_unix.c has been known to be used on Windows by 
people. Looking at the source in some detail now, tmsize_t looks to be 
the cross-platform signed equivalent to size_t in libtiff. Note also 
that _tiff{Read,Write}Proc() already tries to carefully ensure that 
"(size_t)size == (tmsize_t)size". Given this, I suspect that your extra 
checks with SSIZE_MAX are probably unnecessary?

I've probably missed something but I think the original patch was 
sufficient (EINTR issues notwithstanding) as long as "bytes" was 
declared as a tmsize_t?

> 2) What is the correct response to receiving EINTR (i.e. being
> interrupted before any data is read/written) ? Should the IO operation
> simply be retried in _tiffReadProc/_tiffWriteProc, or should the caller
> handle it ?

To me, this is a thorny issue. On Windows, signals don't exist so you 
can't exactly check for EINTR. Two ideas off the top of my head:

- Continue punting. We've lasted this long without it. :) One rationale 
is to force users to use SA_RESTART with sigaction. Of course it doesn't 
help you if you're on one of those systems that don't support this. In 
which case, the caller needs to revert back to providing their own 
custom handlers again. Does your particular system support SA_RESTART?

- Wrap the read()/write() calls using the TEMP_FAILURE_RETRY() macro and 
configure it properly depending on the platform. (See: 
http://www.gnu.org/s/libc/manual/html_node/Interrupted-Primitives.html#Interrupted-Primitives)


Regards,
-Edward
_______________________________________________
Tiff mailing list: Tiff@lists.maptools.org
http://lists.maptools.org/mailman/listinfo/tiff
http://www.remotesensing.org/libtiff/
