summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Schauenberg <d@unwiredcouch.com>2011-02-02 00:51:22 +0100
committerDaniel Schauenberg <d@unwiredcouch.com>2011-02-02 00:51:22 +0100
commitcb05151b4dc324fd1b1cb5bc088a214a34f55a37 (patch)
tree36acb765be0867837531d261eed9f65539c2abf5
parent6d721316c72dfa18809e6c02e02403042773f023 (diff)
downloadrabbitmq-c-github-ask-cb05151b4dc324fd1b1cb5bc088a214a34f55a37.tar.gz
move strdup to separate file and add guards
-rw-r--r--librabbitmq/amqp_api.c12
-rw-r--r--librabbitmq/unix/socket.c10
-rw-r--r--librabbitmq/utils/strdup.h10
-rw-r--r--librabbitmq/windows/socket.c12
4 files changed, 24 insertions, 20 deletions
diff --git a/librabbitmq/amqp_api.c b/librabbitmq/amqp_api.c
index 37f6605..e35fa2d 100644
--- a/librabbitmq/amqp_api.c
+++ b/librabbitmq/amqp_api.c
@@ -58,6 +58,10 @@
#include "amqp_framing.h"
#include "amqp_private.h"
+#ifndef _GNU_SOURCE
+#include "utils/strdup.h"
+#endif
+
#include <assert.h>
static const char *client_error_strings[ERROR_MAX] = {
@@ -70,12 +74,6 @@ static const char *client_error_strings[ERROR_MAX] = {
"connection closed unexpectedly", /* ERROR_CONNECTION_CLOSED */
};
-/* strdup is not in ISO C90! */
-static inline char *strdup(const char *str)
-{
- return strcpy(malloc(strlen(str) + 1),str);
-}
-
char *amqp_error_string(int err)
{
const char *str;
@@ -92,7 +90,7 @@ char *amqp_error_string(int err)
case ERROR_CATEGORY_OS:
return amqp_os_error_string(err);
-
+
default:
str = "(undefined error category)";
}
diff --git a/librabbitmq/unix/socket.c b/librabbitmq/unix/socket.c
index 4f5368e..1edc52f 100644
--- a/librabbitmq/unix/socket.c
+++ b/librabbitmq/unix/socket.c
@@ -59,6 +59,10 @@
#include "amqp_private.h"
#include "socket.h"
+#ifndef _GNU_SOURCE
+#include "utils/strdup.h"
+#endif
+
int amqp_socket_socket(int domain, int type, int proto)
{
int flags;
@@ -80,12 +84,6 @@ int amqp_socket_socket(int domain, int type, int proto)
return s;
}
-/* strdup is not in ISO C90! */
-static inline char *strdup(const char *str)
-{
- return strcpy(malloc(strlen(str) + 1),str);
-}
-
char *amqp_os_error_string(int err)
{
return strdup(strerror(err));
diff --git a/librabbitmq/utils/strdup.h b/librabbitmq/utils/strdup.h
new file mode 100644
index 0000000..1571763
--- /dev/null
+++ b/librabbitmq/utils/strdup.h
@@ -0,0 +1,10 @@
+#ifndef LIBRABBITMQ_STRDUP_H_
+#define LIBRABBITMQ_STRDUP_H_
+/* strdup is not in ISO C90!
+ * we define it here for easy inclusion
+ */
+static inline char *strdup(const char *str)
+{
+ return strcpy(malloc(strlen(str) + 1),str);
+}
+#endif
diff --git a/librabbitmq/windows/socket.c b/librabbitmq/windows/socket.c
index bef7b95..57914b1 100644
--- a/librabbitmq/windows/socket.c
+++ b/librabbitmq/windows/socket.c
@@ -59,6 +59,10 @@
#include "amqp_private.h"
#include "socket.h"
+#ifndef _GNU_SOURCE
+#include "utils/strdup.h"
+#endif
+
static int called_wsastartup;
int amqp_socket_init(void)
@@ -75,19 +79,13 @@ int amqp_socket_init(void)
return 0;
}
-/* strdup is not in ISO C90! */
-static inline char *strdup(const char *str)
-{
- return strcpy(malloc(strlen(str) + 1),str);
-}
-
char *amqp_os_error_string(int err)
{
char *msg, *copy;
if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_ALLOCATE_BUFFER,
- NULL, err,
+ NULL, err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)&msg, 0, NULL))
return strdup("(error retrieving Windows error message)");