X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..refs/heads/master:/OSX/libsecurity_utilities/lib/errors.h diff --git a/OSX/libsecurity_utilities/lib/errors.h b/OSX/libsecurity_utilities/lib/errors.h index cbc2bd62..b0cf718d 100644 --- a/OSX/libsecurity_utilities/lib/errors.h +++ b/OSX/libsecurity_utilities/lib/errors.h @@ -50,10 +50,15 @@ protected: CommonError(); CommonError(const CommonError &source); public: - virtual ~CommonError() throw (); + virtual ~CommonError() _NOEXCEPT; virtual OSStatus osStatus() const = 0; virtual int unixError() const = 0; + + char whatBuffer[128]; + const size_t whatBufferSize = sizeof(whatBuffer); + + static void LogBacktrace(); }; @@ -64,15 +69,16 @@ public: class UnixError : public CommonError { protected: UnixError(); - UnixError(int err); + UnixError(int err, bool suppresslogging); public: const int error; virtual OSStatus osStatus() const; virtual int unixError() const; - virtual const char *what () const throw (); + virtual const char *what () const _NOEXCEPT; static void check(int result) { if (result == -1) throwMe(); } static void throwMe(int err = errno) __attribute__((noreturn)); + static void throwMeNoLogging(int err = errno) __attribute__((noreturn)); // @@@ This is a hack for the Network protocol state machine static UnixError make(int err = errno) DEPRECATED_ATTRIBUTE; @@ -90,10 +96,11 @@ public: const int error; virtual OSStatus osStatus() const; virtual int unixError() const; - virtual const char *what () const throw (); + virtual const char *what () const _NOEXCEPT; static void check(OSStatus status) { if (status != errSecSuccess) throwMe(status); } static void throwMe(int err) __attribute__((noreturn)); + static void throwMe(int err, char const *message, ...) __attribute__((noreturn)); static MacOSError make(int err); }; @@ -113,7 +120,7 @@ protected: public: virtual OSStatus osStatus() const; virtual int unixError() const; - virtual const char *what () const throw (); + virtual const char *what () const _NOEXCEPT; template static void check(const T &p) { if (!p) throwMe(); }