> On Mon, Mar 17, 2025 at 7:45 PM Jose E. Marchesi > <jose.march...@oracle.com> wrote: >> >> This patch changes gcc/cobol/cdf-copy.cc to use the new ldirname from >> libibertay rather than the host's dirname. This removes an include >> for libgen.h. >> >> Regtested in x86_64-linux-gnu by running make check-cobol. > > OK to both patches of the series.
Pushed. Thanks. > Thanks, > Richard. > >> gcc/cobol/ChangeLog >> >> * cdf-copy.cc (copybook_elem_t::open_file): Use ldirname rather >> than dirname. >> --- >> gcc/cobol/cdf-copy.cc | 24 ++++++++++++++++-------- >> 1 file changed, 16 insertions(+), 8 deletions(-) >> >> diff --git a/gcc/cobol/cdf-copy.cc b/gcc/cobol/cdf-copy.cc >> index dfa3f57315d..179dbacea93 100644 >> --- a/gcc/cobol/cdf-copy.cc >> +++ b/gcc/cobol/cdf-copy.cc >> @@ -40,7 +40,6 @@ >> #include "copybook.h" >> >> #include <glob.h> >> -#include <libgen.h> >> >> #define COUNT_OF(X) (sizeof(X) / sizeof(X[0])) >> >> @@ -268,24 +267,33 @@ int >> copybook_elem_t::open_file( const char directory[], bool literally ) { >> int erc; >> char *pattern, *copier = xstrdup(cobol_filename()); >> - if( ! directory ) { >> - directory = dirname(copier); >> - if( 0 == strcmp(".", directory) ) directory = NULL; >> + char *dname = NULL; >> + >> + if ( directory ) { >> + dname = xstrdup(directory); >> + } else { >> + dname = ldirname(copier); >> + gcc_assert (dname != NULL); /* out of memory */ >> + if( '\0' == dname[0] ) { >> + free (dname); >> + dname = NULL; >> + } >> } >> >> char *path = NULL; >> >> - if( directory || library.name ) { >> - if( directory && library.name ) { >> - path = xasprintf( "%s/%s/%s", directory, library.name, source.name ); >> + if( dname || library.name ) { >> + if( dname && library.name ) { >> + path = xasprintf( "%s/%s/%s", dname, library.name, source.name ); >> } else { >> - const char *dir = directory? directory : library.name; >> + const char *dir = dname? dname : library.name; >> path = xasprintf( "%s/%s", dir, source.name ); >> } >> } else { >> path = xasprintf( "%s", source.name ); >> } >> >> + free(dname); >> gcc_assert(path); >> >> if( literally ) { >> -- >> 2.30.2 >>