Skip to content

Commit 3a202a5

Browse files
authored
Merge pull request #472 from analogdevicesinc/rgetz-update-win-builds
cmake: Add MSVC flags for Wall, Wno-sign-compare and Werror
2 parents 14d6564 + 9a00766 commit 3a202a5

22 files changed

+312
-131
lines changed

CMakeLists.txt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,16 @@ if (NOT LOG_LEVEL)
5959
endif()
6060

6161
if (MSVC)
62-
# Avoid annoying warnings from Visual Studio
63-
add_definitions(-D_CRT_SECURE_NO_WARNINGS=1)
64-
62+
add_compile_options(/W4 /wd4018 /wd4200 /wd4127 /wd4100)
63+
# C4018: signed/unsigned mismatch ; same as -Wno-sign-compare
64+
# C4200: nonstandard extension used : zero-sized array in struct (usb.h)
65+
# C4127: conditional expression is constant (IIO_ERROR and IIO_DEBUG macros)
66+
# C4100: unreferenced parameter; same as -Wno-unused-parameter
67+
68+
if(DEFINED ENV{CI} AND DEFINED ENV{APPVEYOR})
69+
message(STATUS "Running in an AppVeyor environment, setting -Werror")
70+
add_compile_options(/WX)
71+
endif()
6572
set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
6673
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll.a" ".a" ".lib")
6774

@@ -110,6 +117,7 @@ endif()
110117

111118
include(CheckSymbolExists)
112119
check_symbol_exists(strdup "string.h" HAS_STRDUP)
120+
check_symbol_exists(strndup "string.h" HAS_STRNDUP)
113121
check_symbol_exists(strerror_r "string.h" HAS_STRERROR_R)
114122
check_symbol_exists(newlocale "locale.h" HAS_NEWLOCALE)
115123

buffer.c

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,25 @@ static bool device_is_high_speed(const struct iio_device *dev)
3636
struct iio_buffer * iio_device_create_buffer(const struct iio_device *dev,
3737
size_t samples_count, bool cyclic)
3838
{
39-
int ret = -EINVAL;
39+
ssize_t ret = -EINVAL;
4040
struct iio_buffer *buf;
41-
unsigned int sample_size = iio_device_get_sample_size(dev);
41+
ssize_t sample_size = iio_device_get_sample_size(dev);
4242

4343
if (!sample_size || !samples_count)
4444
goto err_set_errno;
4545

46+
if (sample_size < 0) {
47+
ret = sample_size;
48+
goto err_set_errno;
49+
}
50+
4651
buf = malloc(sizeof(*buf));
4752
if (!buf) {
4853
ret = -ENOMEM;
4954
goto err_set_errno;
5055
}
5156

52-
buf->dev_sample_size = sample_size;
57+
buf->dev_sample_size = (unsigned int) sample_size;
5358
buf->length = sample_size * samples_count;
5459
buf->dev = dev;
5560
buf->mask = calloc(dev->words, sizeof(*buf->mask));
@@ -87,8 +92,11 @@ struct iio_buffer * iio_device_create_buffer(const struct iio_device *dev,
8792
}
8893
}
8994

90-
buf->sample_size = iio_device_get_sample_size_mask(dev,
91-
buf->mask, dev->words);
95+
ret = iio_device_get_sample_size_mask(dev, buf->mask, dev->words);
96+
if (ret < 0)
97+
goto err_close_device;
98+
99+
buf->sample_size = (unsigned int) ret;
92100
buf->data_length = buf->length;
93101
return buf;
94102

@@ -99,7 +107,7 @@ struct iio_buffer * iio_device_create_buffer(const struct iio_device *dev,
99107
err_free_buf:
100108
free(buf);
101109
err_set_errno:
102-
errno = -ret;
110+
errno = -(int)ret;
103111
return NULL;
104112
}
105113

