diff --git a/make.sh b/make.sh index 74939d4..981a18f 100755 --- a/make.sh +++ b/make.sh @@ -128,6 +128,36 @@ else IOEVENT_USE=IOEVENT_USE_NONE fi +check_dirent_field() +{ + field_name=$1 + upper_fname=$(echo $field_name | tr '[a-z]' '[A-Z]') + +tmp_src_filename=fast_check_dirent.c +cat < $tmp_src_filename +#include +#include + +int main(int argc, char *argv[]) +{ + struct dirent dir; + dir.$field_name = 1; + printf("#define HAVE_DIRENT_$upper_fname %d\n", dir.$field_name); + return 0; +} +EOF + +gcc -o a.out $tmp_src_filename 2>/dev/null && ./a.out +/bin/rm -f a.out $tmp_src_filename + +} + +tmp_filename=fast_dirent_macros.txt +check_dirent_field d_namlen > $tmp_filename +check_dirent_field d_reclen >> $tmp_filename +check_dirent_field d_off >> $tmp_filename +check_dirent_field d_type >> $tmp_filename + cat < src/_os_define.h #ifndef _OS_DEFINE_H #define _OS_DEFINE_H @@ -150,6 +180,9 @@ cat < src/_os_define.h #ifndef HAVE_USER_H #define HAVE_USER_H $HAVE_USER_H #endif + +$(cat $tmp_filename && /bin/rm -f $tmp_filename) + #endif EOF diff --git a/src/sockopt.c b/src/sockopt.c index b85bc44..7d6b058 100644 --- a/src/sockopt.c +++ b/src/sockopt.c @@ -461,7 +461,7 @@ int tcpreadv_nb_ms(int sock, const int size, const struct iovec *iov, { TCP_SET_QUICK_ACK(sock); left_bytes -= read_bytes; - if (left_bytes == 0) + if (left_bytes <= 0) { break; }