diff options
Diffstat (limited to 'lib/Handle.cc')
| -rw-r--r-- | lib/Handle.cc | 13 | 
1 files changed, 9 insertions, 4 deletions
| diff --git a/lib/Handle.cc b/lib/Handle.cc index d366382..69f6111 100644 --- a/lib/Handle.cc +++ b/lib/Handle.cc @@ -209,12 +209,12 @@ void Handle::close() throw (GeneralException) {  	    if (c == DEFLATE) {  		err = deflateEnd(&zstrm);  		if (err != Z_OK) { -		    throw (String(_("Error during deflateEnd: ")) + zstrm.msg); +		    throw GeneralException(String(_("Error during deflateEnd: ")) + zstrm.msg);  		}  	    } else {  		err = inflateEnd(&zstrm);  		if (err != Z_OK) { -		    throw (String(_("Error during inflateEnd: ")) + zstrm.msg); +		    throw GeneralException(String(_("Error during inflateEnd: ")) + zstrm.msg);  		}  	    }  	    err = ::close(h); @@ -273,8 +273,13 @@ bool Handle::CanWatch(void) const {      return true;  } -int Handle::Dup() const { -    return dup(h); +int Handle::Dup() const throw (GeneralException) { +    int d; +     +    if ((d = dup(h)) < 0) { +	throw IOGeneral(String(_("Error dupping file `")) + GetName() + _("' (handle ") + h + "): " + strerror(errno) + " (" + errno + ")"); +    } +    return d;  }  void Handle::SetZ(int az) throw (GeneralException) { | 