@@ -126,6 +134,7 @@ ssize_t iio_buffer_refill(struct iio_buffer *buffer)
126134
{
127135
ssize_t read;
128136
const struct iio_device *dev = buffer->dev;
137+
ssize_t ret;
129138

130139
if (buffer->dev_is_high_speed) {
131140
read = dev->ctx->ops->get_buffer(dev, &buffer->buffer,
@@ -137,8 +146,10 @@ ssize_t iio_buffer_refill(struct iio_buffer *buffer)
137146

138147
if (read >= 0) {
139148
buffer->data_length = read;
140-
buffer->sample_size = iio_device_get_sample_size_mask(dev,
141-
buffer->mask, dev->words);
149+
ret = iio_device_get_sample_size_mask(dev, buffer->mask, dev->words);
150+
if (ret < 0)
151+
return ret;
152+
buffer->sample_size = (unsigned int)ret;
142153
}
143154
return read;
144155
}

channel.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -743,33 +743,33 @@ int iio_channel_attr_read_double(const struct iio_channel *chn,
743743
int iio_channel_attr_write_longlong(const struct iio_channel *chn,
744744
const char *attr, long long val)
745745
{
746-
ssize_t ret;
746+
int ret;
747747
char buf[1024];
748748
iio_snprintf(buf, sizeof(buf), "%lld", val);
749-
ret = iio_channel_attr_write(chn, attr, buf);
749+
ret = (int) iio_channel_attr_write(chn, attr, buf);
750750
return ret < 0 ? ret : 0;
751751
}
752752

753753
int iio_channel_attr_write_double(const struct iio_channel *chn,
754754
const char *attr, double val)
755755
{
756-
ssize_t ret;
756+
int ret;
757757
char buf[1024];
758758

759-
ret = (ssize_t) write_double(buf, sizeof(buf), val);
759+
ret = write_double(buf, sizeof(buf), val);
760760
if (!ret)
761-
ret = iio_channel_attr_write(chn, attr, buf);
761+
ret = (int) iio_channel_attr_write(chn, attr, buf);
762762
return ret < 0 ? ret : 0;
763763
}
764764

765765
int iio_channel_attr_write_bool(const struct iio_channel *chn,
766766
const char *attr, bool val)
767767
{
768-
ssize_t ret;
768+
int ret;
769769
if (val)
770-
ret = iio_channel_attr_write_raw(chn, attr, "1", 2);
770+
ret = (int) iio_channel_attr_write_raw(chn, attr, "1", 2);
771771
else
772-
ret = iio_channel_attr_write_raw(chn, attr, "0", 2);
772+
ret = (int) iio_channel_attr_write_raw(chn, attr, "0", 2);
773773
return ret < 0 ? ret : 0;
774774
}
775775

context.c

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include "iio-config.h"
2121
#include "iio-private.h"
2222
#include "sort.h"
23-
#include "network.h"
2423

2524
#include <errno.h>
2625
#include <string.h>
@@ -328,22 +327,13 @@ struct iio_context * iio_create_context_from_uri(const char *uri)
328327

329328
struct iio_context * iio_create_default_context(void)
330329
{
331-
char *hostname = getenv("IIOD_REMOTE");
330+
char *hostname = iio_getenv("IIOD_REMOTE");
331+
struct iio_context * ctx;
332332

333333
if (hostname) {
334-
if (strlen(hostname) > 2 && strlen(hostname) < MAXHOSTNAMELEN + 4) {
335-
struct iio_context *ctx;
336-
337-
ctx = iio_create_context_from_uri(hostname);
338-
if (ctx)
339-
return ctx;
340-
}
341-
#ifdef HAVE_DNS_SD
342-
/* If the environment variable is an empty string, we will
343-
* discover the server using ZeroConf */
344-
if (!hostname[0])
345-
return iio_create_network_context(NULL);
346-
#endif
334+
ctx = iio_create_context_from_uri(hostname);
335+
free(hostname);
336+
return ctx;
347337
}
348338

349339
return iio_create_local_context();

device.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -661,7 +661,7 @@ int iio_device_attr_write_longlong(const struct iio_device *dev,
661661
iio_snprintf(buf, sizeof(buf), "%lld", val);
662662
ret = iio_device_attr_write(dev, attr, buf);
663663

664-
return ret < 0 ? ret : 0;
664+
return (int) (ret < 0 ? ret : 0);
665665
}
666666

667667
int iio_device_attr_write_double(const struct iio_device *dev,
@@ -673,7 +673,7 @@ int iio_device_attr_write_double(const struct iio_device *dev,
673673
ret = (ssize_t) write_double(buf, sizeof(buf), val);
674674
if (!ret)
675675
ret = iio_device_attr_write(dev, attr, buf);
676-
return ret < 0 ? ret : 0;
676+
return (int) (ret < 0 ? ret : 0);
677677
}
678678

679679
int iio_device_attr_write_bool(const struct iio_device *dev,
@@ -686,7 +686,7 @@ int iio_device_attr_write_bool(const struct iio_device *dev,
686686
else
687687
ret = iio_device_attr_write(dev, attr, "0");
688688

689-
return ret < 0 ? ret : 0;
689+
return (int) (ret < 0 ? ret : 0);
690690
}
691691

692692
int iio_device_buffer_attr_read_longlong(const struct iio_device *dev,
@@ -737,7 +737,7 @@ int iio_device_buffer_attr_write_longlong(const struct iio_device *dev,
737737
iio_snprintf(buf, sizeof(buf), "%lld", val);
738738
ret = iio_device_buffer_attr_write(dev, attr, buf);
739739

740-
return ret < 0 ? ret : 0;
740+
return (int) (ret < 0 ? ret : 0);
741741
}
742742

743743
int iio_device_buffer_attr_write_double(const struct iio_device *dev,
@@ -749,7 +749,7 @@ int iio_device_buffer_attr_write_double(const struct iio_device *dev,
749749
ret = (ssize_t) write_double(buf, sizeof(buf), val);
750750
if (!ret)
751751
ret = iio_device_buffer_attr_write(dev, attr, buf);
752-
return ret < 0 ? ret : 0;
752+
return (int) (ret < 0 ? ret : 0);
753753
}
754754

755755
int iio_device_buffer_attr_write_bool(const struct iio_device *dev,
@@ -762,7 +762,7 @@ int iio_device_buffer_attr_write_bool(const struct iio_device *dev,
762762
else
763763
ret = iio_device_buffer_attr_write(dev, attr, "0");
764764

765-
return ret < 0 ? ret : 0;
765+
return (int) (ret < 0 ? ret : 0);
766766
}
767767

768768
ssize_t iio_device_debug_attr_read(const struct iio_device *dev,
@@ -853,7 +853,7 @@ int iio_device_debug_attr_write_longlong(const struct iio_device *dev,
853853
iio_snprintf(buf, sizeof(buf), "%lld", val);
854854
ret = iio_device_debug_attr_write(dev, attr, buf);
855855

856-
return ret < 0 ? ret : 0;
856+
return (int) (ret < 0 ? ret : 0);
857857
}
858858

859859
int iio_device_debug_attr_write_double(const struct iio_device *dev,
@@ -865,7 +865,7 @@ int iio_device_debug_attr_write_double(const struct iio_device *dev,
865865
ret = (ssize_t) write_double(buf, sizeof(buf), val);
866866
if (!ret)
867867
ret = iio_device_debug_attr_write(dev, attr, buf);
868-
return ret < 0 ? ret : 0;
868+
return (int) (ret < 0 ? ret : 0);
869869
}
870870

871871
int iio_device_debug_attr_write_bool(const struct iio_device *dev,
@@ -878,7 +878,7 @@ int iio_device_debug_attr_write_bool(const struct iio_device *dev,
878878
else
879879
ret = iio_device_debug_attr_write_raw(dev, attr, "0", 2);
880880

881-
return ret < 0 ? ret : 0;
881+
return (int) (ret < 0 ? ret : 0);
882882
}
883883

884884
int iio_device_identify_filename(const struct iio_device *dev,
@@ -930,7 +930,7 @@ int iio_device_reg_write(struct iio_device *dev,
930930
address, value);
931931
ret = iio_device_debug_attr_write(dev, "direct_reg_access", buf);
932932

933-
return ret < 0 ? ret : 0;
933+
return (int) (ret < 0 ? ret : 0);
934934
}
935935

936936
int iio_device_reg_read(struct iio_device *dev,

iio-config.h.cmakein

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#cmakedefine WITH_LOCAL_CONFIG
2121
#cmakedefine HAS_PIPE2
2222
#cmakedefine HAS_STRDUP
23+
#cmakedefine HAS_STRNDUP
2324
#cmakedefine HAS_STRERROR_R
2425
#cmakedefine HAS_NEWLOCALE
2526
#cmakedefine HAS_PTHREAD_SETNAME_NP

iio-private.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,10 @@
2929
#ifdef _MSC_BUILD
3030
#define inline __inline
3131
#define iio_snprintf sprintf_s
32+
#define iio_sscanf sscanf_s
3233
#else
3334
#define iio_snprintf snprintf
35+
#define iio_sscanf sscanf
3436
#endif
3537

3638
#ifdef _WIN32
@@ -286,8 +288,8 @@ struct iio_context * local_create_context(void);
286288
struct iio_context * network_create_context(const char *hostname);
287289
struct iio_context * xml_create_context_mem(const char *xml, size_t len);
288290
struct iio_context * xml_create_context(const char *xml_file);
289-
struct iio_context * usb_create_context(unsigned int bus, unsigned int address,
290-
unsigned int interface);
291+
struct iio_context * usb_create_context(unsigned int bus, uint16_t address,
292+
uint16_t interface);
291293
struct iio_context * usb_create_context_from_uri(const char *uri);
292294
struct iio_context * serial_create_context_from_uri(const char *uri);
293295

@@ -314,6 +316,7 @@ unsigned int find_channel_modifier(const char *s, size_t *len_p);
314316

315317
char *iio_strdup(const char *str);
316318
size_t iio_strlcpy(char * __restrict dst, const char * __restrict src, size_t dsize);
319+
char * iio_getenv (char * envvar);
317320

318321
int iio_context_add_attr(struct iio_context *ctx,
319322
const char *key, const char *value);

iiod-client.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,13 +169,13 @@ int iiod_client_get_version(struct iiod_client *client, void *desc,
169169

170170
iio_mutex_lock(client->lock);
171171

172-
ret = ops->write(pdata, desc, "VERSION\r\n", sizeof("VERSION\r\n") - 1);
172+
ret = (int) ops->write(pdata, desc, "VERSION\r\n", sizeof("VERSION\r\n") - 1);
173173
if (ret < 0) {
174174
iio_mutex_unlock(client->lock);
175175
return ret;
176176
}
177177

178-
ret = ops->read_line(pdata, desc, buf, sizeof(buf));
178+
ret = (int) ops->read_line(pdata, desc, buf, sizeof(buf));
179179
iio_mutex_unlock(client->lock);
180180

181181
if (ret < 0)
@@ -325,7 +325,7 @@ static int iiod_client_discard(struct iiod_client *client, void *desc,
325325

326326
ret = iiod_client_read_all(client, desc, buf, read_len);
327327
if (ret < 0)
328-
return ret;
328+
return (int) ret;
329329

330330
to_discard -= (size_t) ret;
331331
} while (to_discard);
@@ -588,7 +588,7 @@ static int iiod_client_read_mask(struct iiod_client *client,
588588
IIO_DEBUG("Reading mask\n");
589589

590590
for (i = words, ptr = buf; i > 0; i--) {
591-
sscanf(ptr, "%08" PRIx32, &mask[i - 1]);
591+
iio_sscanf(ptr, "%08" PRIx32, &mask[i - 1]);
592592
IIO_DEBUG("mask[%lu] = 0x%08" PRIx32 "\n",
593593
(unsigned long)(i - 1), mask[i - 1]);
594594

local.c

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,12 +1230,24 @@ static int handle_protected_scan_element_attr(struct iio_channel *chn,
12301230
char endian, sign;
12311231

12321232
if (strchr(buf, 'X')) {
1233-
sscanf(buf, "%ce:%c%u/%uX%u>>%u", &endian, &sign,
1233+
iio_sscanf(buf, "%ce:%c%u/%uX%u>>%u",
1234+
#ifdef _MSC_BUILD
1235+
&endian, sizeof(endian),
1236+
&sign, sizeof(sign),
1237+
#else
1238+
&endian, &sign,
1239+
#endif
12341240
&chn->format.bits, &chn->format.length,
12351241
&chn->format.repeat, &chn->format.shift);
12361242
} else {
12371243
chn->format.repeat = 1;
1238-
sscanf(buf, "%ce:%c%u/%u>>%u", &endian, &sign,
1244+
iio_sscanf(buf, "%ce:%c%u/%u>>%u",
1245+
#ifdef _MSC_BUILD
1246+
&endian, sizeof(endian),
1247+
&sign, sizeof(sign),
1248+
#else
1249+
&endian, &sign,
1250+
#endif
12391251
&chn->format.bits, &chn->format.length,
12401252
&chn->format.shift);
12411253
}

0 commit comments

Comments
 (0)