bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: request for update to z/OS progname


From: Bruno Haible
Subject: Re: request for update to z/OS progname
Date: Thu, 01 Jun 2023 16:20:38 +0200

Mike Fulton wrote:
> Yes - good point - this would not work if it was built in 31-bit addressing
> mode, non-XPLINK. 64-bit is always XPLINK. That would be a good addition.

OK, thanks for the confirmation. I pushed this change:


2023-06-01  Bruno Haible  <bruno@clisp.org>

        getprogname: Add support for ASCII-compatible environments in z/OS.
        Reported by Mike Fulton <mikefultonpersonal@gmail.com> in
        <https://lists.gnu.org/archive/html/bug-gnulib/2023-05/msg00198.html>.
        * lib/getprogname.c (getprogname): On z/OS, when compiling for an
        ASCII-compatible environment, convert the result from EBCDIC to ASCII.

diff --git a/lib/getprogname.c b/lib/getprogname.c
index 279d79f012..204855a4a8 100644
--- a/lib/getprogname.c
+++ b/lib/getprogname.c
@@ -212,7 +212,19 @@ getprogname (void)
                 {
                   char *s = strdup (last_component (buf.ps_pathptr));
                   if (s)
-                    p = s;
+                    {
+#  if defined __XPLINK__ && __CHARSET_LIB == 1
+                      /* The compiler option -qascii is in use.
+                         
https://makingdeveloperslivesbetter.wordpress.com/2022/01/07/is-z-os-ascii-or-ebcdic-yes/
+                         
https://www.ibm.com/docs/en/zos/2.5.0?topic=features-macros-related-compiler-option-settings
+                         So, convert the result from EBCDIC to ASCII.
+                         
https://www.ibm.com/docs/en/zos/2.5.0?topic=functions-e2a-s-convert-string-from-ebcdic-ascii
 */
+                      if (__e2a_s (s) == (size_t)-1)
+                        free (s);
+                      else
+#  endif
+                        p = s;
+                    }
                   break;
                 }
             }






reply via email to

[Prev in Thread] Current Thread [Next in Thread]