fix build on Solaris 10

Tue, 24 Feb 2026 12:28:58 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Tue, 24 Feb 2026 12:28:58 +0100
changeset 702
ee80191310ca
parent 701
936e5487418a
child 703
395c62fac7e5

fix build on Solaris 10

src/server/config/logging.c file | annotate | diff | comparison | revisions
src/server/daemon/acl.c file | annotate | diff | comparison | revisions
src/server/daemon/event_solaris.c file | annotate | diff | comparison | revisions
src/server/daemon/httplistener.c file | annotate | diff | comparison | revisions
src/server/daemon/httprequest.h file | annotate | diff | comparison | revisions
src/server/daemon/ldap_resource.c file | annotate | diff | comparison | revisions
src/server/daemon/location.c file | annotate | diff | comparison | revisions
src/server/daemon/request.c file | annotate | diff | comparison | revisions
src/server/daemon/session.h file | annotate | diff | comparison | revisions
src/server/proxy/httpclient.c file | annotate | diff | comparison | revisions
src/server/safs/ldap.c file | annotate | diff | comparison | revisions
src/server/test/io.c file | annotate | diff | comparison | revisions
src/server/util/socket.c file | annotate | diff | comparison | revisions
src/server/webdav/webdav.c file | annotate | diff | comparison | revisions
src/ucx/Makefile file | annotate | diff | comparison | revisions
--- a/src/server/config/logging.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/config/logging.c	Tue Feb 24 12:28:58 2026 +0100
@@ -24,4 +24,4 @@
 
 void ws_cfg_set_logfunc(cfg_logfunc func) {
     logfunc = func;
-}
\ No newline at end of file
+}
--- a/src/server/daemon/acl.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/acl.c	Tue Feb 24 12:28:58 2026 +0100
@@ -332,12 +332,12 @@
                 return 0;
             }
         }
-        cxmutstr wd = cx_str(cwd);
-        cxmutstr pp = cx_str((char*)path);
+        cxmutstr wd = cx_mutstr(cwd);
+        cxmutstr pp = cx_mutstr((char*)path);
 
         p = cx_strcat(CX_NULLSTR, 3, wd, cx_strn("/", 1), pp);
     } else {
-        p = cx_strdup(cx_str((char*)path));
+        p = cx_strdup(path);
     }
     if(p.ptr[p.length-1] == '/') {
         p.ptr[p.length-1] = 0;
--- a/src/server/daemon/event_solaris.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/event_solaris.c	Tue Feb 24 12:28:58 2026 +0100
@@ -64,7 +64,7 @@
 }
 
 void ev_instance_wait(EventHandler *h) {
-    EventHandlerLinux *ev = (EventHandlerLinux*)h;
+    EventHandlerSolaris *ev = (EventHandlerSolaris*)h;
     void *ret;
     pthread_join(ev->thr, &ret);
 }
@@ -107,7 +107,7 @@
         }
         
         int numfinished = 0;
