/usr/include/wvstreams/wvassert.h is in libwvstreams-dev 4.6.1-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | /* -*- Mode: C++ -*-
 * Worldvisions Weaver Software:
 *   Copyright (C) 2005 Net Integration Technologies, Inc.
 *
 * Helper classes and functions to add more information to WvCrashes.
 */
#ifndef __WVASSERT_H
#define __WVASSERT_H
#include <assert.h>
#include "wvcrash.h"
#include "wvstring.h"
// WvCrash allows you to print a programme's last will and testament.
// That is, a little note about what it was hoping to do before it
// died.
//
// This helper class lets you write a will, and when it gets
// destroyed, it will restore the old will from before.  This lets you
// safely nest them.
class WvCrashWill
{
public:
    // Leave a will behind.
    WvCrashWill(const char *will);
    WvCrashWill(WVSTRING_FORMAT_DECL);
    // Restore the will that was there before you created this object.
    ~WvCrashWill();
    // Rewrite the will you're leaving behind.
    void rewrite(const char *will);
    void rewrite(WVSTRING_FORMAT_DECL);
private:
    WvString old_will;
};
#if !defined(__GLIBC__)
# define wvassert(expr, args...)            assert(expr)
# define wvassert_perror(errnum)            perror(errnum)
#elif defined(NDEBUG)
# define wvassert(expr, args...)	(__ASSERT_VOID_CAST (0))
# define wvassert_perror(errnum)	(__ASSERT_VOID_CAST (0))
#else // Not NDEBUG
static inline void __wvcrash_leave_will()
{
}
static inline void __wvcrash_leave_will(const char *will)
{
    wvcrash_leave_will(will);
}
static inline void __wvcrash_leave_will(WVSTRING_FORMAT_DECL)
{
    wvcrash_leave_will(WvFastString(WVSTRING_FORMAT_CALL));
}
// Use this function instead of assert().  You may also leave parameters
// at the end, which allow you to log messages.  For instance:
//
// wvassert(a == b, "a: '%s'\n b: '%s'", a, b);
# define wvassert(expr, args...) \
  (__ASSERT_VOID_CAST ((expr) ? 0 :					      \
		       (__wvcrash_leave_will (args),			      \
			(__assert_fail (__STRING(expr), __FILE__, __LINE__,   \
					__ASSERT_FUNCTION), 0))))
// Use this function instead of assert_perror().  You may also leave
// parameters at the end, which allow you to log messages.  For instance:
//
// wvassert(errno, "Error trying to read file: '%s'", filename);
#  define wvassert_perror(errnum, args...) \
  (__ASSERT_VOID_CAST (!(errnum) ? 0 :					      \
		       (__wvcrash_leave_will (args),			      \
			(__assert_perror_fail ((errnum), __FILE__, __LINE__,  \
					       __ASSERT_FUNCTION), 0))))
#endif // NDEBUG
#endif // WVASSERT_H
 |