Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package libimobiledevice-glue for 
openSUSE:Factory checked in at 2025-03-07 16:38:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libimobiledevice-glue (Old)
 and      /work/SRC/openSUSE:Factory/.libimobiledevice-glue.new.19136 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libimobiledevice-glue"

Fri Mar  7 16:38:53 2025 rev:5 rq:1250583 version:1.3.1+git18.20250213

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/libimobiledevice-glue/libimobiledevice-glue.changes  
    2025-01-21 21:09:42.561081625 +0100
+++ 
/work/SRC/openSUSE:Factory/.libimobiledevice-glue.new.19136/libimobiledevice-glue.changes
   2025-03-07 16:39:58.527850211 +0100
@@ -1,0 +2,17 @@
+Tue Feb 25 20:35:37 UTC 2025 - sbra...@suse.com
+
+- Update to version 1.3.1+git18.20250213:
+  * socket: Fix error output
+  * socket: Allow setting debug level via environment variable
+  * socket: Update inline attributes for gcc/clang
+  * Fix compiler warning
+  * socket: Improve error message output/verbose logging
+- Add patch to fix build with gcc14 in Leap 15.x
+  (libimobiledevice-glue-gcc14.patch).
+
+-------------------------------------------------------------------
+Sun Feb 23 23:36:16 UTC 2025 - Stanislav Brabec <sbra...@suse.com>
+
+- - Set URL to a working address.
+
+-------------------------------------------------------------------

Old:
----
  libimobiledevice-glue-1.3.1+git11.20241227.obscpio

New:
----
  libimobiledevice-glue-1.3.1+git18.20250213.obscpio
  libimobiledevice-glue-gcc14.patch

BETA DEBUG BEGIN:
  New:- Add patch to fix build with gcc14 in Leap 15.x
  (libimobiledevice-glue-gcc14.patch).
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libimobiledevice-glue.spec ++++++
--- /var/tmp/diff_new_pack.6ajtZz/_old  2025-03-07 16:39:59.075873143 +0100
+++ /var/tmp/diff_new_pack.6ajtZz/_new  2025-03-07 16:39:59.079873311 +0100
@@ -21,13 +21,15 @@
 %define clamp_mtime_to_source_date_epoch 1
 %define use_source_date_epoch_as_buildtime 1
 Name:           libimobiledevice-glue
-Version:        1.3.1+git11.20241227
+Version:        1.3.1+git18.20250213
 Release:        0
 Summary:        Native protocols library for iOS devices
 License:        LGPL-2.1-or-later
-URL:            https://www.libimobiledevice.org
+URL:            https://github.com/libimobiledevice/libimobiledevice-glue
 Source:         %{name}-%{version}.tar.gz
 Source1:        baselibs.conf
+# PATCH-FIX-BUILD libimobiledevice-glue-gcc14.patch sbra...@suse.com -- Fix 
build with gcc14 that does not understand __VA_OPT__(,).
+Patch0:         libimobiledevice-glue-gcc14.patch
 BuildRequires:  fdupes
 BuildRequires:  gcc-c++
 BuildRequires:  libtool
@@ -56,8 +58,9 @@
 
 %prep
 %setup -q
-sed -i -e '/Requires:/d' src/%{name}-1.0.pc.in
-sed -i -e 's/-L${libdir}//' src/%{name}-1.0.pc.in
+%if 0%{?suse_version} < 1600
+%patch -P 0 -p1
+%endif
 
 %build
 autoreconf -fvi

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.6ajtZz/_old  2025-03-07 16:39:59.123875152 +0100
+++ /var/tmp/diff_new_pack.6ajtZz/_new  2025-03-07 16:39:59.123875152 +0100
@@ -3,6 +3,6 @@
                 <param 
name="url">g...@github.com:libimobiledevice/libimobiledevice.git</param>
               <param 
name="changesrevision">b3d35fbcf7a1ac669c2e80fbd58920941a5d4c0c</param></service><service
 name="tar_scm">
                 <param 
