From cb93f1ce53ff517e02b3651bcd743fd6a6420b40 Mon Sep 17 00:00:00 2001
From: "James K. Lowden" <jklowden@symas.com>
Date: Fri, 27 Dec 2024 12:00:27 -0500
Subject: [PATCH] eliminate getcwd(3)

---
 gcc/cobol/genapi.cc |  4 ++--
 gcc/cobol/util.cc   | 19 +++++++++++--------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc
index 5951f2f50e96..140d1f886388 100644
--- a/gcc/cobol/genapi.cc
+++ b/gcc/cobol/genapi.cc
@@ -15090,8 +15090,8 @@ move_helper(tree size_error,        // This is an INT
 
   static tree stash = gg_define_variable(UCHAR_P, "..mh_stash", vs_file_static);
 
-  tree st_data;
-  tree st_size;
+  tree st_data = NULL_TREE;
+  tree st_size = NULL_TREE;
 
   if( restore_on_error )
     {
diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
index 662a17ca8c42..141ce1dbb1bb 100644
--- a/gcc/cobol/util.cc
+++ b/gcc/cobol/util.cc
@@ -1985,14 +1985,17 @@ class unique_stack : public std::stack<input_file_t>
     }
     size_t n = c.size();
     if( n > 1 || yydebug ) {
-      static char wd[PATH_MAX];
-      getcwd(wd, sizeof(wd));
-      warnx( "depth line copybook filename\n"
-             "        "
-             "----- ---- --------"
-             "----------------------------------------");
-      for( const auto& v : c ) {
-        warnx( " %4zu %4d %s", c.size() - --n, v.lineno, no_wd(wd, v.name) );
+      char *wd = get_current_dir_name();
+      if( wd ) {
+	warnx( "depth line copybook filename\n"
+	       "        "
+	       "----- ---- --------"
+	       "----------------------------------------");
+	for( const auto& v : c ) {
+	  warnx( " %4zu %4d %s", c.size() - --n, v.lineno, no_wd(wd, v.name) );
+	}
+      } else {
+	warnx("warning: %s:%d: %m", __func__, __LINE__);
       }
     }
     return false;
-- 
GitLab