1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/base/Errno.h
12 #ifndef ZYPP_BASE_ERRNO_H
13 #define ZYPP_BASE_ERRNO_H
18 #include "zypp/base/String.h"
20 ///////////////////////////////////////////////////////////////////
22 { /////////////////////////////////////////////////////////////////
24 /** Convenience \c errno wrapper. */
28 /** Default ctor: \c errno */
29 Errno() : _errno( errno ) {}
31 /** Ctor set to \c errno if error condition, else \c 0.
33 * int ret = ::write( fd, buffer, size );
34 * DBG << "write returns: " << Errno( ret != size ) << end;
35 * // on success: "write returns: [0-Success]"
36 * // on error e.g.: "write returns: [11-Resource temporarily unavailable]"
39 Errno( bool error_r ) : _errno( error_r ? errno : 0 ) {}
41 /** Ctor taking an explicit errno value. */
42 Errno( int errno_r ) : _errno( errno_r ) {}
45 /** Return the stored errno. */
46 int get() const { return _errno; }
48 /** Allow implicit conversion to \c int. */
49 operator int() const { return get(); }
51 /** Return human readable error string. */
52 std::string asString() const { return str::form( "[%d-%s]", _errno, ::strerror(_errno) ); }
58 /** \relates Errno Stream output */
59 inline std::ostream & operator<<( std::ostream & str, const Errno & obj )
60 { return str << obj.asString(); }
62 /////////////////////////////////////////////////////////////////
64 ///////////////////////////////////////////////////////////////////
65 #endif // ZYPP_BASE_ERRNO_H