On Mon, Aug 10, 2015 at 7:24 PM, Jeff King <[email protected]> wrote:
> On Mon, Aug 10, 2015 at 06:38:10PM +0200, Johannes Schindelin wrote:
>
>> > +const char *pipe_id_get(int fd)
>> > +{
>> > + static struct strbuf id = STRBUF_INIT;
>> > + struct stat st;
>> > +
>> > + if (fstat(fd, &st) < 0 || !S_ISFIFO(st.st_mode))
>> > + return NULL;
>>
>> Just a quick note: it seems that this check is not really working on
>> Windows. I tested this by running this test case manually (because TTY
>> is not set on Windows):
>
> Yeah, I'm not too surprised. I'm guessing your st_ino for pipes are all
> just the same or something. Or maybe S_ISFIFO doesn't pass (we don't
> technically need it, I don't think, and could just drop that check).
If you remove the S_ISFIFO check, you probably need to include
the st_dev field in the pipe id. Otherwise, you could be unlucky and
redirect the output to a file that just happens to have the same inode
number as the pager pipe. Remember, inode numbers are only unique
within a certain st_dev.
/ceder
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html