[patch, libgfortran] Fix return value for ENCODING in INQUIRE

Jerry D <[email protected]>
Newsgroups gmane.comp.gcc.patches,gmane.comp.gcc.fortran
Message-ID <[email protected]>
The attached patch is very simple. This provides for the case where a UNIT or 
FILE is connected as unformatted vs formatted.

Minor adjustment to existing test case.

Regression tested on x86_64

Thanks Walter for spotting this.

I will commit this later tonight.

Regards,

Jerry

Author: Jerry DeLisle <[email protected]>
Date:   Fri Apr 3 10:17:03 2026 -0700

     fortran: Minor adjustment to INQUIRE for ENCODING=

             PR libfortran/124543

     libgfortran/ChangeLog:

             * io/inquire.c (inquire_via_unit): Adjust the logic to
             treat formatted vs unformatted correctly.

     gcc/testsuite/ChangeLog:

             * gfortran.dg/pr124543.f90: Set result to 'UNDEFINED' in two
             places.
adjust_inquire.diff (text/x-patch, 2.4 KB)
commit 841f1422c1e6f5b09968d453e49950ac65993955
Author: Jerry DeLisle <[email protected]>
Date:   Fri Apr 3 10:17:03 2026 -0700

    fortran: Minor adjustment to INQUIRE for ENCODING=
    
            PR libfortran/124543
    
    libgfortran/ChangeLog:
    
            * io/inquire.c (inquire_via_unit): Adjust the logic to
            treat formatted vs unformatted correctly.
    
    gcc/testsuite/ChangeLog:
    
            * gfortran.dg/pr124543.f90: Set result to 'UNDEFINED' in two
            places.

diff --git a/gcc/testsuite/gfortran.dg/pr124543.f90 b/gcc/testsuite/gfortran.dg/pr124543.f90
index 7a7f15dd391..2ab5b5a023b 100644
--- a/gcc/testsuite/gfortran.dg/pr124543.f90
+++ b/gcc/testsuite/gfortran.dg/pr124543.f90
@@ -202,7 +202,7 @@ program inq_tests
   inquire (unit=lun, decimal=decimal, encoding=encoding, pos=pos,  &
       round=round, sign=signc, stream=stream, iostat=iostat)
   if  (decimal /= 'POINT' .or. (iostat /= 0)) stop 204
-  if  (encoding /= 'UNKNOWN') stop 205
+  if  (encoding /= 'UNDEFINED') stop 205
   if  (round /= 'PROCESSOR_DEFINED') stop 206
   if  (signc /= 'PROCESSOR_DEFINED') stop 207
   if  (stream /= 'NO') stop 208
@@ -284,7 +284,7 @@ program inq_tests
   inquire (unit=lun, decimal=decimal, encoding=encoding, pos=pos,  &
       round=round, sign=signc, stream=stream, iostat=iostat)
   if  (decimal /= 'UNDEFINED' .or. (iostat /= 0)) stop 286
-  if  (encoding /= 'UNKNOWN') stop 287
+  if  (encoding /= 'UNDEFINED') stop 287
   if  (round /= 'PROCESSOR_DEFINED') stop 288
   if  (signc /= 'PROCESSOR_DEFINED') stop 289
   if  (stream /= 'YES') stop 290
diff --git a/libgfortran/io/inquire.c b/libgfortran/io/inquire.c
index f96210f1d57..4d773349fa3 100644
--- a/libgfortran/io/inquire.c
+++ b/libgfortran/io/inquire.c
@@ -311,13 +311,13 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit *u)
 
       if ((cf2 & IOPARM_INQUIRE_HAS_ENCODING) != 0)
 	{
-	  if (u == NULL || u->flags.form != FORM_FORMATTED)
+	  if (u == NULL)
 	    p = "UNKNOWN";
-          else
+	  else if (u->flags.form == FORM_FORMATTED)
 	    switch (u->flags.encoding)
 	      {
 	      case ENCODING_DEFAULT:
-		p = "UNKNOWN";
+		p = "UNDEFINED";
 		break;
 	      case ENCODING_UTF8:
 		p = "UTF-8";
@@ -325,6 +325,8 @@ inquire_via_unit (st_parameter_inquire *iqp, gfc_unit *u)
 	      default:
 		internal_error (&iqp->common, "inquire_via_unit(): Bad encoding");
 	      }
+	    else
+	      p = "UNKNOWN";
 
 	  cf_strcpy (iqp->encoding, iqp->encoding_len, p);
 	}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.