diff options
author | Brent Cook <busterb@gmail.com> | 2019-05-07 02:05:51 -0500 |
---|---|---|
committer | Brent Cook <busterb@gmail.com> | 2019-05-07 02:05:51 -0500 |
commit | e5231b10c1a3a9527cd1cf98349396798efd555a (patch) | |
tree | e3e4363ba5f89ff0bf8c6c50cd6356789597b632 /crypto | |
parent | f6b59c0a086a4e2f683287863ad72792f531a618 (diff) | |
parent | 04aa7f71288b38a4ce18cf0789c52fab3a4e04c2 (diff) | |
download | portable-e5231b10c1a3a9527cd1cf98349396798efd555a.tar.gz portable-e5231b10c1a3a9527cd1cf98349396798efd555a.tar.bz2 portable-e5231b10c1a3a9527cd1cf98349396798efd555a.zip |
Merge branch 'master' into OPENBSD_6_5
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/compat/getprogname_linux.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/crypto/compat/getprogname_linux.c b/crypto/compat/getprogname_linux.c index fefe5ea..2c89743 100644 --- a/crypto/compat/getprogname_linux.c +++ b/crypto/compat/getprogname_linux.c | |||
@@ -5,5 +5,30 @@ | |||
5 | const char * | 5 | const char * |
6 | getprogname(void) | 6 | getprogname(void) |
7 | { | 7 | { |
8 | /* | ||
9 | * Android added getprogname with API 21 [0]. We should not end up here | ||
10 | * with APIs bigger than 21. Still write a precise check. | ||
11 | * | ||
12 | * Since Android is using portions of OpenBSD libc, it should have | ||
13 | * a symbol called __progname [1]. | ||
14 | * | ||
15 | * Regarding program_invocation_short_name, it is a GNU libc ext [2] and | ||
16 | * so make it conditional to __GLIBC__ [3]. | ||
17 | * | ||
18 | * .. [0] https://github.com/aosp-mirror/platform_bionic/blob/1eb6d3/libc/include/stdlib.h#L160 | ||
19 | * | ||
20 | * .. [1] https://github.com/aosp-mirror/platform_bionic/commit/692207 | ||
21 | * | ||
22 | * .. [2] https://linux.die.net/man/3/program_invocation_short_name | ||
23 | * | ||
24 | * .. [3] https://android.googlesource.com/platform/system/core/+/2819c0/base/logging.cpp#65 | ||
25 | */ | ||
26 | #if defined(__ANDROID_API__) && __ANDROID_API__ < 21 | ||
27 | extern const char *__progname; | ||
28 | return __progname; | ||
29 | #elif defined(__GLIBC__) | ||
8 | return program_invocation_short_name; | 30 | return program_invocation_short_name; |
31 | #else | ||
32 | #error "Cannot emulate getprogname" | ||
33 | #endif | ||
9 | } | 34 | } |