proc_compat.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. This file is part of GNUnet.
  3. Copyright (C) 2001, 2002, 2003, 2004, 2005 GNUnet e.V.
  4. GNUnet is free software: you can redistribute it and/or modify it
  5. under the terms of the GNU Affero General Public License as published
  6. by the Free Software Foundation, either version 3 of the License,
  7. or (at your option) any later version.
  8. GNUnet is distributed in the hope that it will be useful, but
  9. WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  11. Affero General Public License for more details.
  12. You should have received a copy of the GNU Affero General Public License
  13. along with this program. If not, see <http://www.gnu.org/licenses/>.
  14. SPDX-License-Identifier: AGPL3.0-or-later
  15. */
  16. #include "platform.h"
  17. /**
  18. * @author Martin Schanzenbach
  19. *
  20. * @file util/proc_compat.c
  21. * Definitions for macOS and Win32
  22. */
  23. /**
  24. * memrchr as defined in glibc
  25. *
  26. * @param s pointer to memory
  27. * @param c character to search for
  28. * @param n search character limit
  29. */
  30. void*
  31. GN_memrchr_ (const void *s,
  32. int c,
  33. size_t n)
  34. {
  35. const unsigned char *ucs = s;
  36. ssize_t i;
  37. for (i = n - 1; i >= 0; i--)
  38. if (c == (int) ucs[i])
  39. return (void *) &ucs[i];
  40. return NULL;
  41. }