> 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
>>

Reply via email to