-        ev->numret = 0;
+        ev->base.numret = 0;
         for(int i=0;i<nev;i++) {
             Event *event = events[i].portev_user;
             if(events[i].portev_source == PORT_SOURCE_AIO) {
@@ -125,7 +125,7 @@
                 free(aiocb);  
             } else {
                 if(event->fn) {
-                    if(event->fn(ev, event)) {
+                    if(event->fn((EventHandler*)ev, event)) {
                         /*
                          * on solaris we have to reassociate the fd after
                          * each event
@@ -153,7 +153,7 @@
             Event *event = finished[i];
             // check again if the finish callback is set
             if(finished[i]->finish) {
-                finished[i]->finish(ev, event);
+                finished[i]->finish((EventHandler*)ev, event);
             }
         }
         // execute return calls
@@ -215,7 +215,7 @@
 }
 
 static int ev_aio(int fd, aiocb_s *cb, WSBool read) {
-    EventHandlerSolaris *ev = cb->evhandler;
+    EventHandlerSolaris *ev = (EventHandlerSolaris*)cb->evhandler;
     if(!ev) {
         return -1;
     }
--- a/src/server/daemon/httplistener.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/httplistener.c	Tue Feb 24 12:28:58 2026 +0100
@@ -795,6 +795,7 @@
         return 1;
     }
 
+#ifdef TCP_KEEPIDLE
     int keepidle = 240;
     if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepidle, sizeof(keepidle))) {
         log_ereport(LOG_FAILURE, "listener: cannot set TCP_KEEPIDLE to value %d: %s", keepidle, strerror(errno));
@@ -812,6 +813,9 @@
         log_ereport(LOG_FAILURE, "listener: cannot set TCP_KEEPCNT to value %d: %s", keepcnt, strerror(errno));
         return 1;
     }
+#else
+    // TODO
+#endif
     
     return 0;
 }
--- a/src/server/daemon/httprequest.h	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/httprequest.h	Tue Feb 24 12:28:58 2026 +0100
@@ -100,7 +100,7 @@
 int nsapi_handle_request(NSAPISession *sn, NSAPIRequest *rq);
 int nsapi_finish_request(NSAPISession *sn, NSAPIRequest *rq);
 
-void nsapi_saf_return(Session *sn, Request *rq, int ret);;
+void nsapi_saf_return(Session *sn, Request *rq, int ret);
 
 void request_free_resources(NSAPISession *sn, NSAPIRequest *rq);
 
--- a/src/server/daemon/ldap_resource.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/ldap_resource.c	Tue Feb 24 12:28:58 2026 +0100
@@ -60,7 +60,7 @@
     LDAP *ld = NULL;
     
 #ifdef SOLARIS
-    ld = ldap_init(config->hostname, config->port);
+    ld = ldap_init(hostname, port);
 #else
     char *ldap_uri = NULL;
     asprintf(&ldap_uri, "ldap://%s:%d", hostname, port);
--- a/src/server/daemon/location.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/location.c	Tue Feb 24 12:28:58 2026 +0100
@@ -226,7 +226,6 @@
     } else {
         return regexec(&loc->regex, uri.ptr, WS_LOCATION_NMATCH, match, 0) == 0;
     }
-    return 0;
 }
 
 WSLocationConfig* location_match_and_get_config(pool_handle_t *pool, Request *rq, cxstring uri, WSLocation *loc) {
--- a/src/server/daemon/request.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/request.c	Tue Feb 24 12:28:58 2026 +0100
@@ -132,7 +132,7 @@
     
     // concat path
     size_t length = root.length + path.length;
-    char *translated_path = alloca(length + 1);
+    char *translated_path = malloc(length + 1);
     memcpy(translated_path, root.ptr, root.length);
     if(root.ptr[root.length-1] == '/') {
         memcpy(translated_path + root.length, path.ptr, path.length);
@@ -151,6 +151,7 @@
     
     pblock_kvinsert(pb_key_ntrans_base, root.ptr, root.length, vars);
     
+    free(translated_path);
     return REQ_PROCEED;
 }
 
--- a/src/server/daemon/session.h	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/daemon/session.h	Tue Feb 24 12:28:58 2026 +0100
@@ -54,9 +54,6 @@
     ServerConfiguration *config;
 };
 
-typedef struct IOStreamConnection {
-    
-} IOStreamConnection;
 
 NSAPISession* nsapisession_create(pool_handle_t *pool);
 int nsapisession_setconnection(NSAPISession *sn, Connection *conn, netbuf *inbuf, IOStream **io);
--- a/src/server/proxy/httpclient.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/proxy/httpclient.c	Tue Feb 24 12:28:58 2026 +0100
@@ -470,7 +470,7 @@
         return 0;
     }
     
-    char *buffer = client->buffer.inbuf + client->buffer.pos;
+    unsigned char *buffer = client->buffer.inbuf + client->buffer.pos;
     size_t nbytes = client->buffer.maxsize - client->buffer.cursize;
     
     ssize_t r;
--- a/src/server/safs/ldap.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/safs/ldap.c	Tue Feb 24 12:28:58 2026 +0100
@@ -41,9 +41,12 @@
         return LDAP_SCOPE_ONELEVEL;
     } else if(!strcmp(str, "subtree")) {
         return LDAP_SCOPE_SUBTREE;
-    } else if(!strcmp(str, "children")) {
+    }
+#ifdef LDAP_SCOPE_CHILDREN
+    else if(!strcmp(str, "children")) {
         return LDAP_SCOPE_CHILDREN;
     }
+#endif
     return -1;
 }
 
--- a/src/server/test/io.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/test/io.c	Tue Feb 24 12:28:58 2026 +0100
@@ -30,6 +30,8 @@
 
 #include "testutils.h"
 
+#include <limits.h>
+
 
 CX_TEST(test_io_http_stream_parse_chunk_header_hdronly_first) {
     char *str = strdup("100\r\n");
--- a/src/server/util/socket.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/util/socket.c	Tue Feb 24 12:28:58 2026 +0100
@@ -30,6 +30,7 @@
 
 #include <unistd.h>
 #include <sys/fcntl.h>
+#include <fcntl.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
 #include <arpa/inet.h>
--- a/src/server/webdav/webdav.c	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/server/webdav/webdav.c	Tue Feb 24 12:28:58 2026 +0100
@@ -168,30 +168,30 @@
         return REQ_ABORTED;
     }
     
-    cxMapPut(method_handler_map, "OPTIONS", webdav_options);
-    cxMapPut(method_handler_map, "PROPFIND", webdav_propfind);
-    cxMapPut(method_handler_map, "PROPPATCH", webdav_proppatch);
-    cxMapPut(method_handler_map, "MKCOL", webdav_mkcol);
-    cxMapPut(method_handler_map, "POST", webdav_post);
-    cxMapPut(method_handler_map, "DELETE", webdav_delete);
-    cxMapPut(method_handler_map, "PUT", webdav_put);
-    cxMapPut(method_handler_map, "COPY", webdav_copy);
-    cxMapPut(method_handler_map, "MOVE", webdav_move);
-    cxMapPut(method_handler_map, "LOCK", webdav_lock);
-    cxMapPut(method_handler_map, "UNLOCK", webdav_unlock);
-    cxMapPut(method_handler_map, "REPORT", webdav_report);
-    cxMapPut(method_handler_map, "ACL", webdav_acl);
+    cxMapPut(method_handler_map, "OPTIONS", (void*)webdav_options);
+    cxMapPut(method_handler_map, "PROPFIND", (void*)webdav_propfind);
+    cxMapPut(method_handler_map, "PROPPATCH", (void*)webdav_proppatch);
+    cxMapPut(method_handler_map, "MKCOL", (void*)webdav_mkcol);
+    cxMapPut(method_handler_map, "POST", (void*)webdav_post);
+    cxMapPut(method_handler_map, "DELETE", (void*)webdav_delete);
+    cxMapPut(method_handler_map, "PUT", (void*)webdav_put);
+    cxMapPut(method_handler_map, "COPY", (void*)webdav_copy);
+    cxMapPut(method_handler_map, "MOVE", (void*)webdav_move);
+    cxMapPut(method_handler_map, "LOCK", (void*)webdav_lock);
+    cxMapPut(method_handler_map, "UNLOCK", (void*)webdav_unlock);
+    cxMapPut(method_handler_map, "REPORT", (void*)webdav_report);
+    cxMapPut(method_handler_map, "ACL", (void*)webdav_acl);
     
-    cxMapPut(method_handler_map, "SEARCH", webdav_search);
+    cxMapPut(method_handler_map, "SEARCH", (void*)webdav_search);
     
-    cxMapPut(method_handler_map, "VERSION-CONTROL", webdav_version_control);
-    cxMapPut(method_handler_map, "CHECKOUT", webdav_checkout);
-    cxMapPut(method_handler_map, "CHECKIN", webdav_checkin);
-    cxMapPut(method_handler_map, "UNCHECKOUT", webdav_uncheckout);
-    cxMapPut(method_handler_map, "MKWORKSPACE", webdav_mkworkspace);
-    cxMapPut(method_handler_map, "UPDATE", webdav_update);
-    cxMapPut(method_handler_map, "LABEL", webdav_label);
-    cxMapPut(method_handler_map, "MERGE", webdav_merge);
+    cxMapPut(method_handler_map, "VERSION-CONTROL", (void*)webdav_version_control);
+    cxMapPut(method_handler_map, "CHECKOUT", (void*)webdav_checkout);
+    cxMapPut(method_handler_map, "CHECKIN", (void*)webdav_checkin);
+    cxMapPut(method_handler_map, "UNCHECKOUT", (void*)webdav_uncheckout);
+    cxMapPut(method_handler_map, "MKWORKSPACE", (void*)webdav_mkworkspace);
+    cxMapPut(method_handler_map, "UPDATE", (void*)webdav_update);
+    cxMapPut(method_handler_map, "LABEL", (void*)webdav_label);
+    cxMapPut(method_handler_map, "MERGE", (void*)webdav_merge);
     
     dav_namespace.href = (xmlChar*)"DAV:";
     dav_namespace.prefix = (xmlChar*)"D";
--- a/src/ucx/Makefile	Mon Feb 23 22:28:44 2026 +0100
+++ b/src/ucx/Makefile	Tue Feb 24 12:28:58 2026 +0100
@@ -49,6 +49,7 @@
 SRC += properties.c
 SRC += iterator.c
 SRC += kv_list.c
+SRC += szmul.c
 
 OBJ = $(SRC:%.c=$(BUILD_ROOT)/build/ucx/%$(OBJ_EXT))
 

mercurial