This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: cmp (or echo) bug?


On 2015-12-25 22:32, David BalaÅic wrote:
Hi!

In Cygwin terminal (bash) I typed:

cmp  <(echo echo1)  <(echo echo2)

This does not print anything.
Not even with -b.

On Linux (Ubuntu 12.04 in VMWare) it reports that the inputs are different.

Bug?
Or am I missing something?

@@ uname -a
CYGWIN_NT-6.1-WOW Seven 2.3.1(0.291/5/3) 2015-11-14 12:42 i686 Cygwin
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1
@@ ./cmp <(echo echo1) <(echo echo2)
/dev/fd/63 /dev/fd/62 differ: byte 5, line 1

etc.

But only after I had modified cmp.c (diffutils) as follows:

int
main (int argc, char **argv)
{
...

#if 0
if (file_desc[f1] < 0 || fstat (file_desc[f1], stat_buf + f1) != 0)
#else
if (file_desc[f1] < 0 || f1 ? ( stat (file[1], stat_buf + f1) != 0 ) : ( stat (file[0], stat_buf + f1) != 0 ) ) // Henri: suspect fstat
#endif
        {
          if (file_desc[f1] < 0 && comparison_type == type_status)
            exit (EXIT_TROUBLE);
          else
            error (EXIT_TROUBLE, errno, "%s", file[f1]);
        }
    }

/* If the files are links to the same inode and have the same file position,
     they are identical.  */

  if (0 < same_file (&stat_buf[0], &stat_buf[1])
      && same_file_attributes (&stat_buf[0], &stat_buf[1])
      && file_position (0) == file_position (1))
{ // Henri: diagnostics
#if 0
    printf("same_file = %d\n", same_file (&stat_buf[0], &stat_buf[1]) );
printf("same_file_attributes = %d\n", same_file_attributes (&stat_buf[0], &stat_buf[1]) ); printf("same file pos = %d\n", file_position (0) == file_position (1) );
#endif
    printf("file[0] = %s, file[1] = %s\n", file[0], file[1]);
printf("file_desc[0] = %d, file_desc[1] = %d\n", file_desc[0], file_desc[1]);
    printf("bailing out: same file.\n");
    return EXIT_SUCCESS;
}

Regards,
Henri


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]