diff options
author | Clint Adams <clint@debian.org> | 2021-08-31 08:53:27 -0400 |
---|---|---|
committer | Clint Adams <clint@debian.org> | 2021-08-31 08:53:27 -0400 |
commit | f24d9c72cbde1abddef18e427b818e5b6266a5e0 (patch) | |
tree | f10e939c9cb7b767cb51dce4a84ec9872f3c61b1 /lib/getprogname.c | |
parent | c7cd1604feb9bce8b62e9a5a306b8eeb30a11c97 (diff) | |
parent | c50de48f2ed0b9476c3389fd07a85a5e8be798e2 (diff) |
Update upstream source from tag 'upstream/v4.8'
Update to upstream version '4.8'
with Debian dir 33bfe3afa4d1f33d660b71d89a5ac3eba646cc82
Diffstat (limited to 'lib/getprogname.c')
-rw-r--r-- | lib/getprogname.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/getprogname.c b/lib/getprogname.c index 58da144..9f69f5a 100644 --- a/lib/getprogname.c +++ b/lib/getprogname.c @@ -1,5 +1,5 @@ /* Program name management. - Copyright (C) 2016-2018 Free Software Foundation, Inc. + Copyright (C) 2016-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,10 +70,10 @@ getprogname (void) p = "?"; return last_component (p); # elif HAVE_DECL___ARGV /* mingw, MSVC */ - /* https://msdn.microsoft.com/en-us/library/dn727674.aspx */ + /* https://docs.microsoft.com/en-us/cpp/c-runtime-library/argc-argv-wargv */ const char *p = __argv && __argv[0] ? __argv[0] : "?"; return last_component (p); -# elif HAVE_VAR___PROGNAME /* OpenBSD, QNX */ +# elif HAVE_VAR___PROGNAME /* OpenBSD, Android, QNX */ /* https://man.openbsd.org/style.9 */ /* http://www.qnx.de/developers/docs/6.5.0/index.jsp?topic=%2Fcom.qnx.doc.neutrino_lib_ref%2Fp%2F__progname.html */ /* Be careful to declare this only when we absolutely need it @@ -82,7 +82,11 @@ getprogname (void) malfunction (have zero length) with Fedora 25's glibc. */ extern char *__progname; const char *p = __progname; +# if defined __ANDROID__ + return last_component (p); +# else return p && p[0] ? p : "?"; +# endif # elif _AIX /* AIX */ /* Idea by Bastien ROUCARIÈS, https://lists.gnu.org/r/bug-gnulib/2010-12/msg00095.html @@ -229,12 +233,13 @@ getprogname (void) { char *name = buf.pr_fname; size_t namesize = sizeof buf.pr_fname; + /* It may not be NUL-terminated. */ char *namenul = memchr (name, '\0', namesize); size_t namelen = namenul ? namenul - name : namesize; char *namecopy = malloc (namelen + 1); if (namecopy) { - namecopy[namelen] = 0; + namecopy[namelen] = '\0'; return memcpy (namecopy, name, namelen); } } |