summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-01-28 23:18:52 +0000
committerPete Batard <pbatard@gmail.com>2010-01-28 23:18:52 +0000
commit47c83183c080c866c54bcf886e535ff7db907bb8 (patch)
treebdc1368e54dd601ec679f392e843a6700c4684f9
parent37b685c3558513e32b30418c9fbc057d83a7ff53 (diff)
downloadlibusb-47c83183c080c866c54bcf886e535ff7db907bb8.tar.gz
r122: fixed poll conflict on cygwin (all compat functions renamed to _libusb_####)
- fixed sscanf_s undefined for non MS compilers - fixed cygiwn warnings in windows_usb.c
-rw-r--r--examples/xusb.c6
-rw-r--r--libusb/core.c17
-rw-r--r--libusb/io.c19
-rw-r--r--libusb/os/windows_compat.c10
-rw-r--r--libusb/os/windows_compat.h10
-rw-r--r--libusb/os/windows_usb.c7
6 files changed, 34 insertions, 35 deletions
diff --git a/examples/xusb.c b/examples/xusb.c
index c7ec0ba..add6ef0 100644
--- a/examples/xusb.c
+++ b/examples/xusb.c
@@ -40,11 +40,11 @@
#else
#include <unistd.h>
#define msleep(msecs) usleep(1000*msecs)
-#ifndef sscanf_s
-#define sscanf_s sscanf
-#endif
#endif
+#if !defined(_MSC_VER)
+#define sscanf_s sscanf
+#endif
inline static int perr(char const *format, ...)
{
diff --git a/libusb/core.c b/libusb/core.c
index 1eb4f80..013bc77 100644
--- a/libusb/core.c
+++ b/libusb/core.c
@@ -35,10 +35,11 @@
#else
#include <unistd.h>
#include <poll.h>
-#define write_for_poll write
-#define read_for_poll read
-#define close_for_poll close
-#define pipe_for_poll pipe
+#define _libusb_write write
+#define _libusb_read read
+#define _libusb_close close
+#define _libusb_pipe pipe
+#define _libusb_poll poll
#endif
#include "libusb.h"
@@ -919,7 +920,7 @@ API_EXPORTED int libusb_open(libusb_device *dev, libusb_device_handle **handle)
pthread_mutex_unlock(&ctx->pollfd_modify_lock);
/* write some data on control pipe to interrupt event handlers */
- r = write_for_poll(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
+ r = _libusb_write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
if (r <= 0) {
usbi_warn(ctx, "internal signalling write failed");
pthread_mutex_lock(&ctx->pollfd_modify_lock);
@@ -932,7 +933,7 @@ API_EXPORTED int libusb_open(libusb_device *dev, libusb_device_handle **handle)
libusb_lock_events(ctx);
/* read the dummy data */
- r = read_for_poll(ctx->ctrl_pipe[0], &dummy, sizeof(dummy));
+ r = _libusb_read(ctx->ctrl_pipe[0], &dummy, sizeof(dummy));
if (r <= 0)
usbi_warn(ctx, "internal signalling read failed");
@@ -1046,7 +1047,7 @@ API_EXPORTED void libusb_close(libusb_device_handle *dev_handle)
pthread_mutex_unlock(&ctx->pollfd_modify_lock);
/* write some data on control pipe to interrupt event handlers */
- r = write_for_poll(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
+ r = _libusb_write(ctx->ctrl_pipe[1], &dummy, sizeof(dummy));
if (r <= 0) {
usbi_warn(ctx, "internal signalling write failed, closing anyway");
do_close(ctx, dev_handle);
@@ -1060,7 +1061,7 @@ API_EXPORTED void libusb_close(libusb_device_handle *dev_handle)
libusb_lock_events(ctx);
/* read the dummy data */
- r = read_for_poll(ctx->ctrl_pipe[0], &dummy, sizeof(dummy));
+ r = _libusb_read(ctx->ctrl_pipe[0], &dummy, sizeof(dummy));
if (r <= 0)
usbi_warn(ctx, "internal signalling read failed, closing anyway");
diff --git a/libusb/io.c b/libusb/io.c
index c93b074..69c52c4 100644
--- a/libusb/io.c
+++ b/libusb/io.c
@@ -41,10 +41,11 @@
#else
#include <unistd.h>
#include <poll.h>
-#define write_for_poll write
-#define read_for_poll read
-#define close_for_poll close
-#define pipe_for_poll pipe
+#define _libusb_write write
+#define _libusb_read read
+#define _libusb_close close
+#define _libusb_pipe pipe
+#define _libusb_poll poll
#endif
#ifdef USBI_TIMERFD_AVAILABLE
@@ -1027,7 +1028,7 @@ int usbi_io_init(struct libusb_context *ctx)
list_init(&ctx->pollfds);
/* FIXME should use an eventfd on kernels that support it */
- r = pipe_for_poll(ctx->ctrl_pipe);
+ r = _libusb_pipe(ctx->ctrl_pipe);
if (r < 0)
return LIBUSB_ERROR_OTHER;
@@ -1057,12 +1058,12 @@ int usbi_io_init(struct libusb_context *ctx)
void usbi_io_exit(struct libusb_context *ctx)
{
usbi_remove_pollfd(ctx, ctx->ctrl_pipe[0]);
- close_for_poll(ctx->ctrl_pipe[0]);
- close_for_poll(ctx->ctrl_pipe[1]);
+ _libusb_close(ctx->ctrl_pipe[0]);
+ _libusb_close(ctx->ctrl_pipe[1]);
#ifdef USBI_TIMERFD_AVAILABLE
if (usbi_using_timerfd(ctx)) {
usbi_remove_pollfd(ctx, ctx->timerfd);
- close(ctx->timerfd);
+ _libusb_close(ctx->timerfd);
}
#endif
pthread_mutex_destroy(&ctx->flying_transfers_lock);
@@ -1882,7 +1883,7 @@ static int handle_events(struct libusb_context *ctx, struct timeval *tv)
timeout_ms++;
usbi_dbg("poll() %d fds with timeout in %dms", nfds, timeout_ms);
- r = poll(fds, nfds, timeout_ms);
+ r = _libusb_poll(fds, nfds, timeout_ms);
usbi_dbg("poll() returned %d", r);
if (r == 0) {
free(fds);
diff --git a/libusb/os/windows_compat.c b/libusb/os/windows_compat.c
index 180ff0c..58b91d3 100644
--- a/libusb/os/windows_compat.c
+++ b/libusb/os/windows_compat.c
@@ -268,7 +268,7 @@ __inline void _init_read_marker(int index)
/*
* Create an async I/O anonymous pipe (that can be used for sync as well)
*/
-int pipe_for_poll(int filedes[2])
+int _libusb_pipe(int filedes[2])
{
int i, j;
HANDLE handle[2];
@@ -526,7 +526,7 @@ struct winfd overlapped_to_winfd(OVERLAPPED* overlapped)
* Currently, this function only accepts one of POLLIN or POLLOUT per fd
* (but you can create multiple fds from the same handle for read and write)
*/
-int poll(struct pollfd *fds, unsigned int nfds, int timeout)
+int _libusb_poll(struct pollfd *fds, unsigned int nfds, int timeout)
{
unsigned i, triggered = 0;
int index, object_index;
@@ -635,7 +635,7 @@ int poll(struct pollfd *fds, unsigned int nfds, int timeout)
*
* Note that this function will also close the associated handle
*/
-int close_for_poll(int fd)
+int _libusb_close(int fd)
{
int index;
HANDLE handle;
@@ -667,7 +667,7 @@ int close_for_poll(int fd)
* - binary mode only
* - no append mode
*/
-ssize_t write_for_poll(int fd, const void *buf, size_t count)
+ssize_t _libusb_write(int fd, const void *buf, size_t count)
{
int index;
DWORD wr_count;
@@ -743,7 +743,7 @@ out:
* synchronous read for custom poll (works on Windows file handles that
* have been opened with the FILE_FLAG_OVERLAPPED flag)
*/
-ssize_t read_for_poll(int fd, void *buf, size_t count)
+ssize_t _libusb_read(int fd, void *buf, size_t count)
{
int index;
DWORD rd_count;
diff --git a/libusb/os/windows_compat.h b/libusb/os/windows_compat.h
index f40f5de..5192a3e 100644
--- a/libusb/os/windows_compat.h
+++ b/libusb/os/windows_compat.h
@@ -62,11 +62,11 @@ struct winfd {
};
extern const struct winfd INVALID_WINFD;
-int pipe_for_poll(int pipefd[2]);
-int poll(struct pollfd *fds, unsigned int nfds, int timeout);
-ssize_t write_for_poll(int fd, const void *buf, size_t count);
-ssize_t read_for_poll(int fd, void *buf, size_t count);
-int close_for_poll(int fd);
+int _libusb_pipe(int pipefd[2]);
+int _libusb_poll(struct pollfd *fds, unsigned int nfds, int timeout);
+ssize_t _libusb_write(int fd, const void *buf, size_t count);
+ssize_t _libusb_read(int fd, void *buf, size_t count);
+int _libusb_close(int fd);
void init_polling(void);
void exit_polling(void);
diff --git a/libusb/os/windows_usb.c b/libusb/os/windows_usb.c
index 42d88da..d33fbc9 100644
--- a/libusb/os/windows_usb.c
+++ b/libusb/os/windows_usb.c
@@ -160,6 +160,7 @@ static inline BOOLEAN guid_eq(const GUID *guid1, const GUID *guid2) {
return false;
}
+#if 0
static char* guid_to_string(const GUID guid)
{
static char guid_string[GUID_STRING_LENGTH];
@@ -170,6 +171,7 @@ static char guid_string[GUID_STRING_LENGTH];
guid.Data4[4], guid.Data4[5], guid.Data4[6], guid.Data4[7]);
return guid_string;
}
+#endif
/*
* Converts a windows error to human readable string
@@ -3236,7 +3238,6 @@ static int hid_submit_bulk_transfer(struct usbi_transfer *itransfer) {
bool direction_in, ret;
int current_interface;
DWORD size;
- int r = LIBUSB_ERROR_INVALID_PARAM;
CHECK_HID_AVAILABLE;
@@ -3284,9 +3285,7 @@ static int hid_abort_transfers(struct usbi_transfer *itransfer)
{
struct libusb_transfer *transfer = __USBI_TRANSFER_TO_LIBUSB_TRANSFER(itransfer);
struct windows_transfer_priv *transfer_priv = usbi_transfer_get_os_priv(itransfer);
- struct libusb_context *ctx = DEVICE_CTX(transfer->dev_handle->dev);
struct windows_device_handle_priv *handle_priv = (struct windows_device_handle_priv *)transfer->dev_handle->os_priv;
- struct windows_device_priv *priv = __device_priv(transfer->dev_handle->dev);
HANDLE hid_handle;
int current_interface;
@@ -3301,9 +3300,7 @@ static int hid_abort_transfers(struct usbi_transfer *itransfer)
static int hid_reset_device(struct libusb_device_handle *dev_handle)
{
- struct libusb_context *ctx = DEVICE_CTX(dev_handle->dev);
struct windows_device_handle_priv *handle_priv = (struct windows_device_handle_priv *)dev_handle->os_priv;
- struct windows_device_priv *priv = __device_priv(dev_handle->dev);
HANDLE hid_handle;
int current_interface;