name="url">g...@github.com:libimobiledevice/libimobiledevice-glue.git</param>
-              <param 
name="changesrevision">440dbbbf615de11acdd8216df0e3676e8efb9ba1</param></service></servicedata>
+              <param 
name="changesrevision">fe28a576b65f6fdcccb0f85721d79b9d3965faa9</param></service></servicedata>
 (No newline at EOF)
 

++++++ libimobiledevice-glue-1.3.1+git11.20241227.obscpio -> 
libimobiledevice-glue-1.3.1+git18.20250213.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libimobiledevice-glue-1.3.1+git11.20241227/src/common.h 
new/libimobiledevice-glue-1.3.1+git18.20250213/src/common.h
--- old/libimobiledevice-glue-1.3.1+git11.20241227/src/common.h 2024-12-27 
01:55:34.000000000 +0100
+++ new/libimobiledevice-glue-1.3.1+git18.20250213/src/common.h 2025-02-13 
03:50:17.000000000 +0100
@@ -39,4 +39,6 @@
 
 #include "libimobiledevice-glue/glue.h"
 
+void socket_init();
+
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libimobiledevice-glue-1.3.1+git11.20241227/src/glue.c 
new/libimobiledevice-glue-1.3.1+git18.20250213/src/glue.c
--- old/libimobiledevice-glue-1.3.1+git11.20241227/src/glue.c   2024-12-27 
01:55:34.000000000 +0100
+++ new/libimobiledevice-glue-1.3.1+git18.20250213/src/glue.c   2025-02-13 
03:50:17.000000000 +0100
@@ -60,6 +60,7 @@
 
 INITIALIZER(internal_glue_init)
 {
+       socket_init();
        term_colors_init();
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/libimobiledevice-glue-1.3.1+git11.20241227/src/socket.c 
new/libimobiledevice-glue-1.3.1+git18.20250213/src/socket.c
--- old/libimobiledevice-glue-1.3.1+git11.20241227/src/socket.c 2024-12-27 
01:55:34.000000000 +0100
+++ new/libimobiledevice-glue-1.3.1+git18.20250213/src/socket.c 2025-02-13 
03:50:17.000000000 +0100
@@ -39,7 +39,6 @@
 #ifndef HAVE_GETIFADDRS
 #include <iphlpapi.h>
 #endif
-static int wsa_init = 0;
 #ifndef IFF_RUNNING
 #define IFF_RUNNING IFF_UP
 #endif
@@ -91,6 +90,26 @@
 
 static int verbose = 0;
 
+#define SOCKET_ERR(level, msg, ...) \
+       if (verbose >= level) { \
+               fprintf(stderr, "[socket] " msg __VA_OPT__(,) __VA_ARGS__); \
+       }
+
+void socket_init(void)
+{
+#ifdef _WIN32
+       WSADATA wsa_data;
+       if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
+               SOCKET_ERR(0, "WSAStartup failed!\n");
+               ExitProcess(1);
+       }
+#endif
+       char *env_debug = getenv("SOCKET_DEBUG");
+        if (env_debug) {
+               verbose = (int)strtol(env_debug, NULL, 10);
+       }
+}
+
 void socket_set_verbose(int level)
 {
        verbose = level;
@@ -99,14 +118,6 @@
 const char *socket_addr_to_string(struct sockaddr *addr, char *addr_out, 
size_t addr_out_size)
 {
 #ifdef _WIN32
-       WSADATA wsa_data;
-       if (!wsa_init) {
-               if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
-                       fprintf(stderr, "WSAStartup failed!\n");
-                       ExitProcess(-1);
-               }
-               wsa_init = 1;
-       }
        DWORD addr_out_len = addr_out_size;
        DWORD addrlen = 0;
 
@@ -159,7 +170,7 @@
 #ifdef _MSC_VER
 #define ALWAYS_INLINE __forceinline
 #else
-#define ALWAYS_INLINE __attribute__((always_inline))
+#define ALWAYS_INLINE __inline__ __attribute__((__always_inline__))
 #endif
 
 #ifdef _WIN32
@@ -234,8 +245,7 @@
                        events = POLLPRI;
                        break;
                default:
-                       if (verbose >= 2)
-                               fprintf(stderr, "%s: fd_mode %d unsupported\n", 
__func__, mode);
+                       SOCKET_ERR(2, "%s: fd_mode %d unsupported\n", __func__, 
mode);
                        return poll_status_error;
        }
        while (1) {
@@ -247,8 +257,7 @@
                        case 1:
                                if((pfd.revents & (POLLNVAL | POLLERR)) != 0)
                                {
-                                       if (verbose >= 2)
-                                               fprintf(stderr, "%s: poll 
unexpected events: %d\n", __func__, (int)pfd.revents);
+                                       SOCKET_ERR(2, "%s: poll unexpected 
events: %d\n", __func__, (int)pfd.revents);
                                        return poll_status_error;
                                }
                                return poll_status_success;
@@ -257,14 +266,12 @@
                        case -1:
                                if(errno == EINTR)
                                {
-                                       if (verbose >= 2)
-                                               fprintf(stderr, "%s: EINTR\n", 
__func__);
+                                       SOCKET_ERR(2, "%s: EINTR\n", __func__);
                                        continue;
                                }
                                // fallthrough
                        default:
-                               if (verbose >= 2)
-                                       fprintf(stderr, "%s: poll failed: 
%s\n", __func__, strerror(errno));
+                               SOCKET_ERR(2, "%s: poll failed: %s\n", 
__func__, strerror(errno));
                                return poll_status_error;
                }
        }
@@ -300,8 +307,7 @@
                        sret = select(fd + 1, NULL, NULL, &fds, pto);
                        break;
                default:
-                       if (verbose >= 2)
-                               fprintf(stderr, "%s: fd_mode %d unsupported\n", 
__func__, mode);
+                       SOCKET_ERR(2, "%s: fd_mode %d unsupported\n", __func__, 
mode);
                        return poll_status_error;
                }
 
@@ -310,20 +316,20 @@
                } else if (sret == 0) {
                        return poll_status_timeout;
                } else {
+#ifdef _WIN32
+                       errno = WSAError_to_errno(WSAGetLastError());
+#endif
                        switch (errno) {
                        case EINTR:
                                // interrupt signal in select
-                               if (verbose >= 2)
-                                       fprintf(stderr, "%s: EINTR\n", 
__func__);
+                               SOCKET_ERR(2, "%s: EINTR\n", __func__);
                                eagain = 1;
                                break;
                        case EAGAIN:
-                               if (verbose >= 2)
-                                       fprintf(stderr, "%s: EAGAIN\n", 
__func__);
+                               SOCKET_ERR(2, "%s: EAGAIN\n", __func__);
                                break;
                        default:
-                               if (verbose >= 2)
-                                       fprintf(stderr, "%s: select failed: 
%s\n", __func__, strerror(errno));
+                               SOCKET_ERR(2, "%s: select failed: %s\n", 
__func__, strerror(errno));
                                return poll_status_error;
                        }
                }
@@ -348,14 +354,13 @@
        /* Create the socket. */
        sock = socket(PF_UNIX, SOCK_STREAM, 0);
        if (sock < 0) {
-               perror("socket");
+               SOCKET_ERR(1, "socket(): %s\n", strerror(errno));
                return -1;
        }
 
 #ifdef SO_NOSIGPIPE
        if (setsockopt(sock, SOL_SOCKET, SO_NOSIGPIPE, (void*)&yes, 
sizeof(int)) == -1) {
-               perror("setsockopt()");
-               socket_close(sock);
+               SOCKET_ERR(1, "setsockopt(): %s\n", strerror(errno));
                return -1;
        }
 #endif
@@ -366,13 +371,13 @@
        name.sun_path[sizeof(name.sun_path) - 1] = '\0';
 
        if (bind(sock, (struct sockaddr*)&name, sizeof(name)) < 0) {
-               perror("bind");
+               SOCKET_ERR(1, "bind(): %s\n", strerror(errno));
                socket_close(sock);
                return -1;
        }
 
        if (listen(sock, 100) < 0) {
-               perror("listen");
+               SOCKET_ERR(1, "listen(): %s\n", strerror(errno));
                socket_close(sock);
                return -1;
        }
@@ -392,36 +397,31 @@
 
        // check if socket file exists...
        if (stat(filename, &fst) != 0) {
-               if (verbose >= 2)
-                       fprintf(stderr, "%s: stat '%s': %s\n", __func__, 
filename,
-                                       strerror(errno));
+               SOCKET_ERR(2, "%s: stat '%s': %s\n", __func__, filename, 
strerror(errno));
                return -1;
        }
        // ... and if it is a unix domain socket
        if (!S_ISSOCK(fst.st_mode)) {
-               if (verbose >= 2)
-                       fprintf(stderr, "%s: File '%s' is not a socket!\n", 
__func__,
-                                       filename);
+               SOCKET_ERR(2, "%s: File '%s' is not a socket!\n", __func__, 
filename);
                return -1;
        }
        // make a new socket
        if ((sfd = socket(PF_UNIX, SOCK_STREAM, 0)) < 0) {
-               if (verbose >= 2)
-                       fprintf(stderr, "%s: socket: %s\n", __func__, 
strerror(errno));
+               SOCKET_ERR(2, "%s: socket: %s\n", __func__, strerror(errno));
                return -1;
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_SNDBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set send buffer for socket");
+               SOCKET_ERR(1, "Could not set send buffer for socket: %s\n", 
strerror(errno));
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_RCVBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set receive buffer for socket");
+               SOCKET_ERR(1, "Could not set receive buffer for socket: %s\n", 
strerror(errno));
        }
 
 #ifdef SO_NOSIGPIPE
        if (setsockopt(sfd, SOL_SOCKET, SO_NOSIGPIPE, (void*)&yes, sizeof(int)) 
== -1) {
-               perror("setsockopt()");
+               SOCKET_ERR(1, "setsockopt(): %s\n", strerror(errno));
                socket_close(sfd);
                return -1;
        }
@@ -462,8 +462,7 @@
        } while (0);
 
        if (sfd < 0) {
-               if (verbose >= 2)
-                       fprintf(stderr, "%s: connect: %s\n", __func__, 
strerror(errno));
+               SOCKET_ERR(2, "%s: connect: %s\n", __func__, strerror(errno));
                return -1;
        }
 
