* Florian octo Forster <octo at collectd.org>
**/
-#if HAVE_CONFIG_H
-#include "config.h"
+#ifdef WIN32
+#include "gnulib_config.h"
+#include <winsock2.h>
#endif
+#include "config.h"
+
#if !defined(__GNUC__) || !__GNUC__
#define __attribute__(x) /**/
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <sys/socket.h>
#include <sys/types.h>
-#include <sys/un.h>
#include <unistd.h>
+#ifndef WIN32
+#include <sys/socket.h>
+#include <sys/un.h>
+#endif
+
#include "collectd/client.h"
/* NI_MAXHOST has been obsoleted by RFC 3493 which is a reason for SunOS 5.11
#endif
#endif
+#ifdef WIN32
+#define AI_ADDRCONFIG 0
+#endif
+
/* Secure/static macros. They work like `strcpy' and `strcat', but assure null
* termination. They work for static buffers only, because they use `sizeof'.
* The `SSTRCATF' combines the functionality of `snprintf' and `strcat' which
* is very useful to add formatted stuff to the end of a buffer. */
#define SSTRCPY(d, s) \
do { \
- strncpy((d), (s), sizeof(d)); \
- (d)[sizeof(d) - 1] = 0; \
+ strncpy((d), (s), sizeof(d) - 1); \
+ (d)[sizeof(d) - 1] = '\0'; \
} while (0)
#define SSTRCAT(d, s) \
do { \
size_t _l = strlen(d); \
strncpy((d) + _l, (s), sizeof(d) - _l); \
- (d)[sizeof(d) - 1] = 0; \
+ (d)[sizeof(d) - 1] = '\0'; \
} while (0)
#define SSTRCATF(d, ...) \
do { \
char _b[sizeof(d)]; \
snprintf(_b, sizeof(_b), __VA_ARGS__); \
- _b[sizeof(_b) - 1] = 0; \
+ _b[sizeof(_b) - 1] = '\0'; \
SSTRCAT((d), _b); \
} while (0)
#if !HAVE_STRERROR_R
snprintf(buf, buflen, "Error #%i; strerror_r is not available.", errnum);
-/* #endif !HAVE_STRERROR_R */
+ /* #endif !HAVE_STRERROR_R */
#elif STRERROR_R_CHAR_P
{
if ((temp != NULL) && (temp != buf) && (temp[0] != 0))
strncpy(buf, temp, buflen);
else
- strncpy(buf, "strerror_r did not return "
- "an error message",
+ strncpy(buf,
+ "strerror_r did not return "
+ "an error message",
buflen);
}
}
-/* #endif STRERROR_R_CHAR_P */
+ /* #endif STRERROR_R_CHAR_P */
#else
if (strerror_r(errnum, buf, buflen) != 0) {
- snprintf(buf, buflen, "Error #%i; "
- "Additionally, strerror_r failed.",
+ snprintf(buf, buflen,
+ "Error #%i; "
+ "Additionally, strerror_r failed.",
errnum);
}
#endif /* STRERROR_R_CHAR_P */
- buf[buflen - 1] = 0;
+ buf[buflen - 1] = '\0';
return buf;
} /* char *sstrerror */
return -1;
sstrerror(err, c->errbuf, sizeof(c->errbuf));
- c->errbuf[sizeof(c->errbuf) - 1] = 0;
+ c->errbuf[sizeof(c->errbuf) - 1] = '\0';
return 0;
} /* }}} int lcc_set_errno */
while (str_len > 0) {
if (str[str_len - 1] >= 32)
break;
- str[str_len - 1] = 0;
+ str[str_len - 1] = '\0';
str_len--;
}
} /* }}} void lcc_chomp */
/* Now copy the message. */
strncpy(res.message, ptr, sizeof(res.message));
- res.message[sizeof(res.message) - 1] = 0;
+ res.message[sizeof(res.message) - 1] = '\0';
/* Error or no lines follow: We're done. */
if (res.status <= 0) {
static int lcc_open_unixsocket(lcc_connection_t *c, const char *path) /* {{{ */
{
+#ifdef WIN32
+ lcc_set_errno(c, ENOTSUP);
+ return -1;
+#else
struct sockaddr_un sa = {0};
int fd;
int status;
}
return 0;
+#endif /* WIN32 */
} /* }}} int lcc_open_unixsocket */
static int lcc_open_netsocket(lcc_connection_t *c, /* {{{ */
snprintf(command, sizeof(command), "GETVAL %s",
lcc_strescape(ident_esc, ident_str, sizeof(ident_esc)));
- command[sizeof(command) - 1] = 0;
+ command[sizeof(command) - 1] = '\0';
/* Send talk to the daemon.. */
status = lcc_sendreceive(c, command, &res);
ident->type_instance);
}
- string[string_size - 1] = 0;
+ string[string_size - 1] = '\0';
return 0;
} /* }}} int lcc_identifier_to_string */