> On Mon, Mar 17, 2025 at 7:45 PM Jose E. Marchesi
> <[email protected]> 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
>>