From 4feaa59cc648ccd9aa474d85a6c42e3143b3dfc3 Mon Sep 17 00:00:00 2001 From: hayati ayguen Date: Sun, 28 Jul 2019 00:44:45 +0000 Subject: [PATCH] bugfixes and compiler warnings with gcc on linux Signed-off-by: hayati ayguen --- include/controlThread.h | 2 +- src/controlThread.c | 16 ++++++++-------- src/librtlsdr.c | 10 +++------- src/rtl_tcp.c | 2 +- 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/include/controlThread.h b/include/controlThread.h index 0cccae1..bbca3a2 100644 --- a/include/controlThread.h +++ b/include/controlThread.h @@ -26,7 +26,7 @@ extern "C" { typedef struct { rtlsdr_dev_t *dev; - SOCKET port; + int port; int wait; int report_i2c; char *addr; diff --git a/src/controlThread.c b/src/controlThread.c index f7a2d56..7a19b33 100644 --- a/src/controlThread.c +++ b/src/controlThread.c @@ -84,6 +84,7 @@ void *ctrl_thread_fn(void *arg) struct linger ling = { 1,0 }; SOCKET listensocket; SOCKET controlSocket; + int haveControlSocket = 0; struct sockaddr_in local, remote; socklen_t rlen; @@ -102,6 +103,7 @@ void *ctrl_thread_fn(void *arg) char *addr = data->addr; int* do_exit = data->pDoExit; u_long blockmode = 1; + int retval; memset(reg_values, 0, NUM_I2C_REGISTERS); @@ -115,9 +117,9 @@ void *ctrl_thread_fn(void *arg) setsockopt(listensocket, SOL_SOCKET, SO_REUSEADDR, (char *)&r, sizeof(int)); setsockopt(listensocket, SOL_SOCKET, SO_LINGER, (char *)&ling, sizeof(ling)); - int retval = bind(listensocket, (struct sockaddr *)&local, sizeof(local)); + retval = bind(listensocket, (struct sockaddr *)&local, sizeof(local)); if (retval == SOCKET_ERROR) - error = WSAGetLastError(); + error = 1; #ifdef _WIN32 ioctlsocket(listensocket, FIONBIO, &blockmode); #else @@ -129,11 +131,7 @@ void *ctrl_thread_fn(void *arg) printf("listening on Control port %d...\n", port); retval = listen(listensocket, 1); if (retval == SOCKET_ERROR) -#ifdef _WIN32 - error = WSAGetLastError(); -#else - ; -#endif + error = 1; while (1) { FD_ZERO(&connfds); FD_SET(listensocket, &connfds); @@ -146,6 +144,7 @@ void *ctrl_thread_fn(void *arg) else if (r) { rlen = sizeof(remote); controlSocket = accept(listensocket, (struct sockaddr *)&remote, &rlen); + haveControlSocket = 1; break; } } @@ -217,7 +216,8 @@ sleep: usleep(wait); } close: - closesocket(controlSocket); + if (haveControlSocket) + closesocket(controlSocket); if (*do_exit) { closesocket(listensocket); diff --git a/src/librtlsdr.c b/src/librtlsdr.c index 986d05b..554a7d0 100644 --- a/src/librtlsdr.c +++ b/src/librtlsdr.c @@ -1703,7 +1703,7 @@ int rtlsdr_set_tuner_sideband(rtlsdr_dev_t *dev, int sideband) if (r) { if ( devt->verbose ) - fprintf(stderr, "rtlsdr_set_tuner_sideband(%d): rtlsdr_set_if_freq(%d) returned error %d\n", sideband, iffreq); + fprintf(stderr, "rtlsdr_set_tuner_sideband(%d): rtlsdr_set_if_freq(%d) returned error %d\n", sideband, iffreq, r); return r; } @@ -2779,12 +2779,7 @@ int rtlsdr_open(rtlsdr_dev_t **out_dev, uint32_t index) dev->softagc.rpcNumGains = 0; dev->softagc.rpcGainValues = NULL; - /* -cs- */ - #ifdef __MINGW32__ - dev->cs_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER; - #else - dev->cs_mutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; - #endif + pthread_mutex_init(&dev->cs_mutex, NULL); /* UDP controller server */ #ifdef WITH_UDP_SERVER @@ -3000,6 +2995,7 @@ int rtlsdr_close(rtlsdr_dev_t *dev) } softagc_uninit(dev); + pthread_mutex_destroy(&dev->cs_mutex); libusb_release_interface(dev->devh, 0); diff --git a/src/rtl_tcp.c b/src/rtl_tcp.c index c1176a8..f5cbdbd 100644 --- a/src/rtl_tcp.c +++ b/src/rtl_tcp.c @@ -462,7 +462,7 @@ static void *command_worker(void *arg) struct ir_thread_data { rtlsdr_dev_t *dev; - SOCKET port; + int port; int wait; char *addr; };