@@ -480,16 +479,6 @@
        struct addrinfo *result, *rp;
        char portstr[8];
        int res;
-#ifdef _WIN32
-       WSADATA wsa_data;
-       if (!wsa_init) {
-               if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
-                       fprintf(stderr, "WSAStartup failed!\n");
-                       ExitProcess(-1);
-               }
-               wsa_init = 1;
-       }
-#endif
 
        memset(&hints, '\0', sizeof(struct addrinfo));
        hints.ai_family = AF_UNSPEC;
@@ -497,11 +486,11 @@
        hints.ai_flags = AI_PASSIVE | AI_NUMERICSERV;
        hints.ai_protocol = IPPROTO_TCP;
 
-       sprintf(portstr, "%d", port);
+       snprintf(portstr, 8, "%d", port);
 
        res = getaddrinfo(addr, portstr, &hints, &result);
        if (res != 0) {
-               fprintf(stderr, "%s: getaddrinfo: %s\n", __func__, 
gai_strerror(res));
+               SOCKET_ERR(1, "%s: getaddrinfo: %s\n", __func__, 
gai_strerror(res));
                return -1;
        }
 
@@ -512,14 +501,17 @@
                }
 
                if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, 
sizeof(int)) == -1) {
-                       perror("setsockopt()");
+#ifdef _WIN32
+                       errno = WSAError_to_errno(WSAGetLastError());
+#endif
+                       SOCKET_ERR(1, "setsockopt() SO_REUSEADDR: %s\n", 
strerror(errno));
                        socket_close(sfd);
                        continue;
                }
 
 #ifdef SO_NOSIGPIPE
                if (setsockopt(sfd, SOL_SOCKET, SO_NOSIGPIPE, (void*)&yes, 
sizeof(int)) == -1) {
-                       perror("setsockopt()");
+                       SOCKET_ERR(1, "setsockopt() SO_NOSIGPIPE: %s\n", 
strerror(errno));
                        socket_close(sfd);
                        continue;
                }
