ERR: Implement the macros ERR_raise() and ERR_raise_data() and use them
authorRichard Levitte <levitte@openssl.org>
Wed, 24 Jul 2019 11:13:52 +0000 (13:13 +0200)
committerRichard Levitte <levitte@openssl.org>
Wed, 31 Jul 2019 04:43:21 +0000 (06:43 +0200)
commited57f7f93508776b898e4c23b65d67f3479edaf1
tree45bc03bdd15c9aa069102cf402dc3da79d2577e9
parent7c0e20dc6f11aa506abc99ccc90b3a39c48c3052
ERR: Implement the macros ERR_raise() and ERR_raise_data() and use them

The ERR_raise() macro uses a trick in C.  The following is permitted:

    #include <stdio.h>

    void first(void)
    {
        printf("Hello! ");
    }

    void foo(const char *bar)
    {
        printf("%s", bar);
    }

    int main()
    {
        /* This */
        (first(),foo)("cookie");
    }

ERR_raise_data() can be used to implement FUNCerr() as well, which
takes away the need for the special function ERR_put_func_error().

Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/9452)
doc/man3/ERR_put_error.pod
include/openssl/err.h
util/private.num