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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to