@@ -528,19 +520,28 @@
 #if defined(AF_INET6) && defined(IPV6_V6ONLY)
                if (rp->ai_family == AF_INET6) {
                        if (setsockopt(sfd, IPPROTO_IPV6, IPV6_V6ONLY, (addr) ? 
(void*)&yes : (void*)&no, sizeof(int)) == -1) {
-                               perror("setsockopt() IPV6_V6ONLY");
+#ifdef _WIN32
+                               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+                               SOCKET_ERR(1, "setsockopt() IPV6_V6ONLY: %s\n", 
strerror(errno));
                        }
                }
 #endif
 
                if (bind(sfd, rp->ai_addr, rp->ai_addrlen) < 0) {
-                       perror("bind()");
+#ifdef _WIN32
+                       errno = WSAError_to_errno(WSAGetLastError());
+#endif
+                       SOCKET_ERR(1, "bind(): %s\n", strerror(errno));
                        socket_close(sfd);
                        continue;
                }
 
                if (listen(sfd, 100) < 0) {
-                       perror("listen()");
+#ifdef _WIN32
+                       errno = WSAError_to_errno(WSAGetLastError());
+#endif
+                       SOCKET_ERR(1, "listen(): %s\n", strerror(errno));
                        socket_close(sfd);
                        continue;
                }
