make.sh: generate macros for dirent fields

posix_api
YuQing 2022-02-10 22:18:53 +08:00
parent 29cc5af134
commit e9d186ce99
2 changed files with 34 additions and 1 deletions

33
make.sh
View File

@ -128,6 +128,36 @@ else
IOEVENT_USE=IOEVENT_USE_NONE IOEVENT_USE=IOEVENT_USE_NONE
fi 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 <<EOF > $tmp_src_filename
#include <stdio.h>
#include <dirent.h>
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 <<EOF > src/_os_define.h cat <<EOF > src/_os_define.h
#ifndef _OS_DEFINE_H #ifndef _OS_DEFINE_H
#define _OS_DEFINE_H #define _OS_DEFINE_H
@ -150,6 +180,9 @@ cat <<EOF > src/_os_define.h
#ifndef HAVE_USER_H #ifndef HAVE_USER_H
#define HAVE_USER_H $HAVE_USER_H #define HAVE_USER_H $HAVE_USER_H
#endif #endif
$(cat $tmp_filename && /bin/rm -f $tmp_filename)
#endif #endif
EOF EOF

View File

@ -461,7 +461,7 @@ int tcpreadv_nb_ms(int sock, const int size, const struct iovec *iov,
{ {
TCP_SET_QUICK_ACK(sock); TCP_SET_QUICK_ACK(sock);
left_bytes -= read_bytes; left_bytes -= read_bytes;
if (left_bytes == 0) if (left_bytes <= 0)
{ {
break; break;
} }