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 - [email protected]
+
+- 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 <[email protected]>
+
+- - 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 [email protected] -- 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">[email protected]:libimobiledevice/libimobiledevice.git</param>
<param
name="changesrevision">b3d35fbcf7a1ac669c2e80fbd58920941a5d4c0c</param></service><service
name="tar_scm">
<param
name="url">[email protected]: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