@@ -654,7 +655,7 @@
        do {
                pAddresses = (IP_ADAPTER_ADDRESSES*)malloc(outBufLen);
                if (pAddresses == NULL) {
-                       printf("Memory allocation failed for 
IP_ADAPTER_ADDRESSES struct\n");
+                       SOCKET_ERR(1, "Memory allocation failed for 
IP_ADAPTER_ADDRESSES struct\n");
                        return -1;
                }
                dwRetVal = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, 
pAddresses, &outBufLen);
@@ -834,12 +835,12 @@
 /* Assume unicast address for first prefix of operational adapter */
                                if (AF_INET == lpSockaddr->sa_family)
                                        if (IN_MULTICAST( ntohl (((struct 
sockaddr_in*)(lpSockaddr))->sin_addr.s_addr))) {
-                                               fprintf(stderr, "FATAL: first 
prefix is non a unicast address\n");
+                                               SOCKET_ERR(1, "FATAL: first 
prefix is non a unicast address\n");
                                                break;
                                        }
                                if (AF_INET6 == lpSockaddr->sa_family)
                                        if (IN6_IS_ADDR_MULTICAST( &((struct 
sockaddr_in6*)(lpSockaddr))->sin6_addr)) {
-                                               fprintf(stderr, "FATAL: first 
prefix is not a unicast address\n");
+                                               SOCKET_ERR(1, "FATAL: first 
prefix is not a unicast address\n");
                                                break;
                                        }
 /* Assume subnet or host IP address for XP backward compatibility */
@@ -964,7 +965,10 @@
 
        /* get interfaces */
        if (getifaddrs(&ifaddr) == -1) {
-               perror("getifaddrs");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "getifaddrs(): %s\n", strerror(errno));
                return res;
        }
 
@@ -1038,14 +1042,6 @@
        int addrlen = 0;
 #ifdef _WIN32
        u_long l_yes = 1;
-       WSADATA wsa_data;
-       if (!wsa_init) {
-               if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
-                       fprintf(stderr, "WSAStartup failed!\n");
-                       ExitProcess(-1);
-               }
-               wsa_init = 1;
-       }
 #endif
 
        if (addr->sa_family == AF_INET) {
@@ -1073,26 +1069,32 @@
        }
 #endif
        else {
-               fprintf(stderr, "ERROR: Unsupported address family");
+               SOCKET_ERR(1, "ERROR: Unsupported address family\n");
                return -1;
        }
 
        sfd = socket(addr->sa_family, SOCK_STREAM, IPPROTO_TCP);
        if (sfd == -1) {
-               perror("socket()");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "socket(): %s\n", strerror(errno));
                return -1;
        }
 
 #ifdef SO_NOSIGPIPE
        if (setsockopt(sfd, SOL_SOCKET, SO_NOSIGPIPE, (void*)&yes, sizeof(int)) 
== -1) {
-               perror("setsockopt()");
+               SOCKET_ERR(1, "setsockopt() SO_NOSIGPIPE: %s\n", 
strerror(errno));
                socket_close(sfd);
                return -1;
        }
 #endif
 
        if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, sizeof(int)) 
== -1) {
-               perror("setsockopt()");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "setsockopt() SO_REUSEADDR: %s\n", 
strerror(errno));
                socket_close(sfd);
                return -1;
        }
