public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin/main] Cygwin: globals: make __progname an alias of program_invocation_short_name
@ 2024-02-01 11:40 Corinna Vinschen
0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2024-02-01 11:40 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=b2476bc5232246278bc6a40e812785270bccb668
commit b2476bc5232246278bc6a40e812785270bccb668
Author: Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Wed Jan 31 15:21:31 2024 +0100
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Wed Jan 31 20:11:58 2024 +0100
Cygwin: globals: make __progname an alias of program_invocation_short_name
On Linux, __progname and program_invocation_short_name are just
different exported names of the same string. Do the same in Cygwin.
This requires to tweak the mkglobals_h so as not to touch the
EXPORT_ALIAS expression. Also, use the base variable
program_invocation_short_name throughout. __progname is just
the export for getopt.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/dcrt0.cc | 18 +++++++++---------
winsup/cygwin/fhandler/serial.cc | 8 ++++----
winsup/cygwin/globals.cc | 8 +++++---
winsup/cygwin/scripts/mkglobals_h | 1 +
winsup/cygwin/strace.cc | 6 +++---
5 files changed, 22 insertions(+), 19 deletions(-)
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index fc1eec76a4a5..a40129c22232 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -924,17 +924,17 @@ dll_crt0_1 (void *)
/* Set up standard fds in file descriptor table. */
cygheap->fdtab.stdio_init ();
- /* Set up __progname for getopt error call. */
- if (__argv[0] && (__progname = strrchr (__argv[0], '/')))
- ++__progname;
- else
- __progname = __argv[0];
+ /* Set up program_invocation_name and program_invocation_short_name.
+ __progname is an export alias for program_invocation_short_name. */
program_invocation_name = __argv[0];
- program_invocation_short_name = __progname;
- if (__progname)
+ if (__argv[0] && (program_invocation_short_name = strrchr (__argv[0], '/')))
+ ++program_invocation_short_name;
+ else
+ program_invocation_short_name = __argv[0];
+ if (program_invocation_short_name)
{
- char *cp = strchr (__progname, '\0') - 4;
- if (cp > __progname && ascii_strcasematch (cp, ".exe"))
+ char *cp = strchr (program_invocation_short_name, '\0') - 4;
+ if (cp > program_invocation_short_name && ascii_strcasematch (cp, ".exe"))
*cp = '\0';
}
SetThreadName (GetCurrentThreadId (), program_invocation_short_name);
diff --git a/winsup/cygwin/fhandler/serial.cc b/winsup/cygwin/fhandler/serial.cc
index e04f8f263217..1f8db5a831a5 100644
--- a/winsup/cygwin/fhandler/serial.cc
+++ b/winsup/cygwin/fhandler/serial.cc
@@ -268,11 +268,11 @@ fhandler_serial::open (int flags, mode_t mode)
FIXME: This should only be done when explicitly opening the com
port. It should not be reset if an fd is inherited.
- Using __progname in this way, to determine how far along in the
- initialization we are, is really a terrible kludge and should
- be fixed ASAP.
+ Using program_invocation_short_name in this way, to determine how far
+ along in the initialization we are, is really a terrible kludge and
+ should be fixed ASAP.
*/
- if (reset_com && __progname)
+ if (reset_com && program_invocation_short_name)
{
DCB state;
GetCommState (get_handle (), &state);
diff --git a/winsup/cygwin/globals.cc b/winsup/cygwin/globals.cc
index a94aa5694e2d..654b836c2890 100644
--- a/winsup/cygwin/globals.cc
+++ b/winsup/cygwin/globals.cc
@@ -149,10 +149,10 @@ extern "C" {
#undef _ROU
char **environ;
- /* __progname used in getopt error message */
- char *__progname;
- char *program_invocation_name;
+ /* __progname used in getopt error message is an alias of
+ program_invocation_short_name. */
char *program_invocation_short_name;
+ char *program_invocation_name;
static MTinterface _mtinterf;
struct per_process __cygwin_user_data =
{/* initial_sp */ 0, /* magic_biscuit */ 0,
@@ -195,3 +195,5 @@ extern "C" {
};
int NO_COPY __api_fatal_exit_val = 1;
+
+EXPORT_ALIAS (program_invocation_short_name, __progname)
diff --git a/winsup/cygwin/scripts/mkglobals_h b/winsup/cygwin/scripts/mkglobals_h
index 2d185f2e8abd..7521a03bfbd3 100755
--- a/winsup/cygwin/scripts/mkglobals_h
+++ b/winsup/cygwin/scripts/mkglobals_h
@@ -4,6 +4,7 @@ $_ = join('', <>);
s/\s+\n/\n/sog;
s/\n[^\n]*!globals.h[^\n]*\n/\n/sog;
s%/\*.*?\*/%%sog;
+s/EXPORT_ALIAS.*\n//so;
s/(enum\s.*?{.*?})/munge($1)/soge;
s/^(\s*)([a-zA-Z_])/$1extern $2/mog;
s/extern (extern|enum)/$1/sog;
diff --git a/winsup/cygwin/strace.cc b/winsup/cygwin/strace.cc
index a1a55d1ecdba..0010a17c74a0 100644
--- a/winsup/cygwin/strace.cc
+++ b/winsup/cygwin/strace.cc
@@ -157,13 +157,13 @@ strace::vsprntf (char *buf, const char *func, const char *infmt, va_list ap)
{
PWCHAR pn = NULL;
WCHAR progname[NAME_MAX];
- if (cygwin_finished_initializing && __progname)
+ if (cygwin_finished_initializing && program_invocation_short_name)
{
- char *p = strrchr (__progname, '/');
+ char *p = strrchr (program_invocation_short_name, '/');
if (p)
++p;
else
- p = __progname;
+ p = program_invocation_short_name;
char *pe = strrchr (p, '.');
if (!pe || !ascii_strcasematch (pe, ".exe"))
pe = strrchr (p, '\0');
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-02-01 11:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-01 11:40 [newlib-cygwin/main] Cygwin: globals: make __progname an alias of program_invocation_short_name Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).