* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
/* DANGER!!!! These must be defined *BEFORE* replacements.h and the malloc() macro!!!! */
void *clear_malloc(size_t size)
{
void *t = malloc(size);
- if (t != NULL)
+ if (t)
memset(t, 0x00, size);
return t;
}
void *fill_malloc(size_t size)
{
void *t = malloc(size);
- if (t != NULL) {
+ if (t) {
/* We want to initialize memory to some known bad state.
* 0 and 0xff yields 0 and -1 as integers, which often
* have meaningful values. 0x5555... is not often a valid
#ifdef _WIN32
#include <io.h>
+#include <winsock2.h>
#endif
/* replacements for gettimeofday */
char *strndup(const char *s, size_t n)
{
size_t len = strnlen(s, n);
- char *new = (char *) malloc(len + 1);
+ char *new = malloc(len + 1);
- if (new == NULL)
+ if (!new)
return NULL;
new[len] = '\0';
#define SAFE_FD_ISSET(fd, set) (set != NULL && FD_ISSET(fd, set))
/* calculate how long we need to wait in milliseconds */
- if (tv == NULL)
+ if (!tv)
ms_total = INFINITE;
else {
ms_total = tv->tv_sec * 1000;
aexcept = sock_except;
tvslice.tv_sec = 0;
- tvslice.tv_usec = 100000;
+ tvslice.tv_usec = 1000;
retcode = select(sock_max_fd + 1, &aread, &awrite, &aexcept, &tvslice);
}
+
if (n_handles > 0) {
/* check handles */
DWORD wret;
wret = MsgWaitForMultipleObjects(n_handles,
handles,
FALSE,
- retcode > 0 ? 0 : 100,
+ retcode > 0 ? 0 : 1,
QS_ALLEVENTS);
if (wret == WAIT_TIMEOUT) {
for (i = 0; i < n_handles; i++) {
if (WAIT_OBJECT_0 == WaitForSingleObject(handles[i], 0)) {
if (SAFE_FD_ISSET(handle_slot_to_fd[i], rfds)) {
- DWORD dwBytes;
+ DWORD bytes;
intptr_t handle = (intptr_t) _get_osfhandle(
handle_slot_to_fd[i]);
if (PeekNamedPipe((HANDLE)handle, NULL, 0,
- NULL, &dwBytes, NULL)) {
+ NULL, &bytes, NULL)) {
/* check to see if gdb pipe has data available */
- if (dwBytes) {
+ if (bytes) {
FD_SET(handle_slot_to_fd[i], &aread);
retcode++;
}
return retcode;
}
#endif
+
+#if defined HAVE_LIBUSB1 && !defined HAVE_LIBUSB_ERROR_NAME
+#include <libusb.h>
+/* Verbatim from git://git.libusb.org/libusb.git tag 1.0.9
+ * The libusb_error enum is compatible down to v0.9.1
+ */
+const char *libusb_error_name(int error_code)
+{
+ enum libusb_error error = error_code;
+ switch (error) {
+ case LIBUSB_SUCCESS:
+ return "LIBUSB_SUCCESS";
+ case LIBUSB_ERROR_IO:
+ return "LIBUSB_ERROR_IO";
+ case LIBUSB_ERROR_INVALID_PARAM:
+ return "LIBUSB_ERROR_INVALID_PARAM";
+ case LIBUSB_ERROR_ACCESS:
+ return "LIBUSB_ERROR_ACCESS";
+ case LIBUSB_ERROR_NO_DEVICE:
+ return "LIBUSB_ERROR_NO_DEVICE";
+ case LIBUSB_ERROR_NOT_FOUND:
+ return "LIBUSB_ERROR_NOT_FOUND";
+ case LIBUSB_ERROR_BUSY:
+ return "LIBUSB_ERROR_BUSY";
+ case LIBUSB_ERROR_TIMEOUT:
+ return "LIBUSB_ERROR_TIMEOUT";
+ case LIBUSB_ERROR_OVERFLOW:
+ return "LIBUSB_ERROR_OVERFLOW";
+ case LIBUSB_ERROR_PIPE:
+ return "LIBUSB_ERROR_PIPE";
+ case LIBUSB_ERROR_INTERRUPTED:
+ return "LIBUSB_ERROR_INTERRUPTED";
+ case LIBUSB_ERROR_NO_MEM:
+ return "LIBUSB_ERROR_NO_MEM";
+ case LIBUSB_ERROR_NOT_SUPPORTED:
+ return "LIBUSB_ERROR_NOT_SUPPORTED";
+ case LIBUSB_ERROR_OTHER:
+ return "LIBUSB_ERROR_OTHER";
+ }
+ return "**UNKNOWN**";
+}
+#endif