This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: cmp (or echo) bug?
- From: David BalaÅic <xerces9 at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Sun, 3 Jan 2016 18:21:44 +0100
- Subject: Re: cmp (or echo) bug?
- Authentication-results: sourceware.org; auth=none
- References: <CAPJ9Yc9uFnFSFPkYxJj2A87EzZVNrWx2mN5Pq6SxCwpf_78QVQ at mail dot gmail dot com> <2fd8829b7e5d7d1904306d45fbb63a7d at xs4all dot nl>
cat and diff work as expected:
$ cat <(echo echo1) <(echo echo2)
echo1
echo2
$ diff <(echo echo1) <(echo echo2)
1c1
< echo1
---
> echo2
So maybe the bug is really in cmp.
Regards,
David
On 29 December 2015 at 17:43, Houder <houder@xs4all.nl> wrote:
> 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
>
--
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