Changeset: 4bbbb244a8a2 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/4bbbb244a8a2
Modified Files:
cmake/monetdb-defines.cmake
common/stream/socket_stream.c
monetdb_config.h.in
Branch: Aug2024
Log Message:
Use function sockatmark if available instead of ioctl SIOCATMARK.
diffs (79 lines):
diff --git a/cmake/monetdb-defines.cmake b/cmake/monetdb-defines.cmake
--- a/cmake/monetdb-defines.cmake
+++ b/cmake/monetdb-defines.cmake
@@ -100,6 +100,7 @@ function(monetdb_configure_defines)
check_symbol_exists("posix_fallocate" "fcntl.h" HAVE_POSIX_FALLOCATE)
check_symbol_exists("posix_madvise" "sys/mman.h" HAVE_POSIX_MADVISE)
check_function_exists("setsid" HAVE_SETSID)
+ check_function_exists("sockatmark" HAVE_SOCKATMARK)
check_function_exists("shutdown" HAVE_SHUTDOWN)
check_function_exists("sigaction" HAVE_SIGACTION)
check_function_exists("siglongjmp" HAVE_SIGLONGJMP)
diff --git a/common/stream/socket_stream.c b/common/stream/socket_stream.c
--- a/common/stream/socket_stream.c
+++ b/common/stream/socket_stream.c
@@ -73,10 +73,17 @@ socket_getoob(const stream *s)
for (;;) {
int atmark = 0;
char flush[100];
+#ifdef HAVE_SOCKATMARK
+ if ((atmark = sockatmark(fd)) < 0) {
+ perror("sockatmark");
+ break;
+ }
+#else
if (ioctlsocket(fd, SIOCATMARK, &atmark) < 0) {
perror("ioctl");
break;
}
+#endif
if (atmark)
break;
if (recv(fd, flush, sizeof(flush), 0) < 0) {
@@ -306,10 +313,17 @@ socket_read(stream *restrict s, void *re
for (;;) {
int atmark = 0;
char flush[100];
+#ifdef HAVE_SOCKATMARK
+ if ((atmark =
sockatmark(s->stream_data.s)) < 0) {
+ perror("sockatmark");
+ break;
+ }
+#else
if
(ioctlsocket(s->stream_data.s, SIOCATMARK, &atmark) < 0) {
perror("ioctl");
break;
}
+#endif
if (atmark)
break;
if (recv(s->stream_data.s,
flush, sizeof(flush), 0) < 0) {
@@ -362,10 +376,17 @@ socket_read(stream *restrict s, void *re
for (;;) {
int atmark = 0;
char flush[100];
+#ifdef HAVE_SOCKATMARK
+ if ((atmark =
sockatmark(s->stream_data.s)) < 0) {
+ perror("sockatmark");
+ break;
+ }
+#else
if (ioctlsocket(s->stream_data.s,
SIOCATMARK, &atmark) < 0) {
perror("ioctl");
break;
}
+#endif
if (atmark)
break;
if (recv(s->stream_data.s, flush,
sizeof(flush), 0) < 0) {
diff --git a/monetdb_config.h.in b/monetdb_config.h.in
--- a/monetdb_config.h.in
+++ b/monetdb_config.h.in
@@ -153,6 +153,7 @@
#cmakedefine HAVE_POSIX_MADVISE 1
#cmakedefine HAVE_SETTHREADDESCRIPTION 1
#cmakedefine HAVE_SETSID 1
+#cmakedefine HAVE_SOCKATMARK 1
#cmakedefine HAVE_SHUTDOWN 1
#cmakedefine HAVE_SIGACTION 1
#cmakedefine HAVE_SIGLONGJMP 1
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]