1=pod
2
3=head1 NAME
4
5OPENSSL_FILE, OPENSSL_LINE, OPENSSL_FUNC,
6OPENSSL_MSTR, OPENSSL_MSTR_HELPER
7- generic C programming utility macros
8
9=head1 SYNOPSIS
10
11 #include <openssl/macros.h>
12
13 #define OPENSSL_FILE /* typically: __FILE__ */
14 #define OPENSSL_LINE /* typically: __LINE__ */
15 #define OPENSSL_FUNC /* typically: __func__ */
16
17 #define OPENSSL_MSTR_HELPER(x) #x
18 #define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x)
19
20=head1 DESCRIPTION
21
22The macros B<OPENSSL_FILE> and B<OPENSSL_LINE>
23typically yield the current filename and line number during C compilation.
24When B<OPENSSL_NO_FILENAMES> is defined they yield B<""> and B<0>, respectively.
25
26The macro B<OPENSSL_FUNC> attempts to yield the name of the C function
27currently being compiled, as far as language and compiler versions allow.
28Otherwise, it yields "(unknown function)".
29
30The macro B<OPENSSL_MSTR> yields the expansion of the macro given as argument,
31which is useful for concatenation with string constants.
32The macro B<OPENSSL_MSTR_HELPER> is an auxiliary macro for this purpose.
33
34=head1 RETURN VALUES
35
36see above
37
38=head1 SEE ALSO
39
40L<crypto(7)>
41
42=head1 HISTORY
43
44B<OPENSSL_FUNC>, B<OPENSSL_MSTR>, and B<OPENSSL_MSTR_HELPER>
45were added in OpenSSL 3.0.
46
47=head1 COPYRIGHT
48
49Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved.
50
51Licensed under the Apache License 2.0 (the "License").  You may not use
52this file except in compliance with the License.  You can obtain a copy
53in the file LICENSE in the source distribution or at
54L<https://www.openssl.org/source/license.html>.
55
56=cut
57