X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Freplacements.c;h=b4bb94f06e43398e99771ea3ec05a4bf786d30e8;hp=77e4ee7a35a25e6acdcde7cba2b990f1fc0b150e;hb=e0fc7a54f287aad414b373410e09faa048f3a9dd;hpb=8b994145b849c40b0a195c3fb332b9770b2f9097 diff --git a/src/helper/replacements.c b/src/helper/replacements.c index 77e4ee7a35..b4bb94f06e 100644 --- a/src/helper/replacements.c +++ b/src/helper/replacements.c @@ -19,9 +19,7 @@ * 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 . * ***************************************************************************/ /* DANGER!!!! These must be defined *BEFORE* replacements.h and the malloc() macro!!!! */ @@ -36,22 +34,19 @@ void *clear_malloc(size_t size) { void *t = malloc(size); if (t != NULL) - { memset(t, 0x00, size); - } return t; } void *fill_malloc(size_t size) { void *t = malloc(size); - if (t != NULL) - { - /* 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 */ - /* integer and is quite easily spotted in the debugger */ - /* also it is almost certainly an invalid address */ + if (t != NULL) { + /* 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 + * integer and is quite easily spotted in the debugger + * also it is almost certainly an invalid address */ memset(t, 0x55, size); } return t; @@ -88,8 +83,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) __int64 t; static int tzflag; - if (tv) - { + if (tv) { GetSystemTimeAsFileTime(&ft); li.LowPart = ft.dwLowDateTime; li.HighPart = ft.dwHighDateTime; @@ -100,10 +94,8 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) tv->tv_usec = (long)(t % 1000000); } - if (tz) - { - if (!tzflag) - { + if (tz) { + if (!tzflag) { _tzset(); tzflag++; } @@ -113,29 +105,29 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) return 0; } -#endif /* _WIN32 */ +#endif /* _WIN32 */ -#endif /* HAVE_GETTIMEOFDAY */ +#endif /* HAVE_GETTIMEOFDAY */ #ifndef HAVE_STRNLEN size_t strnlen(const char *s, size_t maxlen) { - const char *end= (const char *)memchr(s, '\0', maxlen); + const char *end = (const char *)memchr(s, '\0', maxlen); return end ? (size_t) (end - s) : maxlen; } #endif #ifndef HAVE_STRNDUP -char* strndup(const char *s, size_t n) +char *strndup(const char *s, size_t n) { - size_t len = strnlen (s, n); - char *new = (char *) malloc (len + 1); + size_t len = strnlen(s, n); + char *new = malloc(len + 1); if (new == NULL) return NULL; new[len] = '\0'; - return (char *) memcpy (new, s, len); + return (char *) memcpy(new, s, len); } #endif @@ -152,12 +144,12 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time struct timeval tvslice; int retcode; -#define SAFE_FD_ISSET(fd, set) (set != NULL && FD_ISSET(fd, set)) +#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 == NULL) ms_total = INFINITE; - } else { + else { ms_total = tv->tv_sec * 1000; ms_total += tv->tv_usec / 1000; } @@ -169,22 +161,18 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time /* build an array of handles for non-sockets */ for (i = 0; i < max_fd; i++) { if (SAFE_FD_ISSET(i, rfds) || SAFE_FD_ISSET(i, wfds) || SAFE_FD_ISSET(i, efds)) { - long handle = _get_osfhandle(i); + intptr_t handle = (intptr_t) _get_osfhandle(i); handles[n_handles] = (HANDLE)handle; if (handles[n_handles] == INVALID_HANDLE_VALUE) { /* socket */ - if (SAFE_FD_ISSET(i, rfds)) { + if (SAFE_FD_ISSET(i, rfds)) FD_SET(i, &sock_read); - } - if (SAFE_FD_ISSET(i, wfds)) { + if (SAFE_FD_ISSET(i, wfds)) FD_SET(i, &sock_write); - } - if (SAFE_FD_ISSET(i, efds)) { + if (SAFE_FD_ISSET(i, efds)) FD_SET(i, &sock_except); - } - if (i > sock_max_fd) { + if (i > sock_max_fd) sock_max_fd = i; - } } else { handle_slot_to_fd[n_handles] = i; n_handles++; @@ -216,15 +204,20 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time 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, QS_ALLEVENTS); + wret = MsgWaitForMultipleObjects(n_handles, + handles, + FALSE, + retcode > 0 ? 0 : 1, + QS_ALLEVENTS); if (wret == WAIT_TIMEOUT) { /* set retcode to 0; this is the default. @@ -233,30 +226,26 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time * does nothing */ ; } else if (wret == WAIT_FAILED) { - if (retcode == 0) { + if (retcode == 0) retcode = -1; - } } else { - if (retcode < 0) { + if (retcode < 0) retcode = 0; - } 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; - long handle = _get_osfhandle(handle_slot_to_fd[i]); + intptr_t handle = (intptr_t) _get_osfhandle( + handle_slot_to_fd[i]); - if (PeekNamedPipe((HANDLE)handle, NULL, 0, NULL, &dwBytes, NULL)) - { + if (PeekNamedPipe((HANDLE)handle, NULL, 0, + NULL, &dwBytes, NULL)) { /* check to see if gdb pipe has data available */ - if (dwBytes) - { + if (dwBytes) { FD_SET(handle_slot_to_fd[i], &aread); retcode++; } - } - else - { + } else { FD_SET(handle_slot_to_fd[i], &aread); retcode++; } @@ -275,16 +264,55 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time } } while (retcode == 0 && (ms_total == INFINITE || GetTickCount() < limit)); - if (rfds) { + if (rfds) *rfds = aread; - } - if (wfds) { + if (wfds) *wfds = awrite; - } - if (efds) { + if (efds) *efds = aexcept; - } return retcode; } #endif + +#if defined HAVE_LIBUSB1 && !defined HAVE_LIBUSB_ERROR_NAME +#include +/* 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