From 8dde86dae77597f96886df4b90cd10f0a6ea0d4e Mon Sep 17 00:00:00 2001 From: Dirk Zimoch Date: Mon, 11 Jun 2018 16:03:12 +0200 Subject: [PATCH] fix warnings on Linux introduced by previous changes on Windows --- src/ChecksumConverter.cc | 13 ++++++++----- src/RegexpConverter.cc | 6 +++--- src/StreamBuffer.cc | 6 +----- src/StreamBuffer.h | 5 ++++- src/StreamCore.cc | 24 ++++++++++++------------ src/StreamEpics.cc | 20 +++++++++++--------- src/StreamFormatConverter.cc | 2 +- src/StreamProtocol.cc | 2 +- src/TimestampConverter.cc | 3 ++- src/devStream.h | 1 + src/devaaiStream.c | 2 +- src/devaaoStream.c | 2 +- src/devwaveformStream.c | 2 +- 13 files changed, 47 insertions(+), 41 deletions(-) diff --git a/src/ChecksumConverter.cc b/src/ChecksumConverter.cc index 8d3a943..8b50e48 100644 --- a/src/ChecksumConverter.cc +++ b/src/ChecksumConverter.cc @@ -463,7 +463,7 @@ struct checksum checksumFunc func; unsigned int init; unsigned int xorout; - signed char bytes; + unsigned char bytes; }; static checksum checksumMap[] = @@ -562,7 +562,7 @@ parse(const StreamFormat&, StreamBuffer& info, const char*& source, bool) } } - error ("Unknown checksum algorithm \"%.*s\"\n", len, source); + error ("Unknown checksum algorithm \"%.*s\"\n", (int)len, source); return false; } @@ -677,12 +677,12 @@ scanPseudo(const StreamFormat& format, StreamBuffer& input, size_t& cursor) debug("ChecksumConverter %s: input checksum is 0x%0*X\n", checksumMap[fnum].name, 2*checksumMap[fnum].bytes, sum); - int i, j; unsigned int inchar; if (format.flags & sign_flag) // decimal { unsigned int sumin = 0; + size_t i; for (i = 0; i < expectedLength; i++) { inchar = input[cursor+i]; @@ -692,13 +692,14 @@ scanPseudo(const StreamFormat& format, StreamBuffer& input, size_t& cursor) if (sumin != sum) { debug("ChecksumConverter %s: Input %0*u does not match checksum %0*u\n", - checksumMap[fnum].name, i, sumin, expectedLength, sum); + checksumMap[fnum].name, (int)i, sumin, (int)expectedLength, sum); return -1; } } else if (format.flags & alt_flag) // lsb first (little endian) { + size_t i; for (i = 0; i < checksumMap[fnum].bytes; i++) { if (format.flags & zero_flag) // ASCII @@ -741,11 +742,13 @@ scanPseudo(const StreamFormat& format, StreamBuffer& input, size_t& cursor) } else // msb first (big endian) { + ssize_t i; + size_t j; for (i = checksumMap[fnum].bytes-1, j = 0; i >= 0; i--, j++) { if (format.flags & zero_flag) // ASCII { - sscanf(input(cursor+2*i), "%2x", &inchar); + sscanf(input(cursor+2*i), "%2X", &inchar); } else if (format.flags & left_flag) // poor man's hex: 0x30 - 0x3F diff --git a/src/RegexpConverter.cc b/src/RegexpConverter.cc index 0cc5656..2de92fc 100644 --- a/src/RegexpConverter.cc +++ b/src/RegexpConverter.cc @@ -38,7 +38,7 @@ class RegexpConverter : public StreamFormatConverter { int parse (const StreamFormat& fmt, StreamBuffer&, const char*&, bool); - ssize_t scanString(const StreamFormat& fmt, const char*, char*, unsigned long&); + ssize_t scanString(const StreamFormat& fmt, const char*, char*, size_t&); ssize_t scanPseudo(const StreamFormat& fmt, StreamBuffer& input, size_t& cursor); bool printPseudo(const StreamFormat& fmt, StreamBuffer& output); }; @@ -195,7 +195,7 @@ static void regsubst(const StreamFormat& fmt, StreamBuffer& buffer, long start) debug("rest = \"%s\"\n", buffer(start+c+ovector[1])); s = subst; debug("subs = \"%s\"\n", s.expand()()); - for (r = 0; r < s.length(); r++) + for (r = 0; r < (int)s.length(); r++) { debug("check \"%s\"\n", s.expand(r)()); if (s[r] == esc) @@ -230,7 +230,7 @@ static void regsubst(const StreamFormat& fmt, StreamBuffer& buffer, long start) } ssize_t RegexpConverter:: -scanPseudo(const StreamFormat& fmt, StreamBuffer& input, ssize_t& cursor) +scanPseudo(const StreamFormat& fmt, StreamBuffer& input, size_t& cursor) { /* re-write input buffer */ regsubst(fmt, input, cursor); diff --git a/src/StreamBuffer.cc b/src/StreamBuffer.cc index 750932e..2181667 100644 --- a/src/StreamBuffer.cc +++ b/src/StreamBuffer.cc @@ -136,12 +136,8 @@ append(const void* s, ssize_t size) } ssize_t StreamBuffer:: -find(const char* m, size_t size, ssize_t start) const +find(const void* m, size_t size, ssize_t start) const { - if (m && size == 0) - { - size = strlen(m); - } if (start < 0) { start += len; diff --git a/src/StreamBuffer.h b/src/StreamBuffer.h index fcd9fbd..1406c22 100644 --- a/src/StreamBuffer.h +++ b/src/StreamBuffer.h @@ -205,7 +205,10 @@ public: c, start<0?-start:len-start)))? p-(buffer+offs) : -1;} - ssize_t find(const char* s, size_t size=0, ssize_t start=0) const; + ssize_t find(const void* s, size_t size, ssize_t start=0) const; + + ssize_t find(const char* s, ssize_t start=0) const + {return find(s, s?strlen(s):0, start);} ssize_t find(const StreamBuffer& s, ssize_t start=0) const {return find(s.buffer+s.offs, s.len, start);} diff --git a/src/StreamCore.cc b/src/StreamCore.cc index 29c0e6a..02cde04 100644 --- a/src/StreamCore.cc +++ b/src/StreamCore.cc @@ -728,7 +728,7 @@ printSeparator() return; } if (!separator) return; - long i = 0; + size_t i = 0; for (; i < separator.length(); i++) { switch (separator[i]) @@ -1049,7 +1049,7 @@ readCallback(StreamIoStatus status, if (end >= 0) { termlen = inTerminator.length(); - debug("StreamCore::readCallback(%s) inTerminator %s at position %ld\n", + debug("StreamCore::readCallback(%s) inTerminator %s at position %" P "d\n", name(), inTerminator.expand()(), end); } else { debug("StreamCore::readCallback(%s) inTerminator %s not found\n", @@ -1063,14 +1063,14 @@ readCallback(StreamIoStatus status, name()); end = inputBuffer.length(); } - if (maxInput && end < 0 && (long)maxInput <= inputBuffer.length()) + if (maxInput && end < 0 && maxInput <= inputBuffer.length()) { // no terminator but maxInput bytes read debug("StreamCore::readCallback(%s) maxInput size reached\n", name()); end = maxInput; } - if (maxInput && end > (long)maxInput) + if (maxInput && end > (ssize_t)maxInput) { // limit input length to maxInput (ignore terminator) end = maxInput; @@ -1110,7 +1110,7 @@ readCallback(StreamIoStatus status, } else { - error("%s: Timeout after reading %ld byte%s \"%s%s\"\n", + error("%s: Timeout after reading %" P "d byte%s \"%s%s\"\n", name(), end, end==1 ? "" : "s", end > 20 ? "..." : "", inputBuffer.expand(-20)()); } @@ -1366,7 +1366,7 @@ normal_format: { int i = 0; while (commandIndex[i] >= ' ') i++; - error("%s: Input \"%s%s\" mismatch after %ld byte%s: %c != %c\n", + error("%s: Input \"%s%s\" mismatch after %" P "d byte%s: %c != %c\n", name(), consumedInput > 10 ? "..." : "", inputLine.expand(consumedInput > 10 ? @@ -1393,18 +1393,18 @@ normal_format: { if (!(flags & AsyncMode) && onMismatch[0] != in_cmd) { - error("%s: %ld byte%s surplus input \"%s%s\"\n", + error("%s: %" P "d byte%s surplus input \"%s%s\"\n", name(), surplus, surplus==1 ? "" : "s", inputLine.expand(consumedInput, 20)(), surplus > 20 ? "..." : ""); if (consumedInput>20) - error("%s: after %ld byte%s \"...%s\"\n", + error("%s: after %" P "d byte%s \"...%s\"\n", name(), consumedInput, consumedInput==1 ? "" : "s", inputLine.expand(consumedInput-20, 20)()); else - error("%s: after %ld byte%s: \"%s\"\n", + error("%s: after %" P "d byte%s: \"%s\"\n", name(), consumedInput, consumedInput==1 ? "" : "s", inputLine.expand(0, consumedInput)()); @@ -1515,7 +1515,7 @@ scanValue(const StreamFormat& fmt, double& value) } else return -1; } - if (fmt.flags & fix_width_flag && (consumed != (fmt.width + fmt.prec + 1))) return -1; + if (fmt.flags & fix_width_flag && (consumed != (ssize_t)(fmt.width + fmt.prec + 1))) return -1; if ((size_t)consumed > inputLine.length()-consumedInput) return -1; debug("StreamCore::scanValue(%s) scanned %#g\n", name(), value); @@ -1536,7 +1536,7 @@ scanValue(const StreamFormat& fmt, char* value, size_t& size) if (!matchSeparator()) return -1; ssize_t consumed = StreamFormatConverter::find(fmt.conv)-> scanString(fmt, inputLine(consumedInput), value, size); - debug("StreamCore::scanValue(%s, format=%%%c, char*, size=%ld) input=\"%s\"\n", + debug("StreamCore::scanValue(%s, format=%%%c, char*, size=%" P "d) input=\"%s\"\n", name(), fmt.conv, size, inputLine.expand(consumedInput)()); if (consumed < 0) { @@ -1547,7 +1547,7 @@ scanValue(const StreamFormat& fmt, char* value, size_t& size) } else return -1; } - if (fmt.flags & fix_width_flag && (unsigned long)consumed != fmt.width) return -1; + if (fmt.flags & fix_width_flag && consumed != (ssize_t)fmt.width) return -1; if ((size_t)consumed > inputLine.length()-consumedInput) return -1; #ifndef NO_TEMPORARY debug("StreamCore::scanValue(%s) scanned \"%s\"\n", diff --git a/src/StreamEpics.cc b/src/StreamEpics.cc index 0124eaa..9ea4f3b 100644 --- a/src/StreamEpics.cc +++ b/src/StreamEpics.cc @@ -80,6 +80,8 @@ extern "C" epicsShareFunc int epicsShareAPI iocshCmd(const char *command); #include #endif +#define P PRINTF_SIZE_T_PREFIX + enum MoreFlags { // 0x00FFFFFF used by StreamCore InDestructor = 0x0100000, @@ -294,7 +296,7 @@ void streamEpicsPrintTimestamp(char* buffer, size_t size) c[4] = 0; } tlen = strlen(buffer); - sprintf(buffer+tlen, " %.*s", size-tlen-2, taskName(0)); + sprintf(buffer+tlen, " %.*s", (int)(size-tlen-2), taskName(0)); } #else // !EPICS_3_13 void streamEpicsPrintTimestamp(char* buffer, size_t size) @@ -1184,7 +1186,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) { consumed = scanValue(format, lval); if (consumed >= 0) ((epicsUInt32*)buffer)[nord] = lval; - debug("Stream::matchValue(%s): %s.%s[%li] = %lu\n", + debug("Stream::matchValue(%s): %s.%s[%" P "u] = %lu\n", name(), pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, nord, lval); @@ -1194,7 +1196,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) { consumed = scanValue(format, lval); if (consumed >= 0) ((epicsInt32*)buffer)[nord] = lval; - debug("Stream::matchValue(%s): %s.%s[%li] = %li\n", + debug("Stream::matchValue(%s): %s.%s[%" P "u] = %li\n", name(), pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, nord, lval); @@ -1205,7 +1207,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) consumed = scanValue(format, lval); if (consumed >= 0) ((epicsUInt16*)buffer)[nord] = (epicsUInt16)lval; - debug("Stream::matchValue(%s): %s.%s[%li] = %li\n", + debug("Stream::matchValue(%s): %s.%s[%" P "u] = %li\n", name(), pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, nord, lval); @@ -1221,7 +1223,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) if (consumed >= 0) memcpy(((epicsFloat64*)buffer)+nord, &f64, sizeof(f64)); - debug("Stream::matchValue(%s): %s.%s[%li] = %#g %#g\n", + debug("Stream::matchValue(%s): %s.%s[%" P "u] = %#g %#g\n", name(), pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, nord, dval, @@ -1247,7 +1249,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) stringsize = MAX_STRING_SIZE; consumed = scanValue(format, buffer+MAX_STRING_SIZE*nord, stringsize); - debug("Stream::matchValue(%s): %s.%s[%li] = \"%.*s\"\n", + debug("Stream::matchValue(%s): %s.%s[%" P "u] = \"%.*s\"\n", name(), pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, nord, (int)stringsize, buffer+MAX_STRING_SIZE*nord); @@ -1351,14 +1353,14 @@ matchValue(const StreamFormat& format, const void* fieldaddress) case DBF_ULONG: case DBF_LONG: case DBF_ENUM: - error("%s: %s(%s.%s, %s, %li, %lu) failed\n", + error("%s: %s(%s.%s, %s, %li, %" P "u) failed\n", name(), putfunc, pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, pamapdbfType[fmt.type].strvalue, lval, nord); return false; case DBF_DOUBLE: - error("%s: %s(%s.%s, %s, %#g, %lu) failed\n", + error("%s: %s(%s.%s, %s, %#g, %" P "u) failed\n", name(), putfunc, pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, pamapdbfType[fmt.type].strvalue, @@ -1366,7 +1368,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress) return false; case DBF_STRING: case DBF_CHAR: - error("%s: %s(%s.%s, %s, \"%.*s\", %lu) failed\n", + error("%s: %s(%s.%s, %s, \"%.*s\", %" P "u) failed\n", name(), putfunc, pdbaddr->precord->name, ((dbFldDes*)pdbaddr->pfldDes)->name, pamapdbfType[fmt.type].strvalue, diff --git a/src/StreamFormatConverter.cc b/src/StreamFormatConverter.cc index 06ea679..8fa88fa 100644 --- a/src/StreamFormatConverter.cc +++ b/src/StreamFormatConverter.cc @@ -255,7 +255,7 @@ static void copyFormatString(StreamBuffer& info, const char* source) // Standard Long Converter for 'diouxX' -static size_t prepareval(const StreamFormat& fmt, const char*& input, bool& neg) +static ssize_t prepareval(const StreamFormat& fmt, const char*& input, bool& neg) { size_t consumed = 0; neg = false; diff --git a/src/StreamProtocol.cc b/src/StreamProtocol.cc index 7be6b17..6c57e42 100644 --- a/src/StreamProtocol.cc +++ b/src/StreamProtocol.cc @@ -978,7 +978,7 @@ replaceVariable(StreamBuffer& buffer, const char* varname) } // quoted buffer.append('"'); - long i; + size_t i; bool escaped = false; for (i = 0; i < v->value.length(); i++) { diff --git a/src/TimestampConverter.cc b/src/TimestampConverter.cc index 1cd68f6..0619071 100644 --- a/src/TimestampConverter.cc +++ b/src/TimestampConverter.cc @@ -154,7 +154,8 @@ printDouble(const StreamFormat& format, StreamBuffer& output, double value) size_t length; time_t sec; double frac; - size_t i, n; + ssize_t i; + size_t n; char* c; char* p; diff --git a/src/devStream.h b/src/devStream.h index 14026c6..a15a6d1 100644 --- a/src/devStream.h +++ b/src/devStream.h @@ -54,6 +54,7 @@ extern "C" { #include "devSup.h" #include "dbAccess.h" #include +#include #if defined(_WIN32) && !defined(ssize_t) #define ssize_t ptrdiff_t diff --git a/src/devaaiStream.c b/src/devaaiStream.c index 6b5ea18..44359f9 100644 --- a/src/devaaiStream.c +++ b/src/devaaiStream.c @@ -122,7 +122,7 @@ static long readData(dbCommon *record, format_t *format) memset(aai->bptr, 0, aai->nelm); return ERROR; } - if ((size_t)lval < aai->nelm) + if (lval < (ssize_t)aai->nelm) { memset(((char*)aai->bptr)+lval , 0, aai->nelm-lval); lval++; diff --git a/src/devaaoStream.c b/src/devaaoStream.c index c20babe..c19747e 100644 --- a/src/devaaoStream.c +++ b/src/devaaoStream.c @@ -122,7 +122,7 @@ static long readData(dbCommon *record, format_t *format) memset(aao->bptr, 0, aao->nelm); return ERROR; } - if ((size_t)length < aao->nelm) + if (length < (ssize_t)aao->nelm) { memset(((char*)aao->bptr)+lval , 0, aao->nelm-lval); lval++; diff --git a/src/devwaveformStream.c b/src/devwaveformStream.c index 7a51b77..a64ee91 100644 --- a/src/devwaveformStream.c +++ b/src/devwaveformStream.c @@ -122,7 +122,7 @@ static long readData(dbCommon *record, format_t *format) memset(wf->bptr, 0, wf->nelm); return ERROR; } - if (length < wf->nelm) + if (length < (ssize_t)wf->nelm) { memset(((char*)wf->bptr)+lval , 0, wf->nelm-lval); lval++;