Damien Lespiau wrote:
> A small update,
> 
>> Yes, but I still prefer the delimited format for readability.
> 
> Ok: expected output is now between check-output-start / check-output-end
> tags.
> I've added a clean-check target in the Makefile, updated the provided
> test-cases and documentation.

Thanks!  Will review and apply soon.

>> You can't redirect two things independently to the same file; that will
>> open the file twice, and the writes will conflict, giving exactly the
>> result you saw.  > o 2>&1 should work; it has exactly the same effect as
>> &> .
> 
> For some reason I was expecting that:
> 
> [pid  8877] open("o", O_WRONLY|O_CREAT|O_TRUNC| \
>         O_LARGEFILE, 0666) = 3
> [pid  8877] dup2(3, 1)                  = 1
> [pid  8877] close(3)                    = 0
> [pid  8877] open("o", O_WRONLY|O_CREAT|O_TRUNC| \
>         O_LARGEFILE, 0666) = 3
> [pid  8877] dup2(3, 2)                  = 2
> [pid  8877] close(3)                    = 0
> 
> and
> 
> [pid 10777] open("o", O_WRONLY|O_CREAT|O_TRUNC| \
>         O_LARGEFILE, 0666) = 3
> [pid 10777] dup2(3, 1)                  = 1
> [pid 10777] close(3)                    = 0
> [pid 10777] dup2(1, 2)                  = 2
> 
> followed by:
> 
> [pid  xxxxx] write(2, "validation/preprocessor19.c:4:9:"..., 73) = 73
> [pid  xxxxx] write(2, "validation/preprocessor19.c:3:9:"..., 66) = 66
> [pid  xxxxx] write(1, "\ny\n", 3)        = o
> 
> to give the same result and that the first one would not eat characters.

In the first case, fd 1 and fd 2 represent separate open files, and have
independent file offsets; thus, writes through the two file descriptors
overwrite each other.  In the second case, fd 1 and fd 2 represent the same
open file, and have the same file offset, so writes to either one appear in
the file in sequence.

- Josh Triplett

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to