openocd: fix SPDX tag format for files .c
[fw/openocd] / src / helper / replacements.c
index 39a736c7c4336e2d26c3684f3c81ad223a058999..b30dbd5d68830a151d8d7056c5a7ec4c18db1c37 100644 (file)
@@ -1,40 +1,20 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
 /***************************************************************************
  *   Copyright (C) 2006 by Dominic Rath                                    *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
- *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
+ *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   Copyright (C) 2008 by Spencer Oliver                                  *
  *   spen@spen-soft.co.uk                                                  *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   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.             *
  ***************************************************************************/
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
 /* DANGER!!!! These must be defined *BEFORE* replacements.h and the malloc() macro!!!! */
 
 #include <stdlib.h>
 #include <string.h>
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
-/* 
+/*
  * clear_malloc
  *
  * will alloc memory and clear it
 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)
-       {
-               /* 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) {
+               /* 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;
 }
 
-#include "replacements.h"
-
-#include <stdio.h>
+#define IN_REPLACEMENTS_C
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
 
 #ifdef _WIN32
 #include <io.h>
+#include <winsock2.h>
 #endif
 
 /* replacements for gettimeofday */
@@ -91,8 +73,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;
@@ -103,10 +84,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++;
                }
@@ -116,29 +95,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
-charstrndup(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)
+       if (!new)
                return NULL;
 
        new[len] = '\0';
-       return (char *) memcpy (new, s, len);
+       return (char *) memcpy(new, s, len);
 }
 #endif
 
@@ -155,12 +134,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 && FD_ISSET(fd, set))
 
        /* calculate how long we need to wait in milliseconds */
-       if (tv == NULL) {
+       if (!tv)
                ms_total = INFINITE;
-       else {
+       else {
                ms_total = tv->tv_sec * 1000;
                ms_total += tv->tv_usec / 1000;
        }
@@ -172,21 +151,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)) {
-                       handles[n_handles] = (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++;
@@ -205,11 +181,11 @@ int win_select(int max_fd, fd_set *rfds, fd_set *wfds, fd_set *efds, struct time
        FD_ZERO(&aread);
        FD_ZERO(&awrite);
        FD_ZERO(&aexcept);
-       
+
        limit = GetTickCount() + ms_total;
        do {
                retcode = 0;
-       
+
                if (sock_max_fd >= 0) {
                        /* overwrite the zero'd sets here; the select call
                         * will clear those that are not active */
@@ -218,15 +194,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);
+                       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.
@@ -235,29 +216,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 (WaitForSingleObject(handles[i], 0) == WAIT_OBJECT_0) {
                                                if (SAFE_FD_ISSET(handle_slot_to_fd[i], rfds)) {
-                                                       DWORD dwBytes;
-                                                       
-                                                       if (PeekNamedPipe((HANDLE)_get_osfhandle(handle_slot_to_fd[i]), NULL, 0, NULL, &dwBytes, NULL))
-                                                       {
+                                                       DWORD bytes;
+                                                       intptr_t handle = (intptr_t) _get_osfhandle(
+                                                                       handle_slot_to_fd[i]);
+
+                                                       if (PeekNamedPipe((HANDLE)handle, NULL, 0,
+                                                                   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++;
                                                                }
-                                                       }
-                                                       else
-                                                       {
+                                                       } else {
                                                                FD_SET(handle_slot_to_fd[i], &aread);
                                                                retcode++;
                                                        }
@@ -276,15 +254,12 @@ 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;
 }