@@ -591,7 +591,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing)
591
591
{
592
592
DWORD nbytes_in_pipe;
593
593
if (!writing && PeekNamedPipe (h, NULL , 0 , NULL , &nbytes_in_pipe, NULL ))
594
- return nbytes_in_pipe > 0 ;
594
+ return nbytes_in_pipe;
595
595
return -1 ;
596
596
}
597
597
@@ -609,7 +609,7 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing)
609
609
access on the write end. */
610
610
select_printf (" fd %d, %s, NtQueryInformationFile failed, status %y" ,
611
611
fd, fh->get_name (), status);
612
- return writing ? 1 : -1 ;
612
+ return writing ? PIPE_BUF : -1 ;
613
613
}
614
614
if (writing)
615
615
{
@@ -644,30 +644,30 @@ pipe_data_available (int fd, fhandler_base *fh, HANDLE h, bool writing)
644
644
if (!query_hdl)
645
645
query_hdl = ((fhandler_pipe *) fh)->temporary_query_hdl ();
646
646
if (!query_hdl)
647
- return 1 ; /* We cannot know actual write pipe space. */
647
+ return PIPE_BUF ; /* We cannot know actual write pipe space. */
648
648
DWORD nbytes_in_pipe;
649
649
BOOL res =
650
650
PeekNamedPipe (query_hdl, NULL , 0 , NULL , &nbytes_in_pipe, NULL );
651
651
if (!((fhandler_pipe *) fh)->get_query_handle ())
652
652
CloseHandle (query_hdl); /* Close temporary query_hdl */
653
653
if (!res)
654
- return 1 ;
654
+ return PIPE_BUF; /* We cannot know actual write pipe space. */
655
655
fpli.WriteQuotaAvailable = fpli.InboundQuota - nbytes_in_pipe;
656
656
}
657
657
if (fpli.WriteQuotaAvailable > 0 )
658
658
{
659
659
paranoid_printf (" fd %d, %s, write: size %u, avail %u" , fd,
660
660
fh->get_name (), fpli.InboundQuota ,
661
661
fpli.WriteQuotaAvailable );
662
- return 1 ;
662
+ return fpli. WriteQuotaAvailable ;
663
663
}
664
664
/* TODO: Buffer really full or non-Cygwin reader? */
665
665
}
666
666
else if (fpli.ReadDataAvailable )
667
667
{
668
668
paranoid_printf (" fd %d, %s, read avail %u" , fd, fh->get_name (),
669
669
fpli.ReadDataAvailable );
670
- return 1 ;
670
+ return fpli. ReadDataAvailable ;
671
671
}
672
672
if (fpli.NamedPipeState & FILE_PIPE_CLOSING_STATE)
673
673
return -1 ;
@@ -761,7 +761,7 @@ peek_pipe (select_record *s, bool from_select)
761
761
}
762
762
int n = pipe_data_available (s->fd , fh, h, true );
763
763
select_printf (" write: %s, n %d" , fh->get_name (), n);
764
- gotone += s->write_ready = n ;
764
+ gotone += s->write_ready = (n >= PIPE_BUF) ;
765
765
if (n < 0 && s->except_selected )
766
766
gotone += s->except_ready = true ;
767
767
}
@@ -974,7 +974,7 @@ peek_fifo (select_record *s, bool from_select)
974
974
{
975
975
int n = pipe_data_available (s->fd , fh, fh->get_handle (), true );
976
976
select_printf (" write: %s, n %d" , fh->get_name (), n);
977
- gotone += s->write_ready = n ;
977
+ gotone += s->write_ready = (n >= PIPE_BUF) ;
978
978
if (n < 0 && s->except_selected )
979
979
gotone += s->except_ready = true ;
980
980
}
@@ -1400,7 +1400,7 @@ peek_pty_slave (select_record *s, bool from_select)
1400
1400
{
1401
1401
int n = pipe_data_available (s->fd , fh, h, true );
1402
1402
select_printf (" write: %s, n %d" , fh->get_name (), n);
1403
- gotone += s->write_ready = n ;
1403
+ gotone += s->write_ready = (n >= PIPE_BUF) ;
1404
1404
if (n < 0 && s->except_selected )
1405
1405
gotone += s->except_ready = true ;
1406
1406
}
0 commit comments