@@ -1146,21 +1148,30 @@
                if (verbose >= 2) {
                        char addrtxt[48];
                        socket_addr_to_string(addr, addrtxt, sizeof(addrtxt));
-                       fprintf(stderr, "%s: Could not connect to %s port 
%d\n", __func__, addrtxt, port);
+                       SOCKET_ERR(2, "%s: Could not connect to %s port %d\n", 
__func__, addrtxt, port);
                }
                return -1;
        }
 
        if (setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (void*)&yes, sizeof(int)) 
== -1) {
-               perror("Could not set TCP_NODELAY on socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set TCP_NODELAY on socket: %s\n", 
strerror(errno));
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_SNDBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set send buffer for socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set send buffer for socket: %s\n", 
strerror(errno));
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_RCVBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set receive buffer for socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set receive buffer for socket: %s\n", 
strerror(errno));
        }
 
        return sfd;
@@ -1177,14 +1188,6 @@
        int res;
 #ifdef _WIN32
        u_long l_yes = 1;
-       WSADATA wsa_data;
-       if (!wsa_init) {
-               if (WSAStartup(MAKEWORD(2,2), &wsa_data) != ERROR_SUCCESS) {
-                       fprintf(stderr, "WSAStartup failed!\n");
-                       ExitProcess(-1);
-               }
-               wsa_init = 1;
-       }
 #else
        int flags = 0;
 #endif
@@ -1195,11 +1198,11 @@
        hints.ai_flags = AI_NUMERICSERV;
        hints.ai_protocol = IPPROTO_TCP;
 
-       sprintf(portstr, "%d", port);
+       snprintf(portstr, 8, "%d", port);
 
        res = getaddrinfo(addr, portstr, &hints, &result);
        if (res != 0) {
-               fprintf(stderr, "%s: getaddrinfo: %s\n", __func__, 
gai_strerror(res));
+               SOCKET_ERR(1, "%s: getaddrinfo: %s\n", __func__, 
gai_strerror(res));
                return -1;
        }
 
@@ -1211,14 +1214,17 @@
 
 #ifdef SO_NOSIGPIPE
                if (setsockopt(sfd, SOL_SOCKET, SO_NOSIGPIPE, (void*)&yes, 
sizeof(int)) == -1) {
-                       perror("setsockopt()");
+                       SOCKET_ERR(1, "setsockopt() SO_NOSIGPIPE: %s\n", 
strerror(errno));
                        socket_close(sfd);
                        return -1;
                }
 #endif
 
                if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (void*)&yes, 
sizeof(int)) == -1) {
-                       perror("setsockopt()");
+#ifdef _WIN32
+                       errno = WSAError_to_errno(WSAGetLastError());
+#endif
+                       SOCKET_ERR(1, "setsockopt() SO_REUSEADDR: %s\n", 
strerror(errno));
                        socket_close(sfd);
                        continue;
                }
@@ -1269,21 +1275,29 @@
        freeaddrinfo(result);
 
        if (rp == NULL) {
-               if (verbose >= 2)
-                       fprintf(stderr, "%s: Could not connect to %s:%d\n", 
__func__, addr, port);
+               SOCKET_ERR(2, "%s: Could not connect to %s:%d\n", __func__, 
addr, port);
                return -1;
        }
 
        if (setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (void*)&yes, sizeof(int)) 
== -1) {
-               perror("Could not set TCP_NODELAY on socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set TCP_NODELAY on socket: %s\n", 
strerror(errno));
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_SNDBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set send buffer for socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set send buffer for socket: %s\n", 
strerror(errno));
        }
 
        if (setsockopt(sfd, SOL_SOCKET, SO_RCVBUF, (void*)&bufsize, 
sizeof(int)) == -1) {
-               perror("Could not set receive buffer for socket");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
+               SOCKET_ERR(1, "Could not set receive buffer for socket: %s\n", 
strerror(errno));
        }
 
        return sfd;
@@ -1292,8 +1306,7 @@
 int socket_check_fd(int fd, fd_mode fdm, unsigned int timeout)
 {
        if (fd < 0) {
-               if (verbose >= 2)
-                       fprintf(stderr, "ERROR: invalid fd in check_fd %d\n", 
fd);
+               SOCKET_ERR(2, "ERROR: invalid fd in check_fd %d\n", fd);
                return -EINVAL;
        }
 
@@ -1313,8 +1326,7 @@
                        return -ETIMEDOUT;
                case poll_status_error:
                default:
-                       if (verbose >= 2)
-                               fprintf(stderr, "%s: poll_wrapper failed\n", 
__func__);
+                       SOCKET_ERR(2, "%s: poll_wrapper failed\n", __func__);
                        return -ECONNRESET;
        }
 
@@ -1333,18 +1345,33 @@
        addr_len = sizeof(addr);
 
        result = accept(fd, (struct sockaddr*)&addr, &addr_len);
-
+#ifdef _WIN32
+       if (result < 0) {
+               errno = WSAError_to_errno(WSAGetLastError());
+       }
+#endif
        return result;
 }
 
 int socket_shutdown(int fd, int how)
 {
-       return shutdown(fd, how);
+       int result = shutdown(fd, how);
+#ifdef _WIN32
+       if (result < 0) {
+               errno = WSAError_to_errno(WSAGetLastError());
+       }
+#endif
+       return result;
 }
 
-int socket_close(int fd) {
+int socket_close(int fd)
+{
 #ifdef _WIN32
-       return closesocket(fd);
+       int result = closesocket(fd);
+       if (result < 0) {
+               errno = WSAError_to_errno(WSAGetLastError());
+       }
+       return result;
 #else
        return close(fd);
 #endif
@@ -1374,8 +1401,7 @@
        result = recv(fd, data, length, flags);
        if (result == 0) {
                // but this is an error condition
-               if (verbose >= 3)
-                       fprintf(stderr, "%s: fd=%d recv returned 0\n", 
__func__, fd);
+               SOCKET_ERR(3, "%s: fd=%d recv returned 0\n", __func__, fd);
                return -ECONNRESET;
        }
        if (result < 0) {
@@ -1420,7 +1446,9 @@
 
        addr_len = sizeof(addr);
        if (0 > getsockname(fd, (struct sockaddr*)&addr, &addr_len)) {
-               perror("getsockname()");
+#ifdef _WIN32
+               errno = WSAError_to_errno(WSAGetLastError());
+#endif
                return -1;
        }
 

++++++ libimobiledevice-glue-gcc14.patch ++++++
diff -ur libimobiledevice-glue.orig/src/socket.c 
libimobiledevice-glue/src/socket.c
--- libimobiledevice-glue.orig/src/socket.c     2025-02-25 21:35:37.200042020 
+0100
+++ libimobiledevice-glue/src/socket.c  2025-02-25 22:07:25.649820135 +0100
@@ -90,9 +90,9 @@
 
 static int verbose = 0;
 
-#define SOCKET_ERR(level, msg, ...) \
+#define SOCKET_ERR(level, ...) \
        if (verbose >= level) { \
-               fprintf(stderr, "[socket] " msg __VA_OPT__(,) __VA_ARGS__); \
+               fprintf(stderr, "[socket] " __VA_ARGS__); \
        }
 
 void socket_init(void)

++++++ libimobiledevice-glue.obsinfo ++++++
--- /var/tmp/diff_new_pack.6ajtZz/_old  2025-03-07 16:39:59.251880508 +0100
+++ /var/tmp/diff_new_pack.6ajtZz/_new  2025-03-07 16:39:59.255880675 +0100
@@ -1,5 +1,5 @@
 name: libimobiledevice-glue
-version: 1.3.1+git11.20241227
-mtime: 1735260934
-commit: 440dbbbf615de11acdd8216df0e3676e8efb9ba1
+version: 1.3.1+git18.20250213
+mtime: 1739415017
+commit: fe28a576b65f6fdcccb0f85721d79b9d3965faa9
 

